2024.01.11
기업들은 더 안정적이고 유연한 IT 운영을 위한 고민을 거듭하고 있습니다. 이 가운데 주목받기 시작한 것이 바로 '마이크로서비스아키텍처(MSA)'입니다. 특히 기업의 클라우드 전환이 가속화될수록 그 중요성이 커지고 있죠. 오늘 포스팅에서는 MSA가 무엇인지, 어떤 매력이 있는지에 대해서 알아보도록 하겠습니다.
MSA에 대해 본격적으로 설명하기 전, 우선 '모놀리틱 시스템'에 대해 설명드리겠습니다. 모놀리틱 시스템이란 소프트웨어 애플리케이션을 하나의 단일한 독립 시스템으로 구축하는 소프트웨어 아키텍처 스타일을 말합니다. 즉 하나의 애플리케이션에 모든 비즈니스 로직을 통째로 모아놓은 구조이죠. 모놀리틱 시스템은 소규모 프로젝트에 적합하고, 개발/빌드/배포/테스트가 용이하며 인프라 구조가 단순하여 운영 비용 부담이 없다는 장점이 있었습니다.
하지만 기업의 시스템 규모가 점점 커지고 복잡해지면서 모놀리틱 시스템의 단점이 부각되기 시작했습니다. 작은 수정사항에도 전체 빌드 및 배포가 이뤄져야 해서 시간이 오래 걸리고, 많은 양의 코드가 몰려 있어 유지보수가 어려웠죠. ▲일부 오류가 전체에 영향을 미치는 점 ▲스케일 아웃 설정이 복잡한 점 역시 문제가 되었습니다.
MSA는 이러한 모놀리틱 시스템의 대안으로 등장하였습니다. MSA는 소프트웨어 시스템을 여러 작은 독립적인 서비스로 분할하여 개발하고 배포하는 방식입니다. 하나의 애플리케이션을 구분 가능한 여러 개의 작은 서비스로 나눠 사용자의 요청을 처리하는 구조이죠.
MSA는 각 서비스별 소스 코드 수정이 쉽고, 수정한 서비스만 배포 가능하며, 배포 시 전체 서비스 중단이 없습니다. 또한 장애 시 해당 서비스에만 한정되고, 전체 장애로 확장될 가능성이 적습니다. 스케일 아웃이 필요한 경우에는 해당 서비스만 추가하여 리소스의 효율적 사용이 가능합니다.
모놀리틱 시스템은 초기 생산성이 높지만, 시스템 복잡도가 진행될수록 생산성이 급격히 떨어지기 시작합니다. MSA의 경우 초기 생산성은 모놀리틱 시스템보다 떨어지지만, 시스템 복잡도가 진행되어도 생산성이 소폭 감소할 뿐 거의 유지된다고 볼 수 있습니다. 클라우드 기반의 복잡한 시스템 구축 시 MSA의 필요성이 커지는 이유입니다.
MSA의 장점에 대해 더 자세히 살펴보겠습니다.
① 개발 유연성의 한계 극복
기존 모놀리틱 방식은 모든 구성요소가 하나의 애플리케이션으로 구성되어 있어 변화에 대한 대응이 어렵습니다. 새로운 기능 추가를 위해 전체를 빌드/배포해야 하는 문제가 있었죠. MSA는 독립적 서비스 단위 구성으로 수정 및 빌드/배포가 신속히 가능합니다.
③ 배포/롤백 리스크의 획기적 감소
MSA는 여러 개의 서비스로 구성되어 있습니다. 이 중 수정이 필요한 부분만 빠르게 찾아 정확한 대응이 가능합니다.
또한 쿠버네티스 기능을 사용하여 서비스 무중단 배포를 할 수 있습니다.
④ 장애 격리의 신뢰성
모놀리틱은 단일 애플리케이션으로 이뤄져있어 특정 부분에 문제가 발생하면 전체 시스템 장애로 이어지게 됩니다. MSA는 각각의 서비스가 약한 결합도를 가지고 있기 때문에, 특정 서비스 장애가 타 서비스에 영향을 최소로 주거나 아예 주지 않도록 구성이 가능합니다. 이를 통해 장애 서비스만 빠르게 복구할 수 있습니다.
⑤ 리소스의 효율적 사용
모놀리틱은 단일 구조로 되어 있기에, 통으로 확장이 필요해 리소스의 낭비가 발생하게 됩니다. 이에 비해 MSA 시스템은 사용자 부하 발생시 부하 발생 서비스만 스케일 아웃 기능을 통한 확장이 가능하여 리소스를 효율적으로 사용할 수 있습니다.
MSA를 구성하는 주요 요소는 다음과 같습니다.
① Config Management: MSA 구조는 서비스의 재빌드/재부팅 없이 설정사항을 반영합니다.
② Service Discovery: 쿠버네티스 기능을 통해 여러 개의 서비스 상태를 파악할 수 있고, 서비스 검색 및 등록 등 관리가 용이합니다.
③ API Management: API 게이트웨이는 외부 요청과 내부 서비스 간 통신을 관리합니다. 클라이언트 접근 요청을 일원화합니다.
④ Centralized Logging: 서비스 별로 로그가 나눠져있는 가운데, 이 로그를 중앙 집중하여 한 곳에서 관리할 수 있습니다.
⑤ Distributed Tracing: 마이크로서비스 간의 호출을 추적합니다.
⑥ Centralized Monitoring: 여러 서비스의 정보를 중앙집중하여 복잡성을 줄이고 관리를 쉽게 합니다.
⑦ Resillience & Fault Tolerance: MSA 구조에서 한 서비스의 오류가 다른 서비스에 파급 효과를 발생시키지 않도록 하기 위한 계단식 실패 방지 구조입니다.
⑧ Auto Scaling & Self Healing: 부하 발생 시 자동 스케일 아웃 설정이 가능하고, 서비스 장애시 복구 자동화를 통해 서비스 관리를 효율적으로 할 수 있습니다.
MSA 아키텍처는 기업의 IT 운영에 있어서 중요한 역할을 합니다. 특히 클라우드 네이티브 환경에 적합한 아키텍처인 MSA는 기업들이 클라우드의 유연성과 확장성을 최대한 활용하여 애플리케이션을 개발하고 운영하는 데 도움을 줍니다. 기업들은 MSA 아키텍처의 도입을 통해 유연성, 확장성, 유지보수의 용이성, 개발속도 향상 등의 이점을 얻을 수 있습니다.
메타넷글로벌은 식품, CPG, 제조 등 다양한 산업 내 선도기업 고객을 대상으로 Application Management Outsourcing 서비스를 제공합니다. 플랫폼 기반의 선진 아키텍처를 구현하기를 원하는 고객사에 MSA 기반의 시스템을 구축한 다수의 경험을 보유하고 있습니다.
<작성: 메타넷글로벌 SAP Managed SVC Group>