컨테이너화란 무엇인가요?
- 컨테이너화는 애플리케이션의 코드를 모든 인프라에서 실행하는 데 필요한 모든 파일 및 라이브러리와 함께 번들로 제공하는 소프트웨어 배포 프로세스입니다. 기존에는 컴퓨터에서 애플리케이션을 실행하려면 컴퓨터의 운영 체제와 일치하는 버전을 설치해야 했습니다. 예를 들어, Windows 시스템에 소프트웨어 패키지의 Windows 버전을 설치해야 했습니다. 하지만 컨테이너화를 사용하면 모든 유형의 디바이스 및 운영 체제에서 실행되는 단일 소프트웨어 패키지 또는 컨테이너를 만들 수 있습니다.
이점
이동성
- 컨테이너화를 사용하여 프로그램 코드를 다시 작성하지 않고도 여러 환경에 애플리케이션을 배포한다.
확장성
- 효율적으로 실행되는 경량 소프트웨어 구성 요소이다. 예를 들어, 가상 머신은 운영 체제를 부팅할 필요가 없으므로 컨테이너식 애플리케이션을 더 빠르게 시작할 수 있다. 따라서 소프트웨어 개발자는 단일 시스템에서 서로 다른 애플리케이션에 대해 여러 컨테이너를 쉽게 추가할 수 있다. 컨테이너 클러스터는 동일한 공유 운영 체제의 컴퓨팅 리소스를 사용하지만 한 컨테이너는 다른 컨테이너의 작업을 방해하지 않는다.
내결함성
- 여러 컨테이너를 사용하여 클라우드에서 마이크로서비스를 실행하는데 컨테이너식 마이크로서비스는 격리된 사용자 공간에서 작동하기 때문에 결함이 있는 단일 컨테이너가 다른 컨테이너에 영향을 주지 않는다. -> 복원력, 가용성 향상
민첩성
- 컨테이너식 애플리케이션은 격리된 컴퓨팅 환경에서 실행되기 때문에 소프트웨어 개발자는 운영체제, 하드웨어 또는 기타 애플리케이션 서비스를 방해하지 않고 애플리케이션 코드를 변경하고 문제를 해결할 수 있다. 소프트웨어 릴리스 주기를 단축하고 컨테이너 모델을 사용하여 신속하게 업데이트 작업 수행할 수 있다.
컨테이너화 작동
- 컨테이너화에는 실행 중인 시스템에 관계없이 일관되게 수행되는 자급자족 소프트웨어 패키지를 빌드하는 작업이 포함된다. 소프트웨어 개발자는 컨테이너 이미지, 즉 컨테이너식 애플리케이션을 실행하는 데 필요한 정보가 들어 있는 파일을 만들고 배포한다. 개발자는 컨테이너화 도구를 사용하여 OCI(Open Container Initiative) 이미지 사양을 기반으로 컨테이너 이미지를 빌드한다. OCI는 컨테이너 이미지 생성을 위한 표준화된 형식을 제공하는 오픈 소스 그룹이다. 컨테이너 이미지는 읽기 전용이며 컴퓨터 시스템에서 변경할 수 없다.
인프라
- 인프라는 컨테이너 모델의 하드웨어 계층이다. 컨테이너식 애플리케이션을 실행하는 물리적 컴퓨터 또는 베어 메탈 서버를 가리킨다.
운영체제
- 컨테이너화 아키텍처의 두 번째 계층은 운영 체제이다. Linux는 온프레미스 컴퓨터를 사용한 컨테이너화에 널리 사용되는 운영 체제이다. 클라우드 컴퓨팅에서 개발자는 AWS EC2와 같은 클라우드 서비스를 사용하여 컨테이너식 애플리케이션을 실행한다.
컨테이너 엔진
- 컨테이너 엔진 또는 컨테이너 런타임은 컨테이너 이미지를 기반으로 컨테이너를 생성하는 소프트웨어 프로그램이다. 컨테이너와 운영 체제 간의 중개 에이전트 역할을 하며 애플리케이션에 필요한 리소스를 제공하고 관리한다. 예를 들어, 컨테이너 엔진은 기본 인프라 및 상호 독립성을 유지하여 동일한 운영 체제에서 여러 컨테이너를 관리할 수 있다.
애플리케이션 및 종속 항목
- 컨테이너화 아키텍처의 최상위 계층은 애플리케이션 코드와 라이브러리 종속 항목 및 관련 구성 파일과 같이 실행해야 하는 기타 파일이다. 이 계층에는 호스트 운영 체제 위에 설치되는 라이트 게스트 운영 체제도 포함될 수 있다.
