MSA 이해해보기

wonjun_choi·2024년 8월 12일

MSA

목록 보기
2/2
post-thumbnail

들어가며

이제는 MSA를 구현하기 위한 사전 지식들에 대해서 정리해 보았다.
MSA를 구현하기 위해서는 어떤 것들이 필요한지, 어떤 패턴이 있는지 공부하며 이해해 보려 한다.
도메인 주도 설계로 시작하는 마이크로서비스 개발 책을 중점으로 학습하였다.

클라우드 네이티브

벤더사에서 제공하는 솔루션이나 프레임워크에 강하게 의존하여 변경이 어려웠지만
이제는 하나의 벤더에 의존할 필요 없이 여러 오픈소스를 사용하면 된다.
여러 오픈소스들 중에서 상황에 맞는 기술을 선택하여 사용하면 되고, 여러 솔루션을 조합하여 사용할 수 있게 되었다.
https://landscape.cncf.io/
여기에서 클라우드 네이티브 지형도를 확인할 수 있다.
최적의 클라우드 환경을 구성할 수 있도록 적절한 제품 및 솔루션을 선택해서 조합할 수 있어야 한다.

MSA 디자인 패턴

MSA를 사용함에 따라 발생하는 문제들이 있다.
이를 해결하기 위해 사용되는 MSA 디자인 패턴들이 있으며,
그 중에서 중요하다 생각되는 것들만 정리해 보았다.

서비스 디스커버리

마이크로서비스를 자동으로 등록 및 해지한다.
요청을 마이크로서비스 엔드포인트에 보내면 여러 개 중 1개로 라우팅한다.

Edge 서버

외부 마이크로서비스로만 연결, 내부 서비스는 외부에 공개되지 않도록 구성한다.
외부로 공개 시 표준 프로토콜 및 OAuth, API Key 등 보안 적용 후 연결한다.

Reactive 마이크로서비스

비동기 형태로 메시지 처리하는 패턴이다.
동기식 형태로 처리가 요구되면 논블로킹 I/O를 사용한다.

논블로킹 I/O

프로세스가 I/O작업을 요청할 때, 해당 작업이 완료될 때 까지 기다리지 않고 즉시 제어를 반환받는 방식을 의미한다.
예시로, 프로세스가 파일 읽기와 같은 I/O 작업을 요청한 경우, 작업이 완료되지 않더라도 해당 프로세스에게 제어를 반환하여, 그 프로세스가 다른 작업을 계속 수행하도록 한다.
이때 프로세스는 주기적으로 I/O작업의 상태를 확인하여 데이터가 준비되었는지, I/O작업이 완료되었는지 확인하고, 완료된 경우 후속작업을 진행하도록 한다.

Config 중앙화

마이크로서비스의 설정 정보를 중앙서버에 저장/관리한다.

Logging 중앙화

로그 이벤트 수집 및 처리 후 검색 가능하도록 중앙서버에서 저장/관리한다.
로그 이벤트를 조회 및 분석하기 위한 API / GUI를 제공해야한다.

Distributed Tracing

모든 요청 및 메시지 고유 ID가 있고, 로그 이벤트에도 ID를 적용한다.
사전에 정의된 ID가 적용되고 로그 이벤트에서 ID로 검색 및 분산 추적한다.

Circuit Breaker

대상 서비스 문제를 감지하면, 새로운 요청을 보내지 않도록 차단한다.
Circuit을 Open 후 장애 확산을 방지하고, 조치가 완료되면 Close로 원상복구한다.

Control loop

원하는 상태와 현재 상태를 비교, 관찰한다.
두 상태가 다른 경우에는 GitOps 기반으로 상태를 일치하도록 Sync를 수행한다.

Monitoring & Alarm 중앙화

자원 사용량의 메트릭 수집 및 새로운 서비스에 대한 메트릭 자동 등록한다.
수집한 메트릭을 조회 및 분석하기 위한 API와 GUI를 제공해야한다.

0개의 댓글