본문 바로가기
Backend

모듈러 모놀리식 아키텍처 - MSA의 새로운 방향

by 코드김치 2023. 12. 20.

안녕하세요! 오늘은 최근 소프트웨어 개발 분야에서 주목받고 있는 모듈러 모놀리식 아키텍처(Modular Monolithic Architecture, MSA)에 대해 이야기해보려고 합니다.

MSA는 전통적인 모놀리식과 마이크로서비스 아키텍처의 중간 지점에 위치한 개발 방식으로, 효율성과 유연성을 동시에 추구합니다.

  • 모노리식은 관리가 단순하고 성능이 좋지만 확장성과 유연성에 한계가 있습니다.
  • 마이크로서비스는 독립성과 확장성이 뛰어나지만 관리 복잡성이 높습니다.
  • 모듈러 모노리식 아키텍처의 중간 지점에 위치하며, 관리 용이성과 모듈화된 구조의 이점을 제공합니다.

 

1. Monolithic Architecture 

장점:

  • 단순한 개발 및 배포: 전체 애플리케이션을 하나로 관리합니다.
  • 성능: 내부 호출이 빠르고 간단합니다.
  • 초기 개발 용이: 작은 규모의 애플리케이션에 적합합니다.

단점:

  • 확장성 제한: 전체 애플리케이션을 확장해야 합니다.
  • 유연성 부족: 새로운 기술 적용이 어렵습니다.
  • 고장  전체 시스템 영향: 하나의 오류가 전체 시스템에 영향을   있습니다.

2. MicroService Architecture 

장점:

  • 독립적 배포 및 확장: 각 마이크로서비스는 독립적으로 배포 및 확장 가능합니다.
  • 기술 다양성: 서로 다른 기술 스택을 사용할 수 있습니다.
  • 고장 격리: 하나의 서비스에 문제가 생겨도 전체 시스템에 영향을 덜 미칩니다.

단점:

  • 복잡한 네트워킹 및 통신: 서비스 간의 통신이 복잡해질 수 있습니다.
  • 데이터 관리 어려움: 데이터 일관성 유지가 어렵습니다.
  • 개발  운영 복잡성 증가: 여러 서비스 관리 필요.

3. Modular monolithic Architecture

 

장점:

  • 모듈화로 관리 용이: 기능별로 모듈화되어 관리가 용이합니다.
  • 단순한 배포 및 운영: 모노리식의 장점을 유지하면서도 모듈화된 구조를 가집니다.
  • 점진적인 마이그레이션: 필요에 따라 모듈을 마이크로서비스로 분리할 수 있습니다.

단점:

  • 모듈 간의 강한 연결성: 모듈 간의 종속성 관리 필요.
  • 규모가 커질 수록 복잡성 증가: 큰 규모의 애플리케이션에서는 관리가 어려워질 수 있습니다.
  • 기술적 제한성: 전체 애플리케이션이 동일한 기술 스택을 사용해야 있습니다.

 

 

 

모듈러 모노리식 관련 서비스 링크

1. 모듈러 모노리식 아키텍처를 위한 스프링부트  

https://github.com/spring-projects/spring-modulith

  • Spring Modulith 모듈러 모노리식 아키텍처를 위한 Spring Boot 기반 프레임워크입니다. 프레임워크는 애플리케이션을 느슨하게 결합된 모듈로 구성하는 도움을 주어, 모듈이 독립적으로 개발 테스트될 있도록 합니다. 이를 통해 모듈 간의 명확한 경계를 설정하고, 의존성 관리를 용이하게 하며, 필요에 따라 개별 모듈을 마이크로서비스로 쉽게 마이그레이션할 있는 구조를 제공합니다



2. 서비스 위버 (배포 및 서비스간 통신 관련)

https://serviceweaver.dev/

 

Service Weaver

<!-- Copyright 2022 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless requir

serviceweaver.dev

- Service Weaver는 분산 애플리케이션을 개발, 배포 및 관리하기 위해 설계된 프레임워크 

- 개발자는 최소한의 명령으로 애플리케이션을 로컬에서 실행하고 클라우드에 배포 가능하다.

- 프레임워크는 상호 작용을 위해 Go 인터페이스로 표시되는 구성 요소를 활용한다. 

[장점]

  • 분산 애플리케이션 개발 간소화: 복잡한 네트워킹 세부사항을 추상화하여 분산 실행 기능을 제공하면서도 단일체 시스템 개발 경험을 제공합니다.
    • 개발자들이 분산 시스템을 개발할  네트워크 구성이나 통신에 대한 복잡한 고려사항 없이, 마치 하나의 일체형 시스템을 개발하듯이 편리하게 작업할  있다는 의미이다. , Service Weaver 분산된 컴포넌트 간의 복잡한 통신과 네트워크 관리를 내부적으로 처리함으로써 개발자가 보다 직관적이고 단순한 방식으로 분산 애플리케이션을 개발할  있도록 도와준다. 
  • 원활한 로컬 및 클라우드 배포: 최소한의 명령어로 로컬에서 애플리케이션을 실행하고 클라우드로 배포할 수 있습니다.
  • 하위 호환성 보장: RPC 프로토콜을 사용하여 구성요소 간의 통신을 하위 호환성을 유지하며 관리합니다.
  • 네트워킹, 직렬화, 구성요소 복제  확장 관리: Service Weaver 이러한 기능들을 자동으로 처리합니다.

 

 

MSA는 소프트웨어 개발에 있어 효율성과 유연성을 동시에 제공하는 현대적인 접근 방식입니다. 각 모듈의 독립성과 전체 애플리케이션의 통합성을 조화롭게 유지하며, 프로젝트의 규모와 요구에 따라 유연하게 적용할 수 있습니다.

 

 

'Backend' 카테고리의 다른 글

깃허브 404?  (1) 2024.02.07