Architecture
Software Architecture
🏗️[Architecture] Monolithic Architecture란 무엇일까요?
📌 Intro.
- ↘︎ 모놀리식 아키텍처(Monolithic Architecture)는 하나의 커다란 단일 애플리케이션으로 구성되는 소프트웨어 설계 방식임.
- ↘︎ 모든 기능(예: 사용자 인터페이스, 비즈니스 로직, 데이터 접근 계층 등)이 하나의 코드베이스와 하나의 실행 환경에서 작동함.
✅1️⃣ 주요 특징.
-
1. 단일 코드베이스
- ↘︎ 모든 기능이 하나의 코드베이스에 포함됨.
-
2. 단일 빌드 및 배포
- ↘︎ 애플리케이션 전체가 하나의 단위로 빌드되고 배포됨.
-
3. 모든 모듈이 강하게 결합됨 (Tightly Coupled)
- ↘︎ 애플리케이션의 각 부분이 긴밀하게 연결되어 있어 부분적으로 수정 및 배포하기 어려움.
-
4. 중앙화된 데이터베이스
- ↘︎ 하나의 데이터베이스를 사용하여 모든 기능을 지원함.
-
5. 규모 확장 어려움
- ↘︎ 수평 확장(Scale-Out)이 어려워 주로 수직 확장(Scale-Up, 서버 성능 개선)을 통해 확장함.
✅2️⃣ 장점.
-
👍 간단한 개발 및 배포
-
👍 성능 최적화
- ↘︎ 한 공간에서 모든 기능이 실행되어 네트워크 오버헤드가 적음.
-
👍 통합된 테스트
- ↘︎ 모든 기능이 한곳에 있기 때문에 단일 환경에서 테스트하기 용이함.
-
👍 디버깅 용이
- ↘︎ 문제가 발생하면 하나의 애플리케이션 내에서 원인을 찾기 쉬움.
✅3️⃣ 단점.
-
👎 규모 확장 어려움
- ↘︎ 특정 기능만 확장하기 어렵고 전체 애플리케이션을 확장해야 함.
-
👎 유지보수 어려움
- ↘︎ 코드베이스가 커지면 새로운 기능 추가나 버그 수정이 어려워질 수 있음.
-
👎 부분 배포 불가능
- ↘︎ 작은 변경 사항도 전체 애플리케이션을 다시 빌드 및 배포해야함.
-
👎 기술 스택 제한
✅4️⃣ 사용 사례.
-
초기 스타트업 : 간단한 아키텍처로 빠르게 MVP(Minimum Viable Product)를 개발할 때.
-
단일 팀 개발 : 하나의 팀이 전체 애플리케이션을 관리할 때.
-
작은 규모의 프로젝트 : 복잡도가 낮고 요구사항이 명확한 경우.
✅5️⃣ Monolithic VS Microservice 비교.
특징 |
모놀리식 아키텍쳐 |
마이크로서비스 아키텍처 |
구성 방식 |
단일 코드베이스 및 애플리케이션 |
여러 개의 독립적인 서비스 |
배포 단위 |
전체 시스템 하나로 배포 |
각 서비스 독립 배포 |
확장 방식 |
수직 확장 (Scale-Up) |
수평 확장 (Scale-Out) |
기술 스택 |
단일 기술 스택 |
각 서비스별 다양한 기술 사용 가능 |
유지보수 |
대규모 시스템은 유지보수 어려움 |
각 서비스별로 독립 유지보수 |
🚀 정리.
- ↘︎ 모놀리식 아키텍처(Monolithic Architecture)는 작은 규모의 애플리케이션이나 초기 개발 단계에 적합.
- ↘︎ 하지만 애플리케이션의 복잡도가 증가하더나 여러 팀이 협업해야 하는 경우 마이크로서비스 아키텍처(Microservice Architecture)로 전환하는 것이 더 나을 수 있다.
-
☝️ 핵심 포인트 :
- ↘︎ 초기에는 빠르고 간단한 개발 가능.
- ↘︎ 확장성과 유지보수에 한계가 있을 수 있음.