Containerization ( Docker )

sihwan_e·2022년 7월 2일
0

Backend Roadmap

목록 보기
2/2

Containerization

개요

기본적으로 완전한 기능을 갖춘 이식성 있는 컴퓨팅 환경

소프트웨어 코드를 라이브러리, 프레임워크 및 기타 종속성과 같은 필수 요소와 함께 패키지에 포함하여 각자의 "컨테이너"로 분리한 것을 뜻한다. (출처 : Red Hat )

컨테이너는 어플리케이션을 둘러싼 한 공간으로, 주변과 분리해주는 역할을 한다.

컨테이너화 이전과의 비교

기존 : 하나의 플랫폼 또는 운영 체제에서 코드를 작성
-> 코드가 새로운 환경과 호환되지 않을 경우 어플리케이션의 이동이 어려워지며 그로 인한 버그 및 결함 발생. -> 해결에 시간소요, 생산성 저하
컨테이너화 : 실행에 필요한 요소가 이미 패키지 안에 모두 포함 되어 있기 때문에, 해당 어플리케이션을 어디서든 사용 가능함.

컨테이너는 어플리케이션 및 실행 환경보다 큰 것은 패키징하지 않는다.

장점

  1. 경량성
    컨테이너는 서버 위의 가상 머신보다 공간을 적게 차지, 시작에 걸리는 시간도 작다.
  2. 탄력성
    리소스를 별도로 할당 할 필요가 없기 때문에, 서버의 리소스를 더효율적으로 사용할 수 있다.
  3. 밀도
    밀도 : 물리적 서버 한 대에서 동시에 실행할 수 있는 개체수
    컨테이너화를 통해 서버의 리소스는 완전히 이용하지만 과다하게 이용하지 않는 밀집된 환경을 조성할 수 있다.
  4. 유지관리 효율
    운영 체제 커널이 하나밖에 없기 때문에 운영 체제 수준에서 업데이트 또는 패치 작업을 한 번만 수행하면 변경 사항이 모든 컨테이너에 적용된다.

언제 사용하는게 좋은가

빠르게 자주 변경하고 다시 배포해야 하는 거의 모든 어플리케이션이 컨테이너화에 적합하다. 마이크로 서비스 아키텍처를 이용하는 애플리케이션의 경우에도 좋다.

컨테이너 오케스트레이션

애플리케이션을 지원하기 위해 컨테이너를 배포하고 구성하는 것을 컨테이너 오케스트레이션이라고 하며, 컨테이너 오케스트레이션 도구를 통해 수행된다. 대표적으로 쿠버네티스가 있다.

profile
Sometimes you gotta run before you can walk.

0개의 댓글