왜 클라우드 네이티브인가?
디지털 트랜스포메이션을 위한 클라우드 네이티브
IT 패러다임의 변화
이번 회차에서는 기업이 디지털 트랜스포메이션을 하기 위해 꼭 알아야 할 중요한 IT 패러다임의 변화에 대해 살펴보도록 하겠다. 기업이 내·외부 환경 변화에 좀 더 민첩하게 대응하고 리스크를 최소화하며 기회를 최대한 활용하기 위해서는 응용프로그램이나 플랫폼을 구현하고 운영하기 위한 주요 IT 요소 즉, 개발방법론, 아키텍처, 조직과 프로세스, 인프라, 구현과 개발언어 등에 있어 많은 변화가 필요하다.
차례대로 살펴보자. 우선, 개발 방법론은 전통적인 방법론이 가지고 있는 일반적인 형태의 프로세스 모형 즉, 폭포수 모델(Waterfall Model)에서 짧은 주기로 반복하는 프로세스 모형을 가진 애자일 방법론(Agile Methodology)이 각광을 받고 있다. 특히 애자일 방법론을 통해 고객의 요구에 보다 민첩하게 대응하여 소프트웨어를 개발하고 운영하는 것이 가능해지고 있다.
아키텍처는 비즈니스 관점에서 독립적인 배포 및 실행이 가능한 서비스 블록(Service Block)으로 분할되고, 상호 API(Application Programming Interface)를 통해 연계하는 마이크로서비스 아키텍처(MSA: Microservice Architecture)가 점차 확산 되고 있다. 또한 조직의 경우 자동화된 프로세스와 지표의 시각화를 통해 소프트웨어의 개발과 운영의 효율성을 높이기 위한 데브옵스(DevOps)가 필수로 도입되고 있다.
인프라 측면에서는 직접 시스템을 구축하고 운영하지 않고 온디맨드(On-Demand) 형태로 필요한 만큼 사용하고 원할 때 원하는 만큼 Scale-in/out 할 수 있는 클라우드 형태의 인프라로 급격히 이전하고 있으며, 이는 기업이 이를 통해 CAPEX(Capital expenditures)와 OPEX(Operational expense)를 줄이고 비즈니스 관점에서 Time to Market 할 수 있어 IT의 기본 전략으로 수용하는 기업이 점점 늘고 있기 때문이다. 그리고 더 나아가 가상 머신 기반의 기존 클라우드 환경에서 컨테이너(Container) 기술을 본격적으로 활용하고 서버리스(Serverless) 기반의 응용프로그램을 구현하고 운영하는 수준으로 변화가 일어나고 있다.
한편 구현과 개발 언어 측면에서, 기존에는 한 기업이나 엔터프라이즈의 플랫폼이 보통 하나의 언어와 통일된 기술셋으로 구현 및 운영되는 경우를 일관성 있고 효율적이라 여겼으나, 최근에는 적용하는 영역의 특성에 맞는 기술과 언어로 구현함으로써 하나의 플랫폼이나 시스템도 여러 언어나 서로 다른 기종의 데이터베이스 시스템을 사용하는 등의 형태를 가진 폴리그랏(Polyglot)이 점차 보편화 되어 가고 있다. 이를테면 신뢰성이 요구되는 영역에서는 자바(Java) 기반의 응용시스템을 구축하고, 데이터베이스 시스템은 오라클과 같은 RDB(Relational Database)를 사용하지만 대량의 데이터를 다루는 영역에서는 파이선(Python) 기반의 응용프로그램을 활용하고 데이터베이스 시스템은 NoSql을 사용하는 것이 하나의 사례라 하겠다. 이러한 다양한 변화를 어떻게 수용하고 내재화 할 수 있느냐가 결국 기업이 디지털 트랜스포메이션 전략을 성공적으로 이행하고 경쟁력을 획득할 수 있는지에 대한 CSF(Critical Success Factor) 중에 하나가 될 것이며, 기업이 이러한 변화를 효과적으로 대응하고 내재화하기 위해서 반드시 알아야 할 중요한 사실 중에 하나는 이러한 변화의 요소들이 상호 밀접하게 연결되어 있다는 점이다.
상호 연계되어 있는 주요 IT 영역의 변화 요소
그럼 위에서 살펴본 주요 IT 영역의 요소들이 어떻게 상호 긴밀히 연계되어 있는지 살펴보자. 우선 애자일 방법론과 MSA방식의 시스템 아키텍처의 관계에 대해 짚어 보도록 하겠다. 애자일 방법론을 도입한 많은 기업이 효과적으로 애자일 방법론을 활용하지 못하고 실패한 사례가 많다.
이러한 실패 사례에는 다양한 원인이 있겠지만 그중 커다란 원인 중 하나는 시스템 구성과 조직 구성의 형태에 따른 문제이다. 전통적 방식인 모놀리식(Monolithic) 형태의 시스템이나 플랫폼을 여러 애자일 조직으로 나누어 개발 및 운영 시, 결국 하나로 결합된 응용프로그램의 결합도 때문에 제대로 애자일 조직과 방법론의 효과를 발휘하기 어렵게 되는 것이다. 이러한 사실을 설명하는 이론이 바로 Conway’s law이다.
Conway’s law에서는 “모든 시스템은 그 조직의 의사소통 구조와 동일하게 만들어진다.”고 이야기한다. 이 말은 시스템의 구성과 이를 활용하고 운영하는 조직의 구성이 매핑되어야만 효율적인 시스템의 개발과 운영이 가능하다는 뜻이다. 또 소프트웨어 시스템이 단순히 공학적인 문제가 아니라 조직의 형태와 문화와도 밀접한 관계가 있다는 것을 설명하고 있다.
결국 애자일 조직과 방법론을 기업에 효과적으로 도입하기 위해서는 대상이 되는 시스템의 아키텍처도 전통적인 모놀리식의 구성이 아니라 마이크로서비스 블록으로 분리되어 애자일 조직과 잘 매핑할 수 있도록 MSA형태의 아키텍처로 구성해야 한다는 뜻이다. 이는 반대로 MSA기반의 애플리케이션이나 플랫폼을 효과적으로 운영하기 위해서는 애자일 조직과 방법론을 적용해야 한다는 뜻이기도 하다. 결국 애자일 방법론과 MSA라고 하는 시스템 아키텍처는 긴밀히 연결되어 있고, 이 두 가지를 같이 적용해야만 한다는 것이다.
다음은 데브옵스(DevOps: Development and Operations)와 클라우드 기반 인프라의 관계에 대해 살펴보도록 하겠다. 데브옵스는 소프트웨어의 개발과 운영의 스피드와 품질을 향상하기 위한 새로운 조직 문화이자 프로세스이며 접근방식이다. 이러한 데브옵스를 현실화하기 위해서는 파스(PaaS: Platform as a service), 컨테이너 기반 응용프로그램 등의 요소가 선행 되어야 한다. 다시 말해 데브옵스라는 접근방식을 현실적으로 적용하기 위해서는 클라우드 기반의 인프라 환경이 필수적이다. 그런데 컨테이너 기반으로 시스템이 개발되고 운영되려면 기존의 모놀리식 형태의 시스템 아키텍처는 적합하지 않다. MSA를 통해 기존 모놀리식 구성을 여러 개의 마이크로 서비스 블록으로 분할하고 이를 도커(Docker) 등의 기술을 이용해 컨테이너 기반의 응용프로그램을 만드는 것이 필요하다. 이를 통해 인프라 환경의 멱등성(Idempotence: 연산을 여러 번 하여도 결과가 달라지지 않는 성질)을 보장하고 CI/CD 파이프라인상에서 Blue/Green 배포 등을 통해 안전하고 빠른 소프트웨어의 개발 및 운영이 가능하게 되는 것이다.
클라우드 네이티브로의 트랜스포메이션
지금까지 살펴본 것처럼 디지털 트랜스포메이션에 필요한 많은 IT 요소는 전략적으로 연계해 도입하고, 내재화 시킬 필요가 있다. 그러나 이러한 모든 요소를 기업이 한꺼번에 도입하고 내재화하기란 너무도 어렵고 힘든 일이다. 따라서 각 기업의 상황과 환경에 맞게 도입 전략을 수립하고 이행하는 것이 필요하겠다. 이때 가장 먼저 고려해야 할 요소가 바로 클라우드 기반의 인프라 전환이다. 물론 이 또한 처음부터 전면적으로 실행하기에는 기업의 상황에 따라 여러 가지 어려움이 있을 수 있다. 때문에 일부 영역부터 온프레미스(On-premises)에서 클라우드로 단계적으로 마이그레이션 하는 전략이 필요할 것이다. 궁극적으로 모든 시스템 요소를 클라우드 기반으로 시프트(Shift)하고, 클라우드 컴퓨팅의 장점을 충분히 활용하기 위해서는 클라우드 네이티브(Cloud Native: 클라우드 컴퓨팅의 장점을 최대화 하기 위한 접근방식 및 기술)라고 하는 기술 요소에 의한 소프트웨어 시스템으로 점차 트랜스포메이션되어야 할 것이다. 이는 클라우드 네이티브를 통해 기업이 보다 민첩한 비즈니스 활동을 전개할 수 있는 소프트웨어 시스템을 갖출 수 있기 때문이다.
마무리하며
이번 화차에서는 기업이 효과적인 디지털 트랜스포메이션을 하기 위한 여러 요소 중 가장 중요한 영역 중에 하나인 IT 영역에서의 주요 패러다임 변화와 각 기술 요소 간의 관계에 대해 살펴보았다. 그리고 이러한 변화의 요소를 기업이 내재화 하기 위해 가장 중요한 키워드라 할 수 있는 클라우드 네이티브(Cloud Native)라는 기술 단계까지 같이 짚어 보았다. 다음 회차에서는 클라우드 네이티브의 상세한 개념과 이를 구현하기 위한 핵심 기술 요소들에 대해 살펴보도록 하겠다.