본문 바로가기
Cloud/MSA

클라우드 네이티브 컴퓨팅과 MSA

by 민휘 2023. 4. 27.

CNCF가 정한 클라우드 네이티브 컴퓨팅의 3대 요소에 MSA가 포함된다. 클라우드 네이티브 컴퓨팅이 무엇인지, MSA가 어떤 이유로 클라우드 네이티브 컴퓨팅에 필요한지 살펴보자. 우선 클라우드 컴퓨팅이 무엇인지부터 알아보자.

 

클라우드 컴퓨팅

 

클라우드 컴퓨팅이란 인터넷을 통해 서비스나 인프라, 리소스 등을 제공하는 것을 말한다. 클라우드 컴퓨팅은 2000년대 초반에 등장하여 다음과 같이 발전했다.

  • 2000년대 : SaaS
  • 2010년대 : IaaS
  • 2020년대 : PaaS
  • 그외 : CI/CD, Devops, Agile

 

SaaS는 소프트웨어 자체를 인터넷을 통해 제공하는 것이다. REST 프로토콜이 HTTP의 난해한 사용 환경을 표준화했다. IaaS는 서버, 네트워크, 저장소 등을 가상으로 제공하는 것이다. PaaS는 하드웨어 및 미들웨어, OS 등이 이미 설치된 상태로 주로 개발을 위해 사용하는 환경이다.

 

인프라의 혁신은 애플리케이션의 혁신에 영향을 주며, 그 반대도 마찬가지다. 애플리케이션 개발 운영의 혁신으로 지속적 통합과 지속적 전달, 데브옵스, 애자일 개발 프로세스가 주목 받기 시작했고 클라우드 컴퓨팅을 형성하는 기법으로 자리잡았다.

 

 

클라우드 네이티브 컴퓨팅

 

클라우드 컴퓨팅 분야가 애플리케이션 개발 배포에도 적극적으로 사용되면서, 클라우드는 단순히 사용하는 것에서 무언가를 만들기 위한 도구로도 변화했다. 또한 기반을 신속하게 구축하고 똑똑하게 운영하는 것뿐만 아니라, 클라우드 기반에 맞는 애플리케이션을 만들어 빠르고 유연하게 시스템을 구축, 운영할 수 있게 됐다. 이런 클라우드를 전제로 설계, 구축, 개발, 운영하는 컴퓨팅 스타일을 클라우드 네이티브 컴퓨팅이라고 한다.

 

클라우드 네이티브 컴퓨팅의 목적은 다음과 같다.

  • 확장 가능한 애플리케이션 구축, 운영
  • IT 시스템에 최소한의 인력으로 자주, 그리고 계획한만큼 임팩트 있는 변경 추가

 

클라우드 네이티브 컴퓨팅을 지탱하는 기술은 다음과 같다.

  • 컨테이너화
  • 오케스트레이션
  • 마이크로서비스
  • 데브옵스(프레임워크) : 애자일 개발 프로세스(기법), CD(효율화), 비즈니스 개발 운영 통합(조직 혁신)

 

이들이 어떻게 사용되는지 간단한 흐름으로 설명해보자면, MSA 아키텍처를 적용해 기능별로 작게 쪼갠 애플리케이션을 만들고 CD로 컴파일, 빌드, 테스트, 배포를 자동화한다. 잘게 쪼갠 애플리케이션을 컨테이너로 패키징하고 오케스트레이션 툴을 사용해 컨테이너를 유연하게 축소 확장한다.

 

 

MSA

 

마이크로서비스란 클라우드 기반에 특화된 애플리케이션 개발 및 운영 아키텍처 스타일이다. 핵심은 독립적으로 개발 및 실행되는 소프트웨어 컴포넌트(서비스)를 여러 개 조합해서 하나의 애플리케이션을 구축하는 소프트웨어 구조이다. 이것을 구체화하기 위한 기술로 컨테이너, 오케스트레이션, REST, 메시징 등이 있으며 기법으로는 데브옵스, 애자일 기반 프로세스, CD, DDD 등이 있다.

 

 

마이크로 서비스를 적용하면 다음과 같은 장점이 있다.

  • 작은 단위의 애플리케이션 릴리즈 가능
  • 빠르고 유연한 애플리케이션 변경 및 유지 관리
  • 작은 단위의 확장 및 축소 (스케일아웃, 스케일인)
  • 장애 영향 최소화
  • 지속적 전달의 기초
  • 확장성과 고가용성

 

한편 이러한 단점도 야기할 수 있으니 조심해야 한다.

  • 서비스 간 통신 지연
  • 분산 배치된 데이터의 동기화
  • 분산 컴퓨팅 환경의 운영 및 감시 비용
  • 시스템 전체 설계의 일관성 및 통일성
  • 서비스 모델링 기법의 학습 난이도

 

MSA의 특징은 다음과 같다.

  • 서비스를 사용한 컴포넌트화
  • 비즈니스 기능을 기준으로 한 팀 편성
  • 프로젝트가 아닌 제품을 파악해서 개발 및 운영
  • 지능적인 엔드포인트와 단순한 파이프
  • 비중앙적인 언어와 툴 선택
  • 비중앙집권적인 데이터 관리 : 데이터 스트림
  • 인프라의 자동화
  • 장애와 오류를 전제로 한 설계

 

 

마이크로서비스와 애자일 개발 프로세스

 

MSA와 궁합이 좋은 개발 프로세스는 애자일이다. 운영도 하면서 최종 사용자의 피드백이 있을 때마다 개발을 반복적으로 진행하며, 조금씩 그리고 적시에 애플리케이션 릴리즈를 지속하는 방식이다. 팀은 작은 규모의 기능을 하나의 완성된 제품으로 취급하여 애플리케이션 개발과 운영을 모두 책임져야 한다.

 

애플리케이션을 신속하게 릴리스하는 기법이다. 분할된 비즈니스 기능 단위로 모델링과 개발을 실시하고, 만들어진 것부터 바로 릴리스한다. 이때 모델링 과정을 비즈니스와 IT 인력으로 구성된 혼성팀이 추진한다.

 

참고로 DDD는 MSA 모델링을 애자일 개발 프로세스를 사용해 진행할 때 친화성이 좋은 소프트웨어 설계 방식이다. 도메인 모델을 설계 및 개발 작업의 중심에 두고 반복적으로 변경 및 진화시켜서 프로그램의 구현으로 이어지도록 하는 방법이다.

 

 

마이크로서비스와 지속적 배포

 

MSA를 적용하면 세밀한 소프트웨어 구조를 얻을 수 있다. 이런 세밀한 소프트웨어 구조는 CD를 사용한 잦은 빈도의 배포에 적합하다.

 

 

데브옵스와 애자일, CD의 관계

 

데브옵스란 개발팀과 운영팀의 연계를 통해 신속하고 빈번하게, 그리고 확실하게 개발 및 테스트와 릴리스를 목표로 하는 것이다. 넓은 의미의 데브옵스에서는 사업 부문이 세운 전략과 IT 시스템의 개발 및 운영, 그리고 일반 소비자의 반응을 긴밀하게 연계한 생태계를 확립하고, 자주 그리고 빠르게 피드백을 반영해 비즈니스 목표 달성과 비즈니스 성과를 최대화하는 것이다.

 

데브옵스를 실현하려면 운영과 문화을 바꿔야 한다. 위에서 설명한 것처럼 개발과 운영을 연계하기 위해 조직 혁신이 필요하다. 또 목표 실현에 필요한 태스크를 신속하고 지속적으로 운영하는 기법과, 태스크를 효율적으로 마이그레이션 하는 효율화가 필요하다.

 

애자일 프로세스는 데브옵스에 적용할 기법을 구현한 것으로, 신속하고 유연한 소프트웨어 개발을 진행하게 해준다. 또 데브옵스에 적용하는 효율화를 구현하는 것은 CD이다. CD는 짧은 주기로 소프트웨어를 릴리스하기 위한 소프트웨어 엔지니어링 기법으로서, 개발한 애플리케이션을 운영 환경에 올리는 작업을 자동화한다.

 

 

 

요약

  1. 클라우드 컴퓨팅이 발전하면서 클라우드 기반에 맞는 애플리케이션을 만들어 빠르고 유연하게 시스템을 구축, 운영하는 클라우드 네이티브 컴퓨팅이 등장했다.
  2. 클라우드 네이티브 애플리케이션을 지탱하는 기술로 컨테이너, 오케스트레이션, MSA, 데브옵스 등이 있다.
  3. MSA는 기능 단위의 세밀한 소프트웨어를 만드는 아키텍처 스타일이다. 확장과 변경에 유연하고 빠르게 대응할 수 있으나 구조의 복잡도 증가로 인한 비용이 발생하기도 한다.
  4. MSA를 적용할 때 애자일 개발 프로세스 기법과 CD를 함께 사용하면 시너지를 낼 수 있다. 이는 데브옵스의 특성과 관련이 있다.