mondegreen

컨테이너 기술이란 본문

Infra/CI&CD

컨테이너 기술이란

앙갱 2024. 5. 1. 16:05
반응형

[컨테이너의 정의]

컨테이너는 애플리케이션을 언제든 실행 가능하도록 필요한 모든 요소(소스 코드, 구성 요소, 종속성 등)를 하나의 런타임 환경으로 패키징한 논리적 공간을 말한다.

컨테이너란, 애플리케이션과 종속 항목을 하나로 묶어 실행하게 해주는 시스템을 가상화한 것
=> 즉, 경량의 격리된(독립된, 방화벽이 있는) 프로세스를 말한다. 

- microVM 이라고 부르기도 한다.
- 운영체제 수준의 가상화를 제공한다. 이 때 컨테이너의 가상화된 운영체제는 커널 포함하고 있지는 않고
  애플리케이션이 동작하는 실제 운영체제의 커널을 공유해서 사용한다.(도커는 운영체제 위에 올라가는 플랫폼)
- 독립성을 갖기 때문에 다른 컨테이너에 영향을 주지 않는다.(Stateless 환경 제공 -> 휘발성)
- Dockerfile(컨테이너의 인프라를 만드는 것)을 작성해서 build하면 이미지가 되고, 이것을 실행해서 그 안의 애플리케이션이 동작하도록 패키징한 논리적 공간을 컨테이너라고 한다.

컨테이너 기술은 개인 PC 뿐만 아니라 기업내 온프레미스 서버, AWS와 같은 Public Cloud에서도 빠르고 효율적으로 배포가 가능하며 확장성이 뛰어나다. 컨테이너를 활용함으로서 서버 구성, OS 설치, 네트워크, 개발 도구 구성 등과 같은 작업에 시간을 소요하지 않고 개발 자체에 집중할 수 있게 된다.

참고. 컨테이너 기술은 여러가지가 있지만 업계 표준으로 사용하는 것은 Docker이고 오케스트레이션의 업계 표준은 쿠버네티스이다.

[컨테이너의 특징]

  1. 컨테이너는 우리가 개발한 (Dockerfile을 통한) 최소한의 이미지로 실행되므로 "경량"이다.
    참고. 컨테이너 이미지 생성 시 가장 중요한 점 중 하나는 이미지 경량화이다.
  2. 일반 서버 환경에서의 애플리케이션 실행과 달리 언제든 프로세스 수준의 속도로 빠르게 실행 가능하며 한번에 여러개의 컨테이너를 동시에 실행 가능하다. 이는 Docker Compose를 통해 가능하다.
  3. 개인 환경이든 클라우드 환경이든 환경이나 OS에 제한되지 않고 동작 가능한 이식성이 있다.
  4. 컨테이너 자체 애플리케이션 환경에 대한 관리만 요구되기 때문에 지속적 서버 관리 비용 절감이 가능하다.
  5. 개발팀과 운영팀의 업무 분리로 각자의 업무와 세분화된 관리에 집중 가능하다. => 데브옵스 workflow 효율적 구성 가능

[컨테이너의 타입]

Docker를 활용하는 경우는 보통 애플리케이션 컨테이너이다.
두 컨테이너 타입을 어떻게 구분하는가? 바로 그 컨테이너의 주인을 확인함으로써 가능하다. HostOS의 PID 1번은 SystemD Process라고 나온다. 그럼 가상화된 시스템 컨테이너의 PID 1번은 그 안에 속한 OS 주체이다. 애플리케이션 컨테이너에서는 OS가 아닌 다른 애플리케이션이 PID 1번으로 조회가 된다. 이렇게 두 타입의 컨테이너를 구분할 수 있다.

[Docker 란]

3-tier는 'Web(front)-WAS(back)-DB'를 가리키고 이들을 각각의 애플리케이션 계층이라고 볼 수 있다. 이 각 계층을 여러 컨테이너로 각각 분리하고 API를 활용해서 연결하고 실행한다 => 서비스 메시를 구성한다고 볼 수 있고 우리는 이걸 MSA라고 부른다. 아래 이미지의 절처와 같이 도커를 활용한 작업이 가능하다.

반응형