Architecture
비즈니스 요구 사항을 만족하는 시스템을 구축하기 위해서 전체 시스템에 대한 구조를 정의한 문서
모놀리식 아키텍처
Monolithic Architecture
소프트웨어 프로그램의 전통적인 모델로,
애플리케이션 전체가 하나의 서비스 형태로 개발되어 있는 것을 말합니다.
장점 +
- 구조가 단순해 개발 및 유지 보수가 용이함
- 큰 서비스 하나로 이루어져있기 때문에 빌드, 배포, 테스트가 용이함
단점 -
- 서비스 규모가 커질수록 코드의 복잡도가 증가해 개발 및 유지 보수가 어려워짐
- 서비스 규모가 커질수록 빌드, 배포 시간이 오래 걸리는데,
작은 수정사항에도 서비스 전체를 다시 빌드하고 배포해야하므로 효율성이 떨어짐 - 기존 서비스에 새로운 기능이나 기술 스택을 추가하기 어려움
- 서비스의 어느 한 부분에서 오류가 발생할 경우 시스템 전체의 오류로 이어질 수 있음
Monolithic Architecture 는 서비스의 규모가 커질수록 아래와 같은 한계가 있습니다.
- 영향도 파악 및 전체 시스템 구조의 파악에 어려움이 있음
- 빌드 시간 및 테스트시간, 그리고 배포시간이 기하급수적으로 늘어남
- 서비스를 부분적으로 scale-out하기가 어려움
- 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생함
때문에 소규모 프로젝트에 적합하고,
단점들을 해결하기 위해 서비스 경량화 구조 기반의 아키텍처인 MSA가 각광받게 됩니다.
마이크로 서비스 아키텍처
Mircro Service
마이크로 서비스 아키텍처란 경량화되고 독립적인 여러 개의 서비스를 조합하여
하나의 애플리케이션을 구현하는 아키텍처를 말합니다.
장점 +
- 각 서비스를 독립적으로 배포할 수 있기 때문에 수정 사항이 생기면 수정이 된 서비스만
개별적으로 빌드하고 배포해 효율성이 좋음 - 새로운 기능이나 기술 스택을 추가하는데 제약 사항이 적어 확장성이 용이함
- 서비스에서 오류가 발생 할 경우 다른 서비스에 영향을 주지 않기 때문에 대응하기 쉬움
- 서비스가 독립적으로 개발되기 때문에 유지 보수에 용이함
단점 -
- 기본적인 구조가 모놀리식 아키텍처에 비해 복잡해 개발과 관리가 어려움
- 모놀리식 아키텍처의 경우 하나의 데이터베이스를 사용하기 때문에 DBMS에서 제공하는 트랜잭션 관리 기능을 이용하지만,
MSA 아키텍처는 데이터베이스가 서비스 단위로 분산되어 있기 때문에 데이터 트랜잭션 관리가 까다로움 - 서비스끼리 호출이 필요할 때 API를 사용하기 때문에 통신 비용과 지연 시간이 증가함
- 서비스가 분산되어 있기 때문에 통합 테스트가 어려움
Reference Path
'CS' 카테고리의 다른 글
Primary Index / Secondary Index / Composite Index (0) | 2022.12.03 |
---|---|
인덱스 Index (0) | 2022.12.02 |
비즈니스 로직 Business Logic (0) | 2022.11.27 |
Blocking, NonBlocking + Synchronous, Asynchronous (0) | 2022.11.24 |
로드밸런싱 Load Balancing (0) | 2022.11.20 |