본문 바로가기

IT Insight

블록을 조립하듯 앱을 조립하는 '마이크로서비스' ①



LG CNS의 사내 전문가들이 LG CNS 블로그 독자 여러분들을 위해 최신 IT 기술 및 트렌드를 소개해 드립니다. 


매월 1회씩 아래와 같은 순서로 연재될 예정이오니, 독자 여러분들의 많은 관심과 기대 바랍니다. 


[연재기획 주제] 

  • 1편: IT를 통해 서비스업으로 변하고 있는 제조업체들  
  • 2편: 무엇을 해야 할지도 알려주는 처방분석의 세계  
  • 3편: 앱의 시대에서 가상 비서의 시대로, Virtual Personal Assistant
  • 4-1편: 블록을 조립하듯 앱을 조립하는 '마이크로서비스' ①
  • 4-2편: 블록을 조립하듯 앱을 조립하는 '마이크로서비스' ②

(연재 주제는 기고 시점의 이슈, IT 트렌드에 따라 바뀔 수 있습니다) 



마이크로서비스 아키텍처(Microservice Architecture)는 비즈니스 변화와 성장 속도가 빨라짐에 따라 IT시스템이 그 속도에 따라갈 수 있도록 개발과 운영을 포괄하는 기술입니다. 특히나 최근에는 기술이 단순히 비즈니스 효율성을 높이는 것뿐만 아니라 비즈니스 자체를 변화시킬 정도로 영향력이 커지고 있는 만큼, 이러한 변화에 적기에 대응하기 위해 마이크로서비스 아키텍처 형태의 개발 및 운영이 필요합니다.



마이크로서비스 아키텍처는 하나 또는 소수의 큰 시스템을 작은 크기의 서비스로 나누고, 서비스 별로 개별적인 데이터 저장소를 소유하고 독립된 실행 환경을 구축함으로써 서비스 단위로 독립적인 개발, 빌드, 테스트, 배포, 모니터링, 라우팅, 확장이 가능한 아키텍처를 말하는데요. 기업이 성공적으로 마이크로서비스 아키텍처를 도입하기 위해서는 새로운 기술에 대한 역량 확보는 물론 이에 적합한 조직적 변화가 모두 이루어져야 합니다.

앞으로 2회에 걸쳐 마이크로서비스에 대해 소개해 드릴 예정인데요. 오늘은 마이크로서비스의 정의와 특징, 주목받게 된 배경 및 마이크로서비스 도입의 주요 목적에 대해 살펴보겠습니다.

 마이크로서비스의 정의와 특징


미국의 정보기술 연구 및 자문 회사인 가트너(Gartner)에 따르면 마이크로서비스 아키텍처는 소프트웨어 아키텍처의 하나로써 어플리케이션이 여러 개의 작고 독립적으로 배포가 가능한 서비스로 구성되어 있는 것을 의미합니다.


마이크로서비스 아키텍처는 여러 마이크로서비스를 조합하여 어플리케이션을 구현하는 방식인데요. 표준 API/Protocol을 통해 서비스들 간에 필요한 최소한의 데이터를 주고 받으므로, 개발언어에 관계 없이 통신할 수 있습니다. 따라서, 각 서비스를 독립적으로 수정 및 업데이트 할 수 있다는 것이 가장 큰 특징이라고 할 수 있습니다.


l Monolithic Architecture와 Microservice Architecture 비교


위 그림은 현재 많이 활용되는 N-Tier 구조의 모놀리식 아키텍처(Monolithic Architecture)와 마이크로서비스 아키텍처를 비교한 것인데요. 모놀리식 아키텍처는 전체 어플리케이션을 하나의 통합된 패키지로 개발•배포하는 방식이고, 마이크로서비스 아키텍처는 어플리케이션을 개별 서비스 단위로 개발•배포하는 방식입니다. 


아래의 표에서 보듯이 마이크로서비스 아키텍처는 서비스별 독립성이 보장되므로 서비스별로 개발, 배포 및 테스트가 가능하여 빠르게 업데이트 할 수 있습니다. 


서비스 단위로 Scale-Out을 진행하므로 더욱 정교한 확장이 가능하지만 배포, 테스트, 관리에 대한 복잡성이 높아지는 단점도 있습니다.


l Monolithic과 Microservice의 장단점 비교


 마이크로서비스가 주목받게 된 배경


마이크로서비스 아키텍처는 2014년에 마틴 파울러(Martin Fowler)와 제임스 루이스(James Lewis)가 마이크로서비스 아키텍처로 인한 새로운 패러다임에 대한 글을 블로그에 포스팅하면서 본격적으로 알려졌습니다.


가트너에서는 마이크로서비스 아키텍처가 높은 Business Impact를 가져올 것이라고 얘기하고 있으며, Amazon, Netflix, Google, eBay 등 글로벌 기술 선도 기업들은 이미 이 키워드가 나오기 전부터 마이크로서비스 아키텍처를 도입했습니다. 현재는 이뿐만 아니라 금융, 공공 등 다양한 산업에서도 적용사례가 나오고 있습니다. 국내에서는 아직 소수의 B2C 기업만 채택한 것으로 보이는데요. 대표적으로 SK플래닛, 쿠팡 등이 있습니다.


마이크로서비스 아키텍처는 개발생산성 향상과 운영자동화를 통해서 새로운 서비스를 빠르게 출시할 수 있고, Business Agility를 추구할 수 있으므로 디지털 비즈니스를 발굴하고 디지털 기업으로 전환하려는 기업들이 꼭 주목해야 하는 개념입니다.


 마이크로서비스 도입의 주요 목적


마이크로서비스 아키텍처 도입의 주요 목적은 3가지로 볼 수 있습니다.


① 개발 생산성(Development Agility)


첫 번째로 개발 생산성입니다. 마이크로서비스는 서비스를 충분히 작은 크기로 나누어 독립적으로 개발하고, 마이크로서비스 간에는 API 규약에 따라 상호 연계합니다. 따라서 개발자는 해당 비즈니스 로직에만 집중해서 개발할 수 있으며, 테스트 시에도 연관 마이크로서비스만 테스트를 수행하면 되므로 개발•테스트•배포 일정이 대폭 줄어들 수 있습니다.


기존의 모놀리식 아키텍처는 일부 기능을 수정할 때도 모듈 간 영향도 평가가 어렵고 전체 시스템 단위로 소스코드 통합, 테스트가 이루어지므로, 복잡도가 증가하고 시스템 Delivery 시간이 많이 소요되는데요. 이와는 대조되는 부분입니다.


② 배포 유연성(Deployment Flexibility)


두 번째는 배포 유연성입니다. 기존의 모놀리식 아키텍처는 작은 변경에도 전체를 다시 테스트•배포하는 구조이므로 통합 스케줄에 맞추어야 했지만, 마이크로서비스 아키텍처는 개별 서비스 단위로 개발•패키징•빌드•테스트•배포가 가능하므로 각 서비스를 각자의 로드맵에 따라 개발 및 배포를 할 수 있어 더욱 유연하게 스케줄을 가져갈 수 있습니다.


l Monolithic과 Microservice의 개발-빌드-테스트-릴리즈 비교


③ 정교한 확장성(Precision Scalability)


마지막으로 정교한 확장성입니다. 아래 그림의 Scalability Cube는 시스템 확장 방법 3가지를 나타낸 것입니다. X-axis는 전체 시스템 복제를 통한 확장을 뜻하고 Z-axis는 데이터를 Row 단위로 분리하여 데이터 접근을 용이하게 하는 확장 구조입니다. 


l Scalability Cube (출처: Martin L. Abbott, ‘The Art of Scalability’, 2015)


마지막으로 Y-axis는 시스템 내의 기능을 여러 개로 분리하여 개별 서비스 접근 및 확장을 용이하게 하는 구조인데요. 마이크로서비스는 이 Y-axis를 확장하는 개념으로서 시스템의 기능을 분할하여 서비스 단위별로 독립적으로 확장하는 것을 뜻하며 리소스를 더욱 효율적으로 활용할 수 있다는 이점이 있습니다. 


이어서 다음 시간에는 마이크로서비스의 기술적인 측면과 함께 기업의 적용 사례 등을 살펴보겠습니다. 


글 | LG CNS 정보기술연구원 기술전략팀



* 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 LG CNS 블로그에 저작권이 있습니다.

* 해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.