쿠버네티스(Kubernetes)가 국내 엔터프라이즈 기업의 클라우드 도입을 이끌고 있습니다. 엔터프라이즈 기업의 운영 책임자들은 도커와 쿠버네티스의 조합에 만족감을 보이며 자사의 서비스 플랫폼을 클라우드로 옮기려 하고 있습니다. 쿠버네티스가 클라우드 도입을 이끌어 가는 이유에 대해 알아보도록 하겠습니다.
클러스터는 고속의 근거리 통신망을 이용하여 여러 대의 컴퓨터를 연결하는 것입니다. 하드웨어의 제한을 뛰어넘어 더 빠른 처리 속도와 더 많은 스토리지 용량을 구현함으로써 리소스의 가용성과 안정성을 향상시킬 수 있는 장점을 가질 수 있습니다.
국내 엔터프라이즈 시장은 대부분 모노리틱 아키텍처를 이중화하고 처리량을 높이기 위한 용도로 클러스터를 구성하고 있습니다. 이중화는 컴퓨터 클러스터의 장점입니다. 하드웨어 장애가 발생한 경우에도 클러스터 내의 시스템과 해당 자원이 클러스터의 다른 부분이 중단된 작업을 선택할 때 중단되지 않는 처리를 보장합니다. 이는 대규모 연구 수행, 추세 분석 및 비즈니스 및 웹 응용 프로그램의 연중무휴 운영과 같이 우수한 가동 시간이 필요한 응용 프로그램에 특히 중요합니다.
비용 효율성, 유연성 및 우수한 중복성으로 인해 클러스터 컴퓨팅은 개발자와 민첩한 비즈니스에 이상적인 선택입니다. 클라우드에 클러스터를 가져오면 클러스터가 더 나아집니다. 고성능 컴퓨팅을 클라우드에 적용하면 클러스터의 타고난 장점을 유지하면서 지리적 장벽을 깨뜨릴 수 있습니다.
컴퓨터 클러스터를 가장 잘 사용하는 곳은 구글로 알려져 있습니다. 2000년대 초반부터 구글의 검색 서비스는 직접 개발한 고성능 분산 시스템 Borg를 통해 운영해왔습니다. 그리고 쿠버네티스는 구글의 Borg 개발팀이 다수 참여하여 개발되었습니다.
클러스터를 구성하여 운영할 때의 문제는 운영체제에 들어있는 운영 환경 또는 각종 설정 파일이 충돌하는 문제가 발생한다는 것입니다. 다수의 컴퓨터 네트워크에서 응용 프로그램을 실행하는 경우 응용프로그램에 필요한 지원 환경이 충돌할 수 있습니다. 복수의 애플리케이션의 각자 다른 복수의 설정을 필요한 경우 어떻게 관리해야 하는지도 문제가 될 수 있습니다. 예를 들어 한 버전의 Java 프레임워크를 사용하여 테스트를 실행했지만 클러스터의 다른 부분에 있는 자바 프레임워크의 버전이 더 높거나 낮다면 운영자 입장에서는 매우 이해하기 힘든 상황이 펼쳐질 것입니다.
이런 경우에 컨테이너는 모든 문제를 해결해줍니다. 도커와 같은 컨테이너는 애플리케이션 및 라이브러리에서 구성 파일까지 전체 런타임 환경을 캡슐화하므로 어떤 운영 환경에서도 소프트웨어를 안정적으로 실행할 수 있습니다.
소수의 컨테이너를 제어하는 것은 문제가 없을 수 있습니다. 하지만 클러스터 규모에서 다수의 컨테이너를 제어한다면 이야기가 달라집니다. 수천 대의 컨테이너를 관리해야 한다면 컨테이너를 배치하고 생성하고 애플리케이션을 배포하는 도구가 필요합니다. 쿠버네티스는 컨테이너에서 애플리케이션의 배치, 확장 및 관리를 자동화하는 컨테이너 오케스트레이터입니다.
쿠버네티스가 할 수 있는 대표적인 작업들은 아래와 같습니다.
쿠버네티스는 오픈소스이기 때문에 누구든지 사용할 수 있습니다. 그 덕분에 모든 클라우드 생태계에는 이미 쿠버네티스가 포함된 서비스가 존재하고 있습니다.
클러스터를 구성하는 것이 쉬워지면서 MSA(Micro Service Architecture)에 대한 논의가 더욱 활발해지고 있습니다. 더 이상 인프라스트럭처의 한계를 핑계로 MSA를 못한다는 이야기도 쉽지 않게 될 것입니다. 더 빠르게 변화되는 비즈니스의 요구 사항을 만족시키기 위해 많은 프로젝트가 MSA를 고민하는 이 시점에 쿠버네티스는 좋은 클라우드 서비스가 될 것입니다.