채채
MSA & Event Driven Architecture & 서버 클러스터 & CI/CD 본문
✅ MSA
✅ Event Driven Architecture
(1) Event: 프로그램에 의해 감지되어 처리해야 할 하나의 동작
(2) EDA
- 이벤트 발생에따라 트리거를 만들어, 송신자로부터 수신자로 이벤트를 비동기적으로 전송하고 처리하는 기술
- MSA 도입 시 발생하는 새로운 요구 사항을 달성하는 개념입니다. 서비스, DB의 분리, 폴리글랏 등에 대응해 효과적으로 동작합니다. EDM은 실패를 허용하는 분산 구조, 이벤트 브로커 등을 통해 문제를 해결하고 MSA 도입의 난관을 해결할 수 있도록 도와줍니다.
(3) 발행-구독(Pub-Sub) 비동기 통신
- Rest와 달리 요청을 생성하는 서비스는(Publish) 요청을 소비하는 서비스(Subscribe)의 세부 정보(주소, 이벤트 수신 여부)를 알 필요가 없다.
(4) 강한 결합/느슨한 결합
- 강한 결합의 예
- 느슨한 결합의 예
? 이벤트 기반이 아닌 아키텍처에 비해 어떤 장점이 있는가?
1. Loosely Coupling
- 분산 시스템간 느슨한 결합도를 제공한다.
2. 분산된 시스템간의 의존성 배제
- 약속된 메시지를 통해 통신하게 때문에 다른 시스템의 정보 알 필요가 없다.
3. 확장성, 탄력성 향상
✅ 서버 클러스터
- 여러 대의 서버를 네트워크로 연결하여 전체적으로 하나의 서버처럼 보이게 하는 기술
- 한 대의 서버가 고장이 나도 다른 서버에서 처리를 계속할 수 있어서 서비스의 신뢰성을 확보
(1) 공유 스토리지 구성(Single quorum device cluster)
- 여러 대의 서버가 공유하는 스토리지를 마련하여 데이터의 무결성 확보
- 확장성이 높아서 대규모 시스템(대용량 데이터를 다루는 서버)에 적합
(2) 데이터 미러 구성(Majority Node Set Cluster)
- 스토리지를 완전히 똑같은 내용으로 복제하여 무결성을 확보
- 저가로 구축할 수 있어 소규모 시스템에 적합, 대용량 데이터를 다루는 서버에는 부적합
✅ CI/CD
(1) CI(Continuous Integration)
지속적 통합이라는 의미로 다른 개발자의 코드와 내가 작성한 코드를 통합하여 빌드->테스트->머지 과정을 반복하는 것
(2) CD(Continuous Delivery/Continuous Deployment)
지속적 제공/배포라는 뜻으로 Continuous Delivery/Continuous Deployment를 복합적으로 의미한다.
- Continuous Delivery: github와 같은 공유 저장소에 업로드 한다.
- Continuous Deployment: 성공적으로 병합된 내역을 저장소뿐만 아니라 사용자가 사용할 수 있는 배포환경까지 릴리즈한다.