본문 바로가기

카테고리 없음

1편: 컨테이너, 쿠버네티스, DevOps 유행 따라잡기!

엔터프라이즈 컴퓨팅 환경 끊임없이 진화의 길을 걷고 있습니다. 하루가 멀다고 새로운 기술, 도구, 방법론이 등장합니다. 이들을 가만 보면 완전히 새로운 것이 아니라는 것 그리고 목표는 늘 같다는 것 알 수 있습니다. 더 효율적이고, 생산적이고, 경제적인 쪽을 향한다는 것입니다. 그렇다면 2020년 현재 어떤 변화가 일어나고 있을까요?

 

인프라, 방법론, 개발과 배포 모든 분야에서 일고 있는 변화

 

특정 대상이 아니라 다양한 부문에 영향을 끼치며 포괄적으로 일어날 때변화의 바람이 일고 있다고 표현합니다. 현재 엔터프라이즈 컴퓨팅 환경의 맞이하고 있는 변화바람이 일고 있다는 표현에 어울립니다. 실제로 인프라 구축과 운영에서 애플리케이션 개발과 배포까지 모든 곳에서 변화가 목격되고 있습니다. 가령 인프라는 전통적인 데이터센터가 하이브리드 환경으로 바뀌고 있고, 소프트웨어 개발 방법론은 워터폴과 애자일을 거쳐 DevOps나아가고 있습니다. 애플리케이션 구조도 모놀리식(Monolithic)과 N-티어에서 마이크로서비스 아키텍처(Micro Service Architecture)가 제시되고 있습니다. 또한, 애플리케이션 배포는 물리적 서버와 가상 머신 외에 컨테이너로 선택지가 늘어났습니다. 이런 모든 변화의 공통 분모를 하나 꼽자면? 바로 컨테이너입니다. 

 

 

컨테이너가 일으킨 큰 변화의 바람

 

유닉스와 리눅스 계열 운영체제를 오래 사용했다면 컨테이너 개념이 설지 않을 것입니다. 컨테이너는 운영체제 내에서 동작하는 경량화된 가상 머신을 구현하는 기술입니다. 이러한 본질은 현재 개방형 표준으로 널리 사용하는 도커라 해서 다르지 않습니다. 그렇다면 가상 머신의 어떤 제약이 오늘날 컨테이너가 대세가 되는 흐름을 만들었을까요? 기존에는 애플리케이션 배포를 위해 전용 하드웨어를 도입해, 운영체제를 설치하고, 애플리케이션을 올리는 모노리틱 방식을 주로 썼습니다.

 

이 방식은 장단점이 분명합니다. 애플리케이션이 자원을 독점할 수 있다는 것은 운영자 눈으로 보면 분명한 장점입니다. 문제는 이게 자원 측면에서 보면 매우 큰 단점이란 것입니다. 평소에는 자원을 거의 쓰지 않지만, 서비스 요청이 몰려올 때를 대비해 필요 이상으로 성능과 용량을 잡아 인프라를 구축하다 보니 자원 활용 측면에서 경제성과 효율성이 낮습니다. 이 문제를 명쾌하게 해결한 것이 가상 머신입니다. 가상 머신을 대상으로 애플리케이션을 배포하는 방식은 인프라 측면에서 자원 낭비를 확실히 없앴습니다. 하지만 이 또한 완벽한 해결책은 아니란 것을 기업들은 곧 알게 됩니다. 애플리케이션 개발과 운영 방식이 마이크로서비스 아키텍처와 DevOps 쪽으로 발전하면서 가상 머신 환경은 민첩성 한계를 드러내고 있습니다.

 

가상 머신에 애플리케이션 배포하는 것은 모노리틱과 N-티어 구조에는 어울립니다. 하지만 애자일 방법론을 반영한 N-티어 환경이나 네이티브 클라우드를 지향하는 마이크로서비스 환경에서는 기업이 원하는 개발과 배포 속도를 만족하기 어렵습니다. 가상 머신은 자원 활용 측면에서는 독립적인 장비를 특정 애플리케이션이 독점하는 것보다 유리하지만 결국 애플리케이션 운영을 위해 운영체제와 필요 소프트웨어를 설치하고 설정하는데 손이 많이 갈 수밖에 없습니다.

 

컨테이너 기반 가상화는 가상 머신이 갖는 속도의 제약을 풀어냈습니다. 여기에 자원 활용의 경제성도 크게 끌어 올렸습니다. 가상 머신 기반 가상화는 하이퍼바이저로 인한 오버해드가 존재합니다. 컨테이너는 호스트 운영체제를 공유하므로 이런 부담이 없습니다. 또한, 서비스 생성과 확장을 위해 요구되는 CPU, 메모리 자원 요구도 차이를 보입니다. GB 단위로 메모리를 잡아야 하는 가상 머신과 달리 컨테이너는 MB 단위로 자원을 할당해 독립적인 애플리케이션 운영 환경을 늘려 갈 수 있습니다. 여기에 가상 머신의 경우 늘려 갈 때마다 운영체제 라이선스도 같이 늘어 갑니다. 컨테이너의 경우 호스트 운영체제를 공유하므로 상대적으로 운영체제 라이선스 구매할 일이 적습니다. 또한, 운영체제 숫자를 늘리지 않아도 확장이 가능해 유지보수 등에 들어가는 운영 비용 절감도 가능합니다. 관리해야 할 운영체제 숫자를 적정선에서 유지할 경우 보안 취약점 관련 패치 적용의 편리함까지 이점으로 따라옵니다.

 

CI/CD에 대한 오랜 고민까지 풀어내는 컨테이너

 

컨테이너는 지속적 통합과 배포(CI/CD)에 대한 기업의 오랜 고민을 풀 열쇠도 제공합니다. 애자일 방법론을 적용하고, 이에 맞게 CI/CD 도구들을 도입해 파이프라인을 구축하는 것은 나름의 투자와 시행착오가 필요했습니다. IT 조직 규모가 어느 정도 되고, 전통적인 방식으로 개발하고 운영하는 애플리케이션 수가 좀 되는 경우 CI/CD 프로젝트는 생각보다 쉽지 않은 그런 과제니다. 반면에 컨테이너 환경에서는 CI/CD를 매우 간소화된 방식으로 접근할 수 있습니다. 도커 컨테이너를 예로 들어 보겠습니다. 도커 환경에서는 소프트웨어 실행에 필요한 소스 코드, 런타임, 라이브러리 등을 하나의 파일로 만듭니다. 이미지라고 부르는 이 파일은 컨테이너 환경에 로딩되어 실행 가능한 상태가 됩니다.

  

컨테이너 환경에서는 애플리케이션을 지속해서 빌드하고 배포하는 것이 매끄럽게 이루어집니다. 사내 또는 깃허브나 비트버킷 등 외부에 있는 소스 코드 레지스트리에서 코드를 불러오고, 이를 젠킨스 등의 도구로 컨테이너 이미지로 만든 다음, 도커 허브 같은 이미지 레지스트리에 올려 운영 환경에 배포하는 일련의 과정이 자연스럽게 흘러간다는 소리입니다. 물론 컨테이너 환경에서 CI/CD 파이프라인을 구축하는 것이 무조건 쉬운 것은 아닙니다. 이 또한 관련 도구에 익숙해야 하고, 시행착오를 거쳐야 합니다. 행이 주요 클라우드 서비스가 제공하는 관리형 쿠버네티스 서비스나 레드햇의 OpenShift 같은 플랫폼을 이용하면 전통적인 방식과 비교할 수 없이 간편하게 CI/CD 파이프라인을 구축할 수 있습니다.

 

쿠버네티스 앞에서 열광과 좌절을 경험하는 기업들

 

물론 컨테이너가 모든 면에서 최선이라고는 볼 수 없습니다. 컨테이너 숫자가 몇 개 되지 않는다면 문제가 없지만, 그 숫자가 지속해서 늘어나면 관리가 큰 부담으로 다가옵니다. 컨테이너화된 워크로드 관리가 매우 복잡하고 어려워지는 것입니다. 이런 문제를 해결하기 위해 등장한 것이 컨테이너 애플리케이션 배포와 관리를 중앙집중적으로 할 수 있도록 돕는 쿠버네티스(Kubernetes)입니다.

 

쿠버네티스를 이용하면 많은 수의 컨테이너가 분산된 환경에서 배포와 관리를 간소화할 있습니다. 확장, 복제, 업데이트, 롤백 엔터프라이즈 환경이 필요로 하는 관리 기능 중앙집중적으로 편리하게 이용 있습니다. 하지만 쿠버네티스는 그리 만만하지 않습니다. 관련 지식과 경험이 충분하지 않을 경우 1년에 평균 4 최신 릴리즈를 발표하며 개선과 새로운 기능을 쏟아 내는 쿠버네티스 앞에서 좌절하기 쉽습니다. 어떤 운영체제를 것인지, 운영제제 버전은 무엇을 선택할지, 쿠버네티스는 어떤 버전의 릴리즈를 것인지 여러 조합 속에서 최선 찾아가는 것은 결코 만만한 작업이 아닙니다. 커뮤니티를 통해 원하는 답을 구하는 것도 쉽지 않고, 돈을 지불한다 해도 실력이 검증된 전문가를 는다는 보장도 없습니다. 이런 이유로 등장한 것이 관리형 쿠버네티스 플랫폼과 서비스입니다. 많은 기업이 레드햇의 OpenShift 같은 관리형 쿠버네티스 플랫폼을 이용해 마이크로서비스 아키텍처로의 전환과 DevOps 체계를 세우는 배경에 대해서는 다음 포스팅에서 자세히 알아 보겠습니다.

 

 


2020/03/04 - 1편: 컨테이너, 쿠버네티스, DevOps 유행 따라잡기!

2020/03/18 - 2편: 엔터프라이즈 쿠버네티스로 가는 모든 길은 OpenShift로 통한다!

2020/04/01 - 3편: OpenShift 구축 성공 사례: A생명보험사

2020/04/16 - 4편: 글로 보는 웨비나 1편 - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려 사항

2020/04/29 - 5편 : 글로 보는 웨비나 2편 - Microsoft Azure 클라우드에서 Red Hat OpenShift 시작하기

2020/05/13 - 6편 : 글로 보는 웨비나 3편- ARO(Azure Red Hat OpenShift) 운영 시나리오 및 Demo

 

 

위의 내용은 격주 수요일 마다 업데이트 될 예정입니다. 

해당 칼럼을 빠르게 받아보길 원하신다면? 

락플레이스 뉴스레터 신청하기 (클릭)