오늘은 컨테이너와 가상화, 가상머신 등에 대해 간단하게 알아볼까 한다.
컨테이너는 도커, 쿠버네티스를 이용해 주로 사용해봤는데..편하긴 한데 나도 아직까지 익숙하지 않다ㅠㅠ
1. 가상화와 가상머신
2. 컨테이너
1. 가상화와 가상머신
가상화란 애플리케이션의 서비스를 저렴한 비용으로 빠르고 안정적이게 제공하기 위한 인프라스트럭쳐이다.
물리적인 컴퓨팅 자원(CPU, Disk, Network 등)을 가상화하여 여러 개의 실행환경이 공유하고, 자원을 효율적으로 사용할 수 있게 해주는 것이다.
일반적이고 쉽게 이해할 수 있는 가상화 기술로는 가상머신이 있다.
가상머신은 호스트 운영체제 위에 가상의 하드웨어를 서비스하는 하이퍼바이저 같은 가상머신을 관리하는 별도의 소프트웨어가 돌아가고, 해당 소프트웨어가 제공하는 가상의 하드웨어에 게스트 운영체제를 설치해서 사용하는 방식이다.
우리는 VMWare 등을 주로 사용하였다.
하지만 가상머신에도 단점이 있는데..
1. 완전한 운영체제가 설치되기 때문에 대량의 메모리가 필요하다.
2. CPU 성능 확보에 문제가 있다.
3. 시스템 운영에 대한 통합적인 지식이 필요하다.
위와 같은 단점들이 존재하며,,,이러한 단점을 극복하기 위해 만들어진 것이 컨테이너이다.
2. 컨테이너란?
컨테이너는 호스트 운영체제의 커널을 공유하면서 격리된 컴퓨팅 자원을 제공하는 가상화 기술이다.
컨테이너는 기본 os들을 패키징한 뒤 그 위에 애플리케이션만 올라가는 형태를 띄고 있으며, 호스트 운영체제만을 필요로 하고, 커널을 공유하여 동작한다.
이와 같은 컨테이너 기술의 장점은 다음과 같다.
1. 부팅이 빠르다.
게스트 운영체제라는 개념이 없고, 컨테이너 플랫폼 위에 프로세스를 띄우는 정도로만 수행하면 되기 때문이다.
2. 메모리 사용량이 작다
가상머신이 게스트 운영체제가 별도로 실행되어야 하는 것에 수백MB를 소모하는 것에 반해, 컨테이너는 게스트 운영체제를 띄우지 않기 때문에 애플리케이션에 필요한 메모리 등만을 사용한다는 것이 큰 장점이다.
주절주절 말이 길었지만....제일 중요한 것은
1. 경량화 - 앱 구동을 위해 게스트 OS가 포함되지 않음.
2. 효율성 - 호스트 OS 커널을 공유하므로, 자원을 미리 할당하지 않고 애플리케이션 동작에 필요한 컴퓨팅 자원만 필요로 함.
3. 이식성 - 컨테이너가 작동하는 환경이라면 어디든지 작동시킬 수 있음.
4. 안정성 - 호스트 OS 커널을 공유하는 구조로 장애 발생 시, 다른 컨테이너들이 영향을 받을 수 있음.
요정도라고 보면 될 것 같다.
암튼 컨테이너라는 게... 써보면 진짜 편하다..편한데....막 잘 쓰지를 못하겠다..
아직 공부가 많이 필요할 듯 ㅠㅠ