[Sprint3] 가상화 한방정리
IT의 직군들 + IaaS, PaaS, SaaS, KaaS
가상화 기술 비교
컨테이너 기술의 장점 - 앱에 대한 일관성 보장
VM의 단점
- 개발자의 환경과, 개발환경이 다르면 앱의 동작이 달라질 수 있음
- GuestOS 패치시 OpenJDK도 버전을 올려야할 수 있음 (대부분의 설치 패키지들은 OS의 기본 라이브러리들에 dependency를 두기 때문)
- 개발자는 OpenJDK의 버전까지 고려해서 앱을 만드는 경우가 없음 -> 몇 가지 기능 테스트 후 버전을 올림(찜찜함)
=> 결국 담당자들 간의 긴밀한 협의가 필요하게 됨
Container 환경
- 개발자는 컨테이너 환경을 세팅해야하지만, 개발 환경과 같은 환경에서 개발할 수 있음
- 인프라 담당자의 관리 영역이 줄어듦( VM 구성 불필요), 앱에 관련 없이 인프라 작업 가능해짐
- Devops 엔지니어는 CICD환경 구성이 필요하지만, HostOS를 패치할 때마다 openJDK를 패치하지 않아도 됨
=> 담당자간 협의 사라짐
서버가 많아졌을 때
VM 환경
- 별도로 VM 작업을 해주어야 함
Container 환경
- 서버가 늘어남에 따라 별도의 VM 작업을 해주지 않아도 됨.
- Devops 엔지니어는 서버의 수에 영향을 받지 않고 앱을 배포할 수 있음
- 애초에 컨테이너는 한 OS에서 독립적이기 때문에 서버를 많이 만들 필요도 없음
클라우드 환경에 올리는 경우
VM 환경
- OS를 다르게 써야할 수 있음
Container 환경
- OS/Runtime이 달라져도 컨테이너는 표준 규격으로 만들어지기 때문에 신경쓸 필요 없음
쿠버네티스의 단점
1. 구축 난이도가 어려움
앱을 서비스 하는 환경에서의 비교하면 실제 쿠버네티스 환경은 VM 환경과 Container 환경이 공존함
=> VM 환경보다 구축 어려움
2. 가격 절감 ?
구성하기 나름! VM을 써도 자원을 효율적으로 사용하게 할 수 있음
오픈 소스? 오픈소스 관리 이력이 필요해지면 거기서 거기임
쿠버네티스의 장점
1. 마이크로 서비스 아키텍처에 유리함
2. 쿠버네티스 생태계의 빠른 표준화
3. 선진 IT 기업의 이미지