모놀리식 아키텍처 (Monolithic Architecture)
모놀리식 아키텍처는 모든 기능이 단일 코드베이스 내에 통합된 하나의 애플리케이션으로 구성된 아키텍처
모든 기능 모듈이 하나의 실행 파일 또는 디플로이먼트 단위로 패키징되고 배포된다.
특징
1. 단일 코드베이스 : 애플리케이션의 모든 기능과 모듈이 하나의 프로젝트로 구성
2. 단일 빌드 : 전체 애플리케이션이 하나의 빌드 프로세스로 빌드
3. 단일 배포 : 애플리케이션의 모든 부분이 함께 배포
4. 일관된 기술 스택 : 단일 언어와 프레임워크를 사용하여 개발
장점
1. 간단한 개발 및 배포 : 단일 코드베이스이기 때문에 설정, 빌드, 배포가 상대적으로 단순함
2. 일관된 성능 : 모든 기능이 하나의 프로세스에서 실행되므로 네트워크 호출에 의한 성능 저하 X
3. 디버깅 및 테스트 용이 : 모든 기능이 한 곳에 모여있어 디버깅과 테스트가 상대적으로 쉬움
단점
1. 확장성의 한계 : 특정 모듈만 확장하기 어렵습니다. 전체 애플리케이션을 확장 필요
2. 유연성 부족 : 특정 모듈만 업데이트하기 어렵고, 전체 애플리케이션을 재배포
3. 의존성 복잡성 : 모든 모듈이 하나의 코드베이스에 있기 때문에 의존성 관리가 어려울 수 있음
4. 장기 유지보수 문제 : 코드베이스가 커지면 유지보수가 어려워지고, 새로운 기능 추가가 복잡
마이크로서비스 아키텍처 (Microservices Architecture)
마이크로서비스 아키텍처는 애플리케이션을 작은 독립적인 서비스들로 분할하여 각 서비스가 독립적으로 배포 및 관리될 수 있도록 하는 아키텍처
각 서비스는 특정 도메인 기능을 담당하며, 독립적인 데이터베이스를 가질 수도 있다.
특징
1. 독립적인 서비스 : 각 서비스가 독립적으로 개발, 배포, 관리
2. 분산 시스템 : 서비스 간의 통신은 네트워크 호출을 통해 이루어짐
3. 자율적 팀 : 각 서비스는 독립적인 팀에 의해 개발될 수 있음
4. 폴리글롯 프로그래밍 : 각 서비스가 다른 언어와 기술 스택을 사용할 수 있음
장점
1. 확장성 : 특정 서비스만 독립적으로 확장할 수 있음
2. 유연성 : 특정 서비스만 독립적으로 업데이트할 수 있어 빠른 배포가 가능
3. 독립적인 배포 : 다른 서비스에 영향을 주지 않고 개별적으로 배포할 수 있음
4. 기술 선택의 자유 : 각 서비스는 가장 적합한 기술 스택을 사용할 수 있음
단점
1. 복잡한 분산 시스템 : 서비스 간 통신과 데이터 일관성 문제를 해결해야 함
2. 네트워크 성능 : 서비스 간의 네트워크 호출이 성능에 영향을 미칠 수 있음
3. 운영 복잡성 : 많은 서비스가 독립적으로 운영되기 때문에 모니터링과 관리가 복잡
4. 데이터 관리의 어려움 : 분산 데이터베이스를 관리하고 트랜잭션을 유지하는 것이 어려움
비교

선택 기준
모놀리식 아키텍처를 선택하는 경우
- 작은 팀으로 시작하는 작은 프로젝트
- 복잡하지 않은 애플리케이션
- 빠른 초기 개발과 배포가 중요한 경우
마이크로서비스 아키텍처를 선택하는 경우
- 대규모 프로젝트
- 독립적으로 개발되고 확장되어야 하는 여러 모듈
- 다양한 기술 스택을 사용할 필요가 있는 경우
- 자율적인 팀 구성과 빠른 배포 주기가 필요한 경우
'CS' 카테고리의 다른 글
웹 공격의 종류 및 개념 (0) | 2024.06.19 |
---|---|
OSI 7계층 모델 (0) | 2024.06.17 |
WebRTC와 시그널링 (0) | 2024.05.23 |
네트워크 프로토콜과 통신 개념 (0) | 2024.05.17 |
소켓(Socket) 통신 (0) | 2024.05.16 |