마이크로서비스 아키텍처(Microservices Architecture)
- 개념
- 애플리케이션을 여러 개의 작은 독립적인 서비스로 분리하여 개발하는 방법론
- 각 서비스는 특정 기능이나 비즈니스 도메인을 담당, 독립적으로 배포되고 운영됨
- 서로 다른 기술 스택을 사용할 수 있음
- API를 통해 통신함
- 특징
- 독립적인 배포 및 개발
- 작은 단위의 서비스
- 다양한 기술 스택 사용 가능
- 자율적인 팀
- 복잡한 관리 필요
- 확장성 : 특정 서비스에만 확장을 적용할 수 있어 자원 활용이 효율적임
모놀리식 아키텍처(Monolithic Architecture)
- 개념
- 하나의 거대한 애플리케이션으로 모든 기능을 통합하여 개발하는 방법론
- 모든 기능이 하나의 코드 베이스에서 실행됨
- 하나의 배포 단위로 운영
- 전통적인 애플리케이션 개발 방식으로 많이 사용함
- 특징
- 단일 코드베이스
- 일체형 배포
- 단순한 관리
- 높은 의존성 : 모든 기능이 강하게 결합되어 있어 작은 변화에도 전체 시스템에 영향을 미칠 수 있음
- 확장선 제한
장단점
마이크로서비스 아키텍처 | 모놀리식 아키텍처 | |
개발 및 배포 | 각 서비스마다 독립적인 개발과 배포 가능 개발 속도와 배포 주기가 빠름 |
모든 기능이 하나의 단위로 배포됨 배포 주기가 길고 변경 사항이 전체 시스템에 영향을 미침 |
확장성 | 개별 서비스별로 확장이 가능, 자원 활용이 효율적 특정 기능의 부하가 증가하면 해당 서비스만 확장 가능 |
전체 애플리케이션을 확장해야 하므로 자원 낭비 발생 가능 부분 확장 어려움 |
기술 스택 | 다양한 기술 스택 사용 가능 | 단일 코드베이스에서 동일한 기술 스택 사용해야 함 |
유지보수 | 서비스 간의 의존성이 낮아 유지보수에 용이 | 강하게 결합된 구조로 인해 유지보수가 어려움 |
복잡성 | 서비스 간의 통신, 데이터 일관성, 배포, 모니터링 등 관리 작업이 복잡함 분산 시스템의 복잡성으로 인해 장애 대응이 어려움 |
하나의 단위로 관리되므로 상대적으로 단순함 서비스 간의 통신이나 데이터 일관성 문제도 없음 |
장애 대응 | 특정 서비스에 장애가 발생해도 다른 서비스에는 영향을 주지 않으므로 부분적인 장애 복구 가능 | 하나의 기능에 장애가 발생하면 전체 시스템에 영향을 미침 |
'CS' 카테고리의 다른 글
[CS / 자료구조] 자료구조 정리 (0) | 2024.03.19 |
---|---|
[CS / 자료구조] List (0) | 2024.02.15 |
[CS / SW] 객체 지향 프로그래밍 (0) | 2023.10.24 |
[CS / SW] 애자일 방법론 (0) | 2023.10.24 |
[CS / SW] TDD (Test Driven Development) (0) | 2023.10.19 |
마이크로서비스 아키텍처(Microservices Architecture)
- 개념
- 애플리케이션을 여러 개의 작은 독립적인 서비스로 분리하여 개발하는 방법론
- 각 서비스는 특정 기능이나 비즈니스 도메인을 담당, 독립적으로 배포되고 운영됨
- 서로 다른 기술 스택을 사용할 수 있음
- API를 통해 통신함
- 특징
- 독립적인 배포 및 개발
- 작은 단위의 서비스
- 다양한 기술 스택 사용 가능
- 자율적인 팀
- 복잡한 관리 필요
- 확장성 : 특정 서비스에만 확장을 적용할 수 있어 자원 활용이 효율적임
모놀리식 아키텍처(Monolithic Architecture)
- 개념
- 하나의 거대한 애플리케이션으로 모든 기능을 통합하여 개발하는 방법론
- 모든 기능이 하나의 코드 베이스에서 실행됨
- 하나의 배포 단위로 운영
- 전통적인 애플리케이션 개발 방식으로 많이 사용함
- 특징
- 단일 코드베이스
- 일체형 배포
- 단순한 관리
- 높은 의존성 : 모든 기능이 강하게 결합되어 있어 작은 변화에도 전체 시스템에 영향을 미칠 수 있음
- 확장선 제한
장단점
마이크로서비스 아키텍처 | 모놀리식 아키텍처 | |
개발 및 배포 | 각 서비스마다 독립적인 개발과 배포 가능 개발 속도와 배포 주기가 빠름 |
모든 기능이 하나의 단위로 배포됨 배포 주기가 길고 변경 사항이 전체 시스템에 영향을 미침 |
확장성 | 개별 서비스별로 확장이 가능, 자원 활용이 효율적 특정 기능의 부하가 증가하면 해당 서비스만 확장 가능 |
전체 애플리케이션을 확장해야 하므로 자원 낭비 발생 가능 부분 확장 어려움 |
기술 스택 | 다양한 기술 스택 사용 가능 | 단일 코드베이스에서 동일한 기술 스택 사용해야 함 |
유지보수 | 서비스 간의 의존성이 낮아 유지보수에 용이 | 강하게 결합된 구조로 인해 유지보수가 어려움 |
복잡성 | 서비스 간의 통신, 데이터 일관성, 배포, 모니터링 등 관리 작업이 복잡함 분산 시스템의 복잡성으로 인해 장애 대응이 어려움 |
하나의 단위로 관리되므로 상대적으로 단순함 서비스 간의 통신이나 데이터 일관성 문제도 없음 |
장애 대응 | 특정 서비스에 장애가 발생해도 다른 서비스에는 영향을 주지 않으므로 부분적인 장애 복구 가능 | 하나의 기능에 장애가 발생하면 전체 시스템에 영향을 미침 |
'CS' 카테고리의 다른 글
[CS / 자료구조] 자료구조 정리 (0) | 2024.03.19 |
---|---|
[CS / 자료구조] List (0) | 2024.02.15 |
[CS / SW] 객체 지향 프로그래밍 (0) | 2023.10.24 |
[CS / SW] 애자일 방법론 (0) | 2023.10.24 |
[CS / SW] TDD (Test Driven Development) (0) | 2023.10.19 |