# MSA 학습 - MSA (Micro Service Architecture) - SOA (Service Oriented Architecture) - ESB (Enterprise Service Bus) ## Service Mesh : 마이크로 서비스간 직접통신을 하지 않기 위해서 > Netfilx (Hystrix(서킷 브레이커), Eureka(디스커버리), Turbine(통합 모니터링)) ### 서킷 브레이커 패턴 (마이크로 서비스간 장애 전파를 막기위해서) 요청 받는 쪽 서비스가 문제가 생겼을 경우 중간에 서킷 브레이커가 더이상 요청을 기다리지 않도록 하고 룰에따른 Fall-back 메세지를 보냄. #### 구현 방법 - 소프트웨어적 해결: (넷플릭스 Hystrix: Spring 라이브러리) 코드수정, 프로그램 언어 종속성의 단점 있음 - **인프라적 해결**: proxy server에서 처리함 (envoy.io, ngnix) ### 서비스 디스커버리 패턴 동적 주소 찾기 - Client side discovery: 서비스가 Service registry에 직접 물어봄 - Server side discovery: Load Balancer가 그 역할을 대신함 #### Service registry ZooKeeper, etcd / Eureka ### Sidecar 패턴 loging, security, platform, discovery, routing(proxy) 의 기능을 공통으로 분리 #### Istio 쿠버네티스 기반 서비스 메쉬, 개발언어 무관 - 부하분산 트래픽 관리: Envoy로 프록시, Pilot을 통해서 디스커버리, 로드밸런싱, 서킷브레이커 - 보안: TLS(Transport) - 모니터링: Heapster, Prometheus, StackDriver, Datadog, Grafana(각 서비스의 응답시간, 처리량), Jaeger(분산 트랜잭션 구간별 응답시간 모니터링)