Docker 공부하기 - Tirrilee/TechTalk GitHub Wiki
애플리케이션과 애플리케이션을 구동하는 환경을 격리하는 공간
-
가상머신 은 하이퍼바이저로 하드웨어를 가상화하고 그 위에 Guest OS가 설치된 가상머신을 구동
-
Container 운영체제 레벨에서 자원을 격리하여 컨테이너에 할당하기 때문에 따로 OS가 필요하지 않음
-
기업환경에서는 1개의 가상머신에 1개의 서비스를 구동하는 것이 권장되지만, 가상머신의 모든 자원을 사용하는 것이 아니기 때문에 성능적 오버헤드가 있음.
-
컨테이너는 OS kernal을 공유하기 때문에 효율적으로 사용
사용자의 서비스 요청량에 따라 새로이 추가할때
가상머신의 크기는 GB이지만 컨테이너는 MB에 배포 시간이 짧게 걸림
-
가상화 서버의 경우 가상머신의 개수만큼 Guest OS License 비용 발생
-
컨테이너의 경우 Host OS 1대만 발생
-
가상머신은 안전하게 운영 가능
-
컨테이너는 OS 커널을 공유하기 때문에 한개의 컨테이너가 무리하게 자원을 사용할 때 컨테이너에 장애 발생 (> 이를 해결하는 방법이 Kubernetes)
-
개인 환경 개발 > 통합 환경 코드 통합 > 테스트 환경 > 실제 운영으로 개발을 진행하다보면 서버의 설정 차이로 인해 다양한 장애가 발생한다. -
하지만 컨테이너를 사용하면 그대로 환경을 담아서 이전하면 가능
-
가상 머신은 작은 부분을 수정하면 애플리케이션 전체에 문제가 발생할 수도 있음
-
하지만 컨테이너별로 나누면 서비스 단위로 신속하게 배포 가능
+) 마이크로 서비스 : 애플리케이션을 기능별로 나누어 변경과 조합을 진행
점진적 업데이트를 제공하기 때문에 서비스를 중단하지 않고도 서버 업데이트 가능
자가 회복 능력을 가지고 있어 컨테이너에 갑자기 장애가 발생하더라도 곧바로 복제 컨테이너를 생성해서 서비스 유지 가능
A사 클라우드를 사용하다가 B사로 환경을 이전할 때 호환문제가 발생되는 것을 Vender lock이라고 한다.
Kubernetes는 Docker 기반이기 때문에 특정 업체에 종속되지 않고 클라우드를 이전할 수 있다.
FT는 무중단 서비스로 작은 장애에도 멈추지 않고 서비스가 지속되는 것을 의미
Kubernetes는 특정 컨테이너가 죽었을 때 즉각 복제 컨테이너를 생성해서 서비스 유지
하지만 컨테이너가 죽은 몇 초동안은 서비스 장애가 발생할 수 있음
따라서 Kubernetes은 동일한 서비스를 제공하는 컨테이너를 이중, 삼중으로 만들어 HA(High Availability)를 유지 가능
Linux와 CentOS의 다른 부분만 따로 패키징 하기 때문에 훨씬 가벼움