회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
애플리케이션의 아키텍처 스타일(모놀리식 vs 마이크로서비스)에 대한 선택은 트렌드나 경쟁사의 특징을 따르기보다, 애플리케이션의 목표와 비즈니스 요구 사항에 따라 달라진다. 하지만 마이크로서비스 아키텍처가 대세로 떠오르면서 여러 프로젝트에 활발하게 채택되고 있다. 새롭게 구축하는 애플리케이션은 마이크로서비스로 전환해야 한다는 이야기도 자주 나오고 있다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
애플리케이션의 아키텍처 스타일(모놀리식 vs 마이크로서비스)에 대한 선택은 트렌드나 경쟁사의 특징을 따르기보다, 애플리케이션의 목표와 비즈니스 요구 사항에 따라 달라진다. 하지만 마이크로서비스 아키텍처가 대세로 떠오르면서 여러 프로젝트에 활발하게 채택되고 있다. 새롭게 구축하는 애플리케이션은 마이크로서비스로 전환해야 한다는 이야기도 자주 나오고 있다.
모놀리식 애플리케이션은 소프트웨어 개발을 위한 기본 접근 방식이다. 그렇다면 마이크로서비스가 대세가 된 현재 모놀리식 접근 방식을 버려야 할까? 만약 모놀리식 애플리케이션에서 마이크로서비스로 전환하면 어떤 이점이 있을까? 마이크로서비스로 애플리케이션을 만들면 비즈니스의 이점은 무엇일까? 이번 글에서는 모놀리식과 마이크로서비스 아키텍처를 비교하여 장단점을 살펴보고, 비즈니스에 적합한 소프트웨어 아키텍처를 선택하는 방법에 대해 알아보자.
모놀리식 아키텍처는 단일 코드 베이스의 애플리케이션이다. 예를 들어 Java로 작업할 때, 전체 애플리케이션은 단일 코드로 작성되어 단일 데이터베이스에 연결된다. 이것은 매우 일반적인 접근 방식으로, 거의 모든 개발자가 코딩을 시작할 때 이런 종류의 아키텍처에서 작업하게 된다. 그래서 모놀리식으로 개발한 애플리케이션은 마이크로서비스 아키텍처보다 구현이 쉽고, 덜 복잡하다는 장점이 있다.
먼저 모놀리식 아키텍처의 장점을 살펴보자.
다음으로 모놀리식 아키텍처의 단점을 살펴보자.
모놀리식 아키텍처는 다음과 같은 상황에서 사용할 수 있다.
마이크로서비스 아키텍처에서는 애플리케이션을 작은 서비스로 분할하고, 각 서비스가 서로 독립적이라(느슨하게 결합) 기술에 구애받지 않는다. 그래서 각각 고유한 데이터베이스를 소유할 수 있다. 그로 인해 많은 이점을 제공하지만, 문제도 많고 복잡성을 함께 수반한다. 때문에 마이크로서비스 아키텍처로 프로젝트를 진행하려면 많은 경험이 필요하다.
마이크로서비스 아키텍처는 다음과 같은 장점이 있다.
일반적으로 마이크로서비스 아키텍처에서 작업하는 것은 모놀리식 아키텍처에서 작업하는 것보다 훨씬 더 복잡하다. 다음은 마이크로서비스 아키텍처의 단점이자 과제이다.
마이크로서비스 아키텍처는 다음과 같은 상황에서 유용하다.
확장성은 마이크로서비스에서만 유효한 것 같지만, 모놀리식도 확장이 가능하다. 다만 모놀리식 애플리케이션은 여러 복사본을 배포하는 형태로 확장할 수 있는 것에 비해, 마이크로서비스는 더 적은 리소스로도 확장할 수 있어 훨씬 유리하다.
앞서 모놀리식 아키텍처는 복잡성이 낮다고 설명했다. 이에 비해 마이크로서비스는 애플리케이션 복잡성에 따라 소스 코드, 프레임워크 및 기술이 포함되고, 여러 서비스가 API를 통해 서비스 간 통신하는 형태로 구축된다. 그래서 전체 아키텍처에 대한 높은 수준의 관리와 기술에 대한 이해가 필요하다.
마이크로서비스는 다른 서비스와 통신할 때, 네트워크를 통해 데이터를 보내거나 받는다. 반면 모놀리식은 모든 서비스가 동일한 워크플로우 내에 있기 때문에 네트워크 대기 시간이 발생하지 않는다. 이런 이유로 마이크로서비스는 모놀리식보다 성능이 느리다.
모놀리식은 단 하나의 서버로 구성된다. 즉, 장애가 발생하면 전체 애플리케이션이 다운된다. 반면 마이크로서비스는 하나가 실패하면 장애 격리를 통해 애플리케이션을 유지할 수 있다.
복잡한 애플리케이션을 만들려면 필요한 지식 외에도 경험과 시간, 비용이 준비되어야 한다. 아래는 모놀리식과 마이크로서비스를 비교한 표이다.
| 모놀리식 아키텍처 | 마이크로서비스 아키텍처 |
쉽게 배포할 수 있는가? | O | X |
빠르게 배포할 수 있는가? | X | O |
비즈니스를 확장할 수 있는가? | X | O |
개발 시 리소스가 적게 드는가? | O | X |
아키텍처를 결정하기까지는 여러 사람의 의견이 오고 갈 것이다. 어떤 사람들은 처음엔 모놀리식으로 구축한 다음, 마이크로서비스로 전환해야 한다고 생각한다. 하지만 목표가 마이크로서비스로 개발하는 것이라면 굳이 모놀리식으로 시작할 필요는 없다. 가장 적합한 아키텍처를 선택하려면 다음의 요소들을 고려해야 한다.
이와 관련해 얼마 전 스타트업을 대상으로 ‘스타트업에 가장 적합한 아키텍처는?’라는 주제로 강의를 진행하게 되어, 일부 관련 자료를 첨부했다. 적합한 아키텍처를 선택하기 전, 우선 스타트업에 대한 정의가 필요했다. 스타트업은 첫 번째 그림에서 A 영역에 위치하고 있고, 높은 성장 목표와 확장 가능한 비즈니스 모델을 검증해야 하는 입장이다. 즉, 비즈니스 모델이 시장에서 인정받아야 가치를 창출할 수 있는 것이다.
스타트업이라면 결국 비즈니스 모델을 시장에서 인정을 받아야 하는 목적은 동일하다. 트위터나 우버의 경우 모놀리식 기반의 MVP로 앱을 개발한 후 비즈니스 모델의 가치를 인정받고, 비즈니스가 확장됨에 따라 마이크로서비스로 전환한 사례이다. 이런 사례들을 참고해 먼저 모놀리식으로 개발하는 것을 권고한다. 그러나 일반 모놀리식이 아닌 프로세스 내부의 코드가 모듈로 분해되는 모듈식 모놀리스(Modular Monolith)를 추천하고 있다.
아키텍처는 여러 가지 비즈니스 상황을 고려해 선택해야 한다. 최근 마이크로서비스가 대세라지만, 맞지 않는 상황도 존재하기 때문이다. 어떤 아키텍처를 사용해야 하는지 막막하다면, 다음 몇 가지 질문을 통해 현재 상황을 분석해보자.
위의 질문에 대한 대답이 모두 Yes라면 마이크로서비스 아키텍처가 더 적합할 것이다.
개발자라면 누구나 내가 설계하고 작성한 코드가 비즈니스에 큰 가치를 줄 때 성취감을 느낄 것이다. 이것은 우리가 기술을 다루지만, 항상 비즈니스를 염두에 두고 고민해야 함을 뜻한다. 이번 글을 참고하여, 현 비즈니스 상황에 최적화된 아키텍처를 선택할 수 있길 바란다.
요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.