소프트웨어 아키텍처 패턴.
모놀리스 (Monolith) 아키텍처
모놀리스 아키텍처란 하나의 소프트웨어를 구성하는 모든 모듈을 한 프로젝트에서 관리함.
→ 한 프로젝트 내에 모든 모듈과 코드가 있음
→ 소프트웨어가 비규적 단순
→ 그러나, 애플리케이션 코드가 많아지고 서비스가 확장되면 전체 구조나 코드 흐름을 쉽게 이해하기 어려움.
한 프로젝트 내에 있는 코드이므로, 모든 코드가 결합되어 있기 때문에 사이드 이펙트가 일어날 수 있음.
⇒ 모놀리스 아키텍처는 하나의 소프트웨어를 하나의 프로젝트로 개발하는 아키텍처임.
마이크로서비스 아키텍처
마이크로 서비스는 하나의 소프트웨어를 구성하는 컴포넌트들을 독립적인 프로젝트들로 분리하여 관리함.
→ 각각의 컴포넌트들을 마이크로 서비스라고함.
→ 개발과 배포도 분리된 마이크로 서비스 단위로 진행함.
따라서, 하나의 소프트웨어가 정상 동작하기 위해서는 각각의 마이크로 서비스가 모두 정상 동작해야함.
→ 소프트웨어가 커지고 복잡해질 때 필요함.
예를 들어,
사용자 관련 도메인, 상품 관련 도메인, 결제 관련 도메인으로 되어있는 프로젝트인 경우,
세가지 도메인은 각각 다른 프로젝트에서 개발, 배포됨.
세 서버는 필요한 경우 서로 HTTP 통신하며 협력하는 방식으로 사용자에게 최종 기능을 제공함.
→ 각 마이크로 서비스별로 프로그래밍 언어나 데이터베이스를 따로 사용하는 등 기술 스택을 더 자유롭게 가져갈 수 있음.
⇒ 마이크로서비스 아키텍처는 하나의 소프트웨어를 여러 독립된 프로젝트로 나누어 개발하는 아키텍처임.
'Infra & Tools > CI & CD' 카테고리의 다른 글
배포란 ? (0) | 2022.06.02 |
---|---|
가상화 기술과 도커 (0) | 2022.06.02 |
CI & CD 에 대해 알아보자. (0) | 2020.07.26 |