등장배경?
기존에는 우리가 어떠한 방식으로 개발을 진행해왔나?
- Monolithic Architecture, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태
- 화면부터 데이터베이스까지 전체가 하나의 흐름으로 묶여있는 형태
- 웹개발을 예로 들면 웹 프로그램의 개발하기 위해서 모듈별로 개발하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포되는 형태이다.
Monolithic Architecture 의 단점, 한계
- 서비스를 부분적으로 scale-out 하기가 힘들다.
- 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생한다.
- 배포시간이 오래 걸린다.
- 한 프레임워크와 언어에 종속적이다.
MSA란?
MicroService Archtecture, 마이크로서비스 아키텍처
- 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법
- 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성
- API 통해서만 상호작용 할 수 있다. end-point(접근점)을 API형태로 외부에 노출하고, 실질적 세부사항은 모두 추상화 한다.
- 하나의 비즈니스 범위에 맞춰 만들어지므로 하나의 기능만 수행한다.
- 각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없기에 독립된 배포를 하게 된다.
- 데이터분리, 데이터 저장시 하나의 DB에 중앙 집중화 하지 않고 서비스별 별도의 데이터 베이스를 사용한다.
출처
'백엔드개발자 > etc' 카테고리의 다른 글
DNS, URI(URL,URN), API URL설계 (0) | 2023.04.11 |
---|---|
IP / TCP / UDP / PORT (0) | 2022.09.06 |
캐시 (0) | 2022.07.24 |
host 파일 이란? (0) | 2022.07.24 |
Apache HTTP Server, Apache Tomcat, WEB server, WAS server (0) | 2022.07.08 |