컨테이너 기술의 진화

Docker와 마이크로서비스는 새로운 차원의 민첩성과 경제성을 데이터센터에 전해줍니다.

대형 기업들은 Docker와 같이 급부상하는 컨테이너 기술로 또 다른 기회를 모색하고 있습니다. 주니퍼 네트웍스는 이런 추세를 클라우드 서비스를 제공하는 대형 기업들의 효율성, 생산성 및 민첩성을 극적으로 향상시키는 데이터센터 혁신에 있어서 하나의 이정표로 보고 있습니다.

Kubernetes와 같은 관련 기술들의 발전 속도가 빨라지면서, 2016년에는 컨테이너형 애플리케이션과 마이크로서비스 아키텍처의 조합이 이러한 기업들에게 엄청난 기회를 제공하고 있습니다.

컨테이너와 마이크로서비스

컨테이너형 애플리케이션의 기본 목적은 작업을 보다 쉽게 수행하도록 지원하는 동시에 커뮤니케이션 부담을 해소함으로써 소프트웨어 팀의 성과를 향상시키는 것입니다. 대형 기업에서 ERP 또는 CRM 소프트웨어 제품군 등의 애플리케이션은 주로 간단한 프로젝트로 시작되지만, 시간이 지남에 따라 개발 팀의 진행 속도를 떨어뜨리는 모놀리식(monolithic) 코드로 인해 빠르게 복잡해지고 비효율적으로 바뀌게 됩니다.

이런 비효율성을 극복하기 위해 새로운 접근 방식에서는 마이크로서비스라고 하는 더욱 작은 비트 크기의 컴포넌트로 애플리케이션을 분할합니다. 마이크로서비스 아키텍처의 도입은 애플리케이션 컴포넌트마다 소규모 코드 기반의 장점을 접목시키는 방식으로 개발 팀에게 민첩성과 운영 효율성을 제공합니다.

마이크로서비스 아키텍처의 도입은 애플리케이션 컴포넌트마다 소규모 코드 기반의 장점을 접목시키는 방식으로 개발 팀에게 민첩성과 운영 효율성을 제공합니다.

소프트웨어는 다양한 개발 단계를 거치면서 개발자의 PC에서 실험 또는 테스트 환경으로, 물리적 환경에서 가상 환경으로, 그리고 최종적으로 프로덕션 환경으로 이동될 수 있습니다. 이런 각각의 환경에서 애플리케이션은 일관적인 성능을 보여야 합니다. 컨테이너는 서로 다른 컴퓨팅 환경에서 소프트웨어의 작동 방식과 관련된 문제를 해결합니다. 소프트웨어 개발자는 컨테이너를 활용하여 애플리케이션 컴포넌트를 가벼운 하나의 패키지에 캡슐화할 수 있습니다. 본질적으로 Linux 기반인 컨테이너는 하나의 컴퓨팅 환경부터 다른 가상 또는 물리적 환경에서 모두 일관된 성능을 보장합니다.

DevOps 접근 방식의 일부분

마이크로서비스는 IT 부서가 DevOps 문화로 변화해가는 것과 일맥상통하며, 이러한 변화를 통해 개발 및 운영 팀들은 전체 수명 주기 동안 긴밀한 협력을 통해 애플리케이션을 지원하게 됩니다. 컨테이너 또한 개발자와 시스템 관리자에게 이상적인 DevOps 도구입니다. 컨테이너는 개발자가 자신의 핵심 역량에 집중하도록 도와주는 동시에 운영 담당자들에게 유연성, 줄어든 데이터센터 설치 공간 및 낮아진 오버헤드 등의 이점을 제공합니다.

컨테이너는 각각이 단일 프로세스에 지정될 때 최대 효과를 발휘합니다. 이런 이유로, 대규모 애플리케이션 또는 소프트웨어 프로젝트를 위한 마이크로서비스 아키텍처의 최초 설정은 리소스 집약적 단계일 수 있지만, 결과적으로 얻게 되는 민첩성 혜택의 관점에서 노력할 만한 가치가 있습니다. 이런 민첩성은 아주 짧은 시간(밀리초부터 몇 초 단위)에 컨테이너를 배포할 수 있는 속도로 구현됩니다. 컨테이너의 애플리케이션 워크로드는 호스트 서버의 운영 체제 커널을 사용하기 때문에 시작 프로세스의 일부로 OS를 검색할 필요가 없습니다.

컨테이너는 개발자가 자신의 핵심 역량에 집중하도록 도와주는 동시에 운영 담당자들에게 유연성, 줄어든 데이터센터 설치 공간 및 낮아진 오버헤드 등의 이점을 제공합니다.

컨테이너형 애플리케이션의 다른 본질적 이점은 아주 적은 메모리 공간만 필요하기 때문에 데이터센터의 공간 및 전력 관점과 조직적 측면에서 얻게 되는 효율성입니다. 호스트 CPU 오버헤드를 증가시키는 시스템 이미지와 전체 OS가 필요한 VM(가상 머신)과 달리 컨테이너는 경량입니다. 컨테이너는 호스트 커널 OS를 공유하고 잠재적으로 VM보다 훨씬 효율적으로 CPU 및 메모리를 이용하기 때문에 컴퓨팅 비용뿐만 아니라 데이터센터의 전력 및 공간 요구 사항을 낮춰줍니다.

클러스터 관리

컨테이너를 실행할 수 있는 물리적 또는 가상 머신의 그룹을 클러스터라고 하며 클러스터는 일정 형태의 관리가 필요합니다. 컨테이너 기술의 진화에 따른 혜택 중 일부로서 기업들은 Docker와 함께 작동하며 Google에서 개발한 Kubernetes, OpenShift 등의 클러스터 관리 도구를 활용할 수 있습니다. 컨테이너의 실행 엔진 역할을 담당하는 Docker도 파일 시스템 관리 기능을 제공합니다.

Kubernetes와 같은 클러스터 관리 도구들은 애플리케이션 컴포넌트 수준에서 추상화를 제공합니다. pod라고 하는 이 추상화는 하나 이상의 컨테이너를 묶은 그룹, 공유 스토리지, 컨테이너 실행 방법을 제공하는 옵션으로 구성됩니다. 클러스터 내의 시스템에서 pod를 스케줄링하면 Docker에서 컨테이너를 실행하게 됩니다.

컨테이너를 위한 네트워크 구축

네트워크는 컨테이너화에 있어서 중요한 역할을 담당합니다. 멀티테넌트 환경에서 기본적으로 필요한 것은 네트워크 플로우에 대한 액세스 제어 및 감사 기능을 제공하는 능력입니다. 네트워크에서 제공되는 액세스 제어는 애플리케이션 기반 인증 및 권한 부여 메커니즘을 보완합니다. 두 메커니즘을 함께 사용하면 이기종 인증 방법을 포괄하는 공통 레이어를 제공할 수 있습니다. 이 기능은 타사 소프트웨어(예: 가상화된 방화벽)를 사용하는 환경에서나 여러 세대의 소프트웨어 기술이 동시에 실행 중일 때에 자주 등장하는 요구 사항을 충족합니다.

주니퍼 네트웍스는 컨테이너의 무한한 잠재력을 인지하고 있으며, 다양한 IT 조직에서 방화벽 기능으로 안전하게 보호되는 마이크로서비스 아키텍처와 컨테이너형 애플리케이션을 갈수록 더 많이 채택할 것으로 기대하고 있습니다.

레이어 3–7의 보안과 결합된 네트워크 액세스 제어는 컨테이너형 워크로드를 실행하는 클러스터뿐만 아니라 외부 환경(예: 기존 OpenStack 또는 베어메탈 서버)에 포괄적으로 적용되어야 합니다. 이러한 이기종 환경에서 네트워크는 다양한 유형의 요소들을 함께 연결하는 접착제 역할을 합니다.

주니퍼 네트웍스의 Contrail Networking과 같은 기술은 이 기능의 전형적인 예입니다. Contrail은 컨테이너 에코시스템을 위한 마이크로 세그먼트 분할을 제공하여 멀티테넌트 환경 내의 네트워크를 안전하게 분리할 수 있습니다. 또한 클러스터 관리 도구를 통해 컨테이너와 VM에서 실행되는 애플리케이션 간에 서로 다른 가상 네트워크를 연결하고 클러스터 관리 도구 외부의 요소들(예: 베어메탈 서버에서 실행되는 레거시 데이터베이스 또는 인프라)도 연결하도록 지원합니다.

컨테이너 기술이 발전함에 따라 컨테이너형 애플리케이션을 지원하는 네트워크 기술이 등장할 것입니다. 애플리케이션 컴포넌트와 동일한 속도로 실행할 수 있는 컨테이너 기술을 비롯하여 이러한 환경에서 확장할 수 있는 보안에 대한 요구도 늘어날 것이 확실합니다.

주니퍼 네트웍스는 컨테이너의 무한한 잠재력을 인지하고 있으며, 다양한 IT 조직에서 방화벽 기능으로 안전하게 보호되는 마이크로서비스 아키텍처와 컨테이너형 애플리케이션을 갈수록 더 많이 채택할 것으로 기대하고 있습니다. 주니퍼 네트웍스의 사명은 모든 네트워크를 완벽하게 보호하고, 복잡한 네트워킹 문제를 해결하며, 이와 같은 기술들의 도입을 위한 토대를 마련하는 견고한 개방형 플랫폼을 개발하는 것입니다.

이 기사 관련 리소스에서 컨테이너형 애플리케이션과 이를 지원하는 네트워크의 구축 방법에 대해 자세히 알아보십시오.