디지털 인사이트님의 아티클 더 보기

트렌드

클라우드 네이티브를 위한 핵심 기술

클라우드 네이티브

클라우드 네이티브의 정의

이번 회차에서는 클라우드 네이티브의 상세 개념과 그 안에 담긴 핵심 기술, 그리고 해당 기술의 중요성에 대해 알아보도록 하겠다. 먼저 클라우드 네이티브에 대한 개념을 보다 명확히 알기 위해, 이 영역의 글로벌 리더들은 어떻게 정의하고 있는지 함께 살펴보자.

“클라우드 네이티브는 클라우드 컴퓨팅 모델의 장점을 모두 활용하는 애플리케이션을 개발하고 실행하기 위한 접근 방식이다”
– MS

“클라우드 네이티브 애플리케이션은 탄력적으로 결합된
소규모의 독립 서비스 컬렉션이다.”

– Pivotal

“클라우드 네이티브 애플리케이션은 처음부터
클라우드 규모의 크기 조정 및 성능에 최적화되도록 빌드 된다. 이 솔루션은 마이크로 서비스 아키텍처를 기반으로 하며,
관리되는 서비스를 사용하고, 지속적인 업데이트를 활용해
안정성을 확보하고 출시 시간을 단축한다.

– RedHat

위의 정의를 다시 정리해보자면, 클라우드 네이티브는 클라우드의 규모와 크기 조정 및 성능에 최적화되어 있는 애플리케이션을 개발하기 위한 접근 방식과 기술을 이야기한다고 할 수 있겠다. 클라우드 네이티브 기반의 응용프로그램은 Cloud Native Computing Foundation에 따라 다음과 같은 속성을 가지고 있다.

  • 애플리케이션 또는 프로세스는 소프트웨어 컨테이너에서 분리된 단위로 실행된다.
  • 프로세스는 리소스 사용을 개선하고 유지 보수 비용을 줄이기 위해 중앙 오케스트레이션 프로세스에 의해 관리된다.
  • 애플리케이션 또는 서비스(마이크로 서비스)는 명시적으로 설명된 종속 항목과 느슨하게 결합된다.

이러한 클라우드 네이티브 응용프로그램의 성격을 보장하기 위해 필요한 핵심 기술들은 각 리더 그룹마다 조금씩 상이 할 수 있지만, 공통적으로 이야기하는 기술은 Container, Micro Service Architecture, DevOps, CI/CD 등이다.


클라우드 네이티브를 위한 네 가지 주요 기술

출처. Pivotal

첫 번째 ‘Container’ 기술은 기존의 하이퍼바이저 기반의 가상화 기술보다 오버헤드가 적고 인프라의 일관성을 유지할 수 있으며, 블루/그린 배포와 같은 소프트웨어의 안전한 배포 및 운영을 가능하게 해주는 기술이다.

두 번째 ‘MSA(Micro Service Architecture)’는 기존에 하나로 되어 있던 애플리케이션을 비즈니스적 관점에서 독립적으로 배포할 수 있고, 실행이 가능한 업무 단위인 마이크로 서비스 블록으로 나눠 이를 RestFull API와 같이 심플한 방법으로 상호 통신하고 연계해 응용프로그램을 구성하는 소프트웨어 아키텍처이다. 이러한 MSA을 통해 기업은 고객의 요구와 기술적 환경 변화에 빠르게 대응할 수 있는 유연한 소프트웨어 시스템을 개발하고 운영할 수 있다.

세 번째는 ‘DevOps’이다. DevOps는 소프트웨어 시스템을 빠르고 고품질로 개발 및 운영하기 위한 조직 문화이자 접근 방식이라고 할 수 있다. DevOps를 통해 개발 조직, 운영 조직, 품질 조직들은 공동의 목표를 설정하고, 이를 달성하기 위한 자동화된 도구 및 시각화된 지표를 활용해 소프트웨어 시스템의 빠른 개발과 운영이 가능하다.

마지막 네 번째는 ‘CI/CD’이다. CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제, 일명 ‘통합 지옥(integration hell)’을 해결하기 위한 솔루션이다.
특히, CI/CD는 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프 사이클 전체에 걸쳐 지속적인 자동화 및 모니터링을 제공한다. 이러한 구축 구성을 우리는 ‘CI/CD 파이프라인’이라고 부르며, 개발 및 운영팀의 애자일 방식과 협력을 지원한다.


마무리하며

지금까지 클라우드 네이티브의 개념과 이를 실현하기 위해 중요하게 꼽히는 네 가지 핵심 기술을 살펴봤다. 특히, 이 기술들은 비단 클라우드 네이티브라고 명명해 클라우드와 연결 짓지 않더라도, 지금까지 우리의 소프트웨어 역사에서 Challenge되어 온 여러 문제를 해결하는 데 중요한 Key를 제공하는 기술들이라 말할 수 있겠다.
또한 이 네 가지 기술들은 각각의 특성과 장점들이 있지만, 함께 구성되고 연계되었을 때 진정한 힘이 발휘되고 근본적인 핵심 기술로서 자리매김할 수 있다는 사실을 기억해야 한다.
지금 우리는 패러다임이 급격하게 변화하는 변곡점에 서 있다. 이러한 시점에서 이제 기업이나 엔터프라이즈는 ‘클라우드 네이티브라는 개념을 받아들이고 활용할 것인가?’라는 ‘선택’ 차원이 아니라, ‘클라우드 네이티브를 언제 도입하는 것이 좋을까?’라는 ‘시점’의 문제로 받아들여야 한다.
본 기고의 마지막인 다음 회차에서는 어떻게 하면 우리가 클라우드 네이티브라고 하는 여정을 더욱 쉽고 빠르게 시작할 수 있을지에 대해 살펴보도록 하겠다.