모놀리식 아키텍처
- 단일 코드 베이스의 애플리케이션
- 모든 개발자가 코딩을 처음 시작할 때 시작하는 방식 (보편적)
- 모든 서비스가 한 데이터 베이스 안에 존재
마이크로 서비스 아키텍처
- 애플리케이션을 작은 서비스로 분할하여 각 서비스가 서로 독립적(느슨한 결합)이라 기술에 구애받지 않음
- 각각의 서비스는 각각의 고유한 데이터베이스를 소유
모놀리식 아키텍처 장단점
장점 | 단점 |
단순성 → 모든 코드가 단일 베이스 → 변경 사항 발생 시 모든 코드가 한 곳에 존재 |
애플리케이션의 규모가 커질 경우 유지보수 어려움 |
간편한 배포 → 단일 프로젝트로 배포 |
유연하지 않은 확장성 → 애플리케이션의 특정 부분 요청 시 해당 부분만 확장할 수 없고 전체 애플리케이션 확장 |
보편성 → 대부분의 개발자가 경험 |
대규모 팀 작업이 어려움 → 모든 팀이 동일한 코드, 동일한 프로젝트에서 작업하여 코드 병합의 충돌 가능성이 높고, 기능 변경 시 다른 팀작업에 영향을 줄 가능성 존재 |
디버깅 쉬움 | 기술 사용 제한 → 다른 기술로 변경이 어려워 오랜 기간 동일한 기술을 사용 |
쉬운 테스트 | |
쉬운 모니터링 |
마이크로 서비스 아키텍처 장단점
장점 | 단점 |
유연한 확장 → 다른 서비스와 독립적이기 때문에 특정 서비스만 확장 가능 |
개발 생산성 필요 → 여러 개의 마이크로 서비스 중 하나에 새로운 기능을 구현해야 할 때, 다른 서비스에 접근할 수 있도록 로컬에서 많은 애플리케이션을 실행할 수 있는 환경 구성 |
독립적인 배포 → 느슨하게 결합되어 있어 하나의 마이크로 서비스만 배포 가능 → 전체 애플리케이션의 동작을 멈출 필요가 없음 |
디버깅의 어려움 → 테스트를 위해 둘 이상의 마이크로 서비스를 실행해야 해서 디버깅이 어려울 수 있음 |
단일 실패 지점 제거 → 여러 소규모 서비스로 분할하여, 전체에 영향을 미치는 단일 실패 지점 제거 |
마이크로 서비스간 통신 → 동기/비동기 통신을 고려해야하므로 애플리케이션의 복잡성 증가 |
전체 서비스 중단 위험 감소 → 특정 마이크로 서비스가 중단되더라도 다른 서비스는 정상 작동 가능 |
오류 처리 → 두 개 이상의 마이크로 서비스를 사용해 요청 처리 할 때 첫 번째 마이크로 서비스에 대한 요청에서 문제 발생 시 작업을 이전 상태로 돌려두는 것을 고려 → A 서비스의 DB와 B 서비스의 DB의 CRUD를 하는 요청에서 문제 발생 시 양쪽 모두의 롤백 필요 |
다른 데이터베이스 소유 → 서비스마다 알맞는 데이터 베이스 사용 가능 Ex) A 서비스 : RDBMS / B 서비스 : NoSQL |
표준화 부족 → 공통 플랫폼이 없음 → 모든 오류 또는 문제를 모니터링할 수 있는 중앙 모니터링 체계를 갖춰야 함 |
다양한 기술 수용 가능 Ex) A 서비스 : Java / B 서비스 : Python |
오류 식별의 어려움 → 모놀리식 보다 훨씬 복잡하고 어렵고, 특히 비동기 통신일 때 더 어려움 |
민첩성 → 전체 애플리케이션에 영향을 주지 않고 새로운 것을 추가 가능 → 새 버전 배포가 매우 쉬움 |
'MicroService Architecture' 카테고리의 다른 글
[Spring Cloud] Netflix Eureka 개념, 용어 정리 및 사용 예제 (0) | 2024.08.20 |
---|---|
Service Discovery 개념, 종류, 특징 (0) | 2024.08.20 |
Spring Cloud란? (0) | 2024.08.20 |
API Gateway란? (0) | 2024.08.20 |
마이크로 서비스 설계 시 주의 사항 (0) | 2024.08.08 |