Modular Monolithic Architecture
하나의 서비스에서 각 로직을 모듈로 나누는 방식. 각 모듈은 독립적이며, 격리된 구조이다
각각의 로직을 모듈화하여 필요한 모듈끼리만 서로 의존하는 관계로 만든다
이유
- 복잡성 관리
MSA는 서비스 간의 통신, 데이터 일관성 유지, 배포 파이프라인 등에서 복잡성을 증가시키는데 MMA는 모듈 간 종속성이 단순해지기 때문에 복잡성이 낮다
- 성능 최적화
MSA의 경우 마이크로 서비스간 통신 오버헤드가 존재할 수 있는데 MMA는 모놀리식 아키텍처의 장점인 동일 프로세스 내 호츨이기 때문에 성능이 더 좋다
- 비용절감
MSA의 경우 각각의 서비스가 독립적으로 배포되고 운영되어야하기 때문에 인프라 및 운영 비용이 증가한다 MMA는 모놀리식의 구조를 일부 가져가기 때문에 비용이 덜 든다 (모놀리식 보다는 더 들어감)
- 개발 및 디버깅 용이성
하나의 코드베이스에서 작업하는 모놀리식의 장점을 그대로 가져가면서 필요한 서비스들끼리 모아놓은 형태로 MSA의 구조를 가지기 때문에 관리에 용이하다
장점
- 단일 애플리케이션으로 개발, 테스트, 배포가 단순해진다
- 서비스 단위로 나눠지기 때문에 데이터 관리가 쉬워지고 트랜잭션 관리가 용이하다
- 인프라 및 운영 비용이 절감된다
- 모놀리식 보다 유지 관리가 용이하고 확장성이 뛰어나면서 MSA 보다 덜 복잡한 구조를 가진다
단점
- 모듈별 의존 관계 관리가 복잡하다
- 특정 부분만 스케일링하는 것이 어렵다
- 하나의 작은 변경이 전체 애플리케이션의 재배포를 필요로 할 수 있다
- 한 모듈이 동일한 기술 스택을 사용해야 하므로 부분적으로 새로운 기술을 도입하기 어렵다
Reference
'Devops > DevOps' 카테고리의 다른 글
AI를 활용한 개발팀 성과 향상을 위한 5가지 전략 (0) | 2024.08.17 |
---|---|
무료 DDNS 만들기 (0) | 2024.08.17 |
서버리스 서비스 비교 (1) | 2024.08.12 |
데브옵스 통합 과정에서 벌어지는 10가지 실수 (0) | 2024.06.26 |
뽑지 말아야할 CTO (0) | 2024.04.27 |