클라우드 네이티브 간략히 알아보기

클라우드는 사용한 만큼 과금하고, 수 분 안에 필요한 자원을 배포할 수 있기 때문에 다수 기업은 빠르게 변하는 트렌드에 신속히 대응하기 위해 클라우드를 도입하기로 결심합니다. 그러나 클라우드 컴퓨팅은 단순히 여러분의 애플리케이션 인프라 자원을 이동하는 간단한 과정이 아닙니다.

일단 클라우드를 잘 사용해보기로 한 이상, 기획, 개발, 운영, 보안 등 전 영역에 걸친 업무 방식에 변화가 요구되며, 그 중심에 클라우드네이티브가 있습니다.

여기서 잠깐 ‘네이티브’라는 단어에 대해 생각해볼까요?

일반적인 상황에서 ‘네이티브’란 특정 언어가 모국어인 사람을 뜻합니다.
저는 한국어 네이티브인데요. 이는 ‘이 사람은 기본적으로 한국어를 사용해서 대화하는 사람이야’라는 뜻입니다.

그럼 ‘클라우드네이티브’는 어떤 뜻일지 짐작해보세요.
어떤 애플리케이션이 클라우드 네이티브라는 것은 이 애플리케이션은 기본적으로 클라우드의 서비스를 사용하도록 되어있다’는 뜻입니다.
억지로 끼워 맞춘 것 같지만 실제로 클라우드 네이티브의 의미가 그렇습니다. 클라우드 환경 및 서비스 활용을 처음부터 염두에 두고 애플리케이션을 개발하는 방식이 바로 ‘클라우드 네이티브’입니다.

클라우드 네이티브에서 제품을 개발하는 방식

한 번 구축하면 쉽게 바꿀 수 없었던 기존 환경과는 달리, 클라우드에서는 하루에도 여러 차례 시스템을 수정하고 반영할 수 있습니다.
‘클라우드네이티브’ 시스템은 이와 같은 클라우드의 장점을 최대한 이용할 수 있도록 제품 개발 초기 단계부터 고민합니다.

Cloud Native1

최소 기능을 가진 제품부터 개발하는 방법 (출처 : Henrik Kniberg)

음악을 들을 수 있는 사이트가 있다고 가정해봅시다.
이 하나의 웹사이트에도 검색, 추천, 음악재생, 빌링 등 다양한 기능이 존재합니다. 각각의 기능이 유기적으로 연결되어 있는 모놀리식 아키텍처는 한 서비스에 문제가 발생했을 경우 다른 서비스에 영향을 미칠 수 있습니다. 더 좋은 검색 엔진이 나와서 해당 기능을 업데이트하려 한다면, 시스템 운영을 중단하고 주로 새벽시간에 보완사항을 반영해야 합니다. 만약 검색 프로세스에 대한 수요가 많아진다면 전체를 확장해야 합니다.

마이크로서비스 단위로 나눈 음악 재생 웹사이트(출처 : 핀터레스트)

이런 점을 보완하고, 클라우드의 장점을 최대한 이용하며 ‘클라우드네이티브’한 애플리케이션을 구현하기 위해 마이크로서비스 아키텍처가 대두되고 있습니다. 하나의 애플리케이션을 작은 기능 단위 애플리케이션으로 나누어 서비스하는 마이크로서비스는 수시로 서비스를 생성했다가 폐기할 수 있는 시스템 환경을 제공하면서 빠르게 변해 가는 비즈니스 환경에 신속히 대응할 수 있습니다. 하나의 기능을 독립적인 단위로 개발하면 하루에도 여러 차례 시스템을 수정하고 반영할 수 있게 됩니다.

이러한 마이크로서비스 기반 애플리케이션에 독립적인 실행 환경을 제공하는 기술이 바로 컨테이너입니다. 컨테이너 기술은 애플리케이션 실행에 필요한 모든 것을 패키지로 묶어 제공된 이미지를 사용합니다. 또한, OS 환경을 여러 컨테이너들이 공유하여 사용합니다. 이렇게 하면, 애플리케이션마다 별도 게스트 OS를 부팅한 후 실행해야 했던 기존 VM 방식보다 빠르게 구축할 수 있습니다. 따라서 컨테이너를 사용하면 여러 애플리케이션을 독립적인 단위로 개발하고 효율적으로 관리할 수 있습니다.

조직 구성의 변화와 애자일 방법론

이렇게 클라우드네이티브, 마이크로서비스, 컨테이너를 개념적으로 간단히 정리해 봤습니다.
그러나 실제 조직에 적용하기까지 상당한 러닝커브가 필요하며, 구축 사례가 부족하기 때문에 체계적인 접근 전략이 필요합니다. 또한, 기존 조직 구성에도 큰 변화를 요구합니다.

우선, 모놀리식 애플리케이션을 개발하던 조직을 ‘기능’ 혹은 ‘프로젝트’ 단위로 분리해야 합니다.
소규모 팀 단위로 개발 업무에 필요한 최소 주기를 설정하고 이 기간 내에 계획, 개발, 테스트, 배포까지 과정을 전부 수행합니다. 이 과정을 반복하며 하나의 제품을 만들어내는 것을 목표로 하며, 개발부터 운영까지의 사이클을 빠르게 진행하는 애자일 방법론을 동반합니다.

계획, 개발, 테스트, 배포까지 하나의 대시보드에서 관리하고, 운영팀과 개발팀이 하나의 목표를 향해 나아가는 데브옵스 문화도 빠질 수 없습니다.
이처럼 클라우드네이티브란, 클라우드의 이점을 최대로 활용할 수 있도록 애플리케이션 개발부터 조직 문화까지 모든 요소를 바꿔 나가는 과정을 의미합니다.

클라우드의 확장성, 가용성에 현혹되어 발을 들였다면 이제 클라우드를 더 잘 쓰기 위한  클라우드네이티브를 향한 복잡한 고민에 빠지실 시간입니다

#Agile #Cloud Native #Container #DevOps #Microservice
Buy now