메뉴

컨테이너란 무엇입니까?

항목
DevOps 솔루션

이 페이지 공유하기

컨테이너는 운영 체제 가상화의 한 형태입니다. 단일 컨테이너는 작은 마이크로서비스 또는 소프트웨어 프로세스에서 대규모 애플리케이션까지 모든 것을 실행하는 데 사용될 수 있습니다. 컨테이너 내부에는 필요한 모든 실행 파일, 바이너리 코드, 라이브러리 및 구성 파일이 들어 있습니다. 서버 또는 머신 가상화 접근 방식과 달리 컨테이너에는 운영 체제 이미지가 포함되어 있지 않습니다. 그렇기 때문에 더 가볍고 이동성이 우수하며 오버헤드가 현저히 낮습니다. 대규모 애플리케이션 구현에서는 여러 컨테이너를 하나 이상의 컨테이너 클러스터로 구현할 수 있습니다. 이러한 클러스터는 Kubernetes와 같은 컨테이너 오케스트레이터로 관리할 수 있습니다.

컨테이너의 이점

컨테이너는 개발자의 로컬 노트북부터 온프레미스 데이터 센터 및 클라우드에 이르는 여러 환경에서 애플리케이션을 구축, 테스트, 구현 및 재구현할 수 있는 효율적인 방법입니다. 컨테이너의 이점은 다음과 같습니다.

  • 더 적은 오버헤드
    컨테이너에는 운영 체제 이미지가 포함되지 않으므로 기존 환경 또는 하드웨어 가상 머신 환경보다 시스템 리소스가 적게 필요합니다.
  • 이동성 향상
    컨테이너에서 실행되는 애플리케이션은 여러 운영 체제 및 하드웨어 플랫폼에 쉽게 구현할 수 있습니다.
  • 보다 일관된 운영
    DevOps 팀에서 컨테이너에 애플리케이션을 구현하면 구현 위치와 관계없이 동일하게 실행됩니다.
  • 효율성 향상
    컨테이너를 사용하면 애플리케이션의 구현, 패치 적용 또는 확장이 더 빨라집니다.
  • 더 우수한 애플리케이션 개발
    컨테이너는 애자일 및 DevOps 작업을 지원하여 개발, 테스트 및 운영 주기를 단축합니다.

컨테이너 사용 사례

조직에서 컨테이너를 사용하는 일반적인 방법은 다음과 같습니다.

  • 기존 애플리케이션을 최신 클라우드 아키텍처로 "리프트 앤 시프트"
    일부 조직의 경우는 컨테이너를 사용하여 기존 애플리케이션을 더 현대적인 환경으로 마이그레이션합니다. 이 방식은 운영 체제 가상화의 몇 가지 기본적인 이점을 제공하지만, 모듈식 컨테이너 기반 애플리케이션 아키텍처의 모든 이점을 제공하는 것은 아닙니다.
  • 컨테이너에 맞게 기존 애플리케이션 리팩토링
    리팩토링은 리프트 앤 시프트 마이그레이션보다 훨씬 더 많은 시간과 노력이 필요하지만 컨테이너 환경의 이점을 최대한 활용할 수 있습니다.
  • 새로운 컨테이너 네이티브 애플리케이션 개발
    이 접근 방식은 리팩토링과 마찬가지로 컨테이너의 모든 이점을 활용할 수 있습니다.
  • 마이크로서비스 아키텍처에 대한 더 나은 지원 제공
    개별 컨테이너 구성 요소를 사용하면 분산된 애플리케이션과 마이크로서비스를 더욱 쉽게 격리, 구현 및 확장할 수 있습니다.
  • 지속적인 통합 및 구현(CI/CD)을 위한 DevOps 지원 제공
    컨테이너 기술은 동일한 컨테이너 이미지를 사용한 간소화된 구축, 테스트 및 구현을 지원합니다.
  • 반복 업무 및 작업을 보다 쉽게 구현
    컨테이너는 ETL 함수 또는 배치 작업과 같이 백그라운드에서 실행되는 하나 이상의 유사한 프로세스를 지원하도록 구축됩니다.

Docker 및 Kubernetes와 컨테이너의 관계

컨테이너 환경에서 일하는 사용자는 컨테이너를 구축 및 관리하는 데 사용되는 2가지 주요 툴과 플랫폼에 관해 들어봤을 것입니다. Docker와 Kubernetes입니다.

Docker는 컨테이너 내부에서 소프트웨어를 생성 및 구축하는 데 널리 사용되는 런타임 환경입니다. Docker는 Docker 이미지, 즉 COW(copy-on-write) 스냅샷을 사용하여 개발에서 테스트 및 운영까지 다양한 환경에 컨테이너식 애플리케이션 또는 소프트웨어를 구현합니다. Docker는 Linux, Microsoft Windows, 기타 온프레미스 또는 클라우드 기반 인프라를 비롯한 가장 일반적인 운영 환경 내의 개방형 표준 및 기능을 기반으로 구축되었습니다.

그러나 컨테이너식 애플리케이션은 복잡해질 수 있습니다. 운영 환경에는 수십만 개의 개별 컨테이너가 필요할 수 있습니다. 이 경우 Docker와 같은 컨테이너 런타임 환경에서는 다른 툴을 사용하여 가동 중인 모든 컨테이너를 조정 또는 관리하는 것이 유용합니다.

가장 널리 사용되는 툴 중 하나는 Docker를 비롯한 여러 컨테이너 런타임 환경을 인식하는 컨테이너 오케스트레이터인 Kubernetes입니다.

Kubernetes는 여러 컨테이너의 작업을 조율합니다. 필요한 컴퓨팅, 네트워크, 스토리지 리소스 양 등 컨테이너식 애플리케이션의 기본 인프라 리소스 사용과 같은 영역을 관리합니다. Kubernetes와 같은 오케스트레이션 툴을 사용하면 라이브 운영 환경에서 컨테이너 기반 워크로드를 더욱 쉽게 자동화하고 확장할 수 있습니다.

컨테이너 vs. 가상 머신(VM)

컨테이너 기술을 가상 머신(VM) 또는 서버 가상화 기술과 혼동하는 경우가 있습니다. 몇 가지 기본적인 유사점이 있긴 하지만 컨테이너는 VM과 매우 다릅니다.

가상 머신은 하이퍼바이저 환경에서 실행되며 각 가상 머신에는 관련 바이너리, 라이브러리 및 애플리케이션 파일과 함께 자체 게스트 운영 체제가 포함되어 있어야 합니다. 따라서 많은 양의 시스템 리소스 및 오버헤드가 소모되며, 특히 동일한 물리적 서버에서 여러 VM이 실행되고 있고 각각 고유한 게스트 OS가 있는 경우에는 더욱 그렇습니다.

반면, 각 컨테이너는 동일한 호스트 OS 또는 시스템 커널을 공유하므로 크기가 훨씬 더 가볍고 대개 메가바이트 정도에 불과합니다. 다시 말해 컨테이너를 시작하는 데 몇 초 밖에 걸리지 않습니다. 반대로 일반적인 VM의 크기는 기가바이트 단위이며 시작하는 데 몇 분이 필요합니다.

NetApp 및 컨테이너

NetApp은 컨테이너 기술을 믿고 있으며, 모든 위치에서 모든 애플리케이션에 대해 영구 스토리지를 제공 및 관리하는 검증된 툴과 혁신을 위해 노력하고 있습니다. 이 작업의 한 가지 주요 예는 Trident의 개발입니다. Trident를 사용하면 컨테이너식 애플리케이션에서 온디맨드 영구 스토리지를 훨씬 더 쉽게 사용할 수 있습니다.

NetApp은 소프트웨어 개발의 속도 및 민첩성을 더욱 높여 DevOps를 가속할 방법을 적극적으로 찾고 있습니다. 스토리지와 같은 인프라 리소스는 쉽게 사용할 수 있어야 합니다. NetApp은 다양한 플랫폼에서 애플리케이션을 손쉽게 확장하고 구현할 수 있도록 컨테이너 관리 솔루션 및 기타 다양한 기능을 제공하는 데 주력합니다.

관련 솔루션 및 제품

DevOps 솔루션

세계적인 데이터 관리 및 스토리지 기업의 성공 사례

보안 커뮤니케이션을 고객 인사이트로 전환

API 플랫폼 공급자인 Bandwidth는 매일 수백만 명의 사람들에게 영향을 미치는 음성, 메시징 및 119 서비스를 제공합니다. 대역폭 개발자들은 회사의 플랫폼을 발전시키고 새로운 서비스를 시장에 더 빨리 출시하기 위해 끊임없이 혁신을 거듭하고 있습니다.

NetApp 플래시 및 MetroCluster IP를 사용하여 파일을 어디서나 액세스할 수 있도록 보장하는 스위스 은행

PostFinance는 스위스 시장에 맞게 특별히 개발 또는 조정된 미래 지향적인 툴과 기술을 사용합니다. NetApp® 시스템은 안전한 은행 거래를 위한 파일 데이터를 제공하고 영구 스토리지로 금융 상품 및 서비스 개발을 가속화합니다.  

모니터를 보며 분석하는 사람
Drift chat loading