기본 콘텐츠로 건너뛰기

MSA key words

 # 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(분산 트랜잭션 구간별 응답시간 모니터링)


댓글

이 블로그의 인기 게시물

유닉스 & 리눅스 가계도. Unix&Linux Family

- Unix Family - Shell History

linux : /bin, /usr/bin 과 /sbin, /usr/sbin의 차이

/bin, /usr/bin 과 /sbin, /usr/sbin의 차이  : 모두 명령어가 저장되는 디렉토리 /bin       : 기본적인 명령어 , (권한 : 일반사용자) /sbin      : 시스템 관리를 위한 명령어, (권한 : root) /usr/bin  : /bin에 있는 명령을 제외한 기본적인 명령어, (권한 : 일반 사용자) /usr/sbin : /sbin에 있는 명령을 제외한 시스템 관리를 위한 명령어, (권한 : root)

C : 매크로와 선행처리기(Preprocessor)

매크로(macro)란?  : 컴퓨터 과학 분야에서 정해진 순서에 따라 어떻게 특정한 입력 시퀀스가 출력 시퀀스로 매핑되어야 하는지를 정의하는 규칙 - 선행처리  : 컴파일 이전의 처리를 의미. 삽입해 놓은 선행처리 명령문대로 소스코드의 일부를 수정(단순치환, substitution)할 뿐. #include <stdio.h> // 선행처리 "stdio.h 파일의 내용을 이곳에 가져다 놓으세요." #define PI 3.14 // 선행처리 ( 지시자, 매크로, 매크로 몸체) PI : 오브젝트 유사 매크로(object-like macro) or 매크로 상수 #define NAME "이영준" #define AGE 27 #define PRINT_ADDR printf("주소 : 경기도 고양시 일산구\n"); #define SQUARE(X) X*X #define PRODUCT(X, Y) ((X)*(Y)) #define CIRCLE_AREA(R) (PRODUCT((R),(R)) * PI) int main() { double num; double rad = 2.1; num = PI * 3.5; printf("파이 : %lf \n", num); printf("반지름 %g인 원의 넓이 : %g \n\n", rad, CIRCLE_AREA(rad)); printf("이름 : %s \n", NAME); printf("나이 : %d \n\n", AGE); PRINT_ADDR; int num2 = 20; printf("num2의 제곱 : %d \n", SQUARE(num2) ); printf("3의 제곱 + 2 : %d \n", SQUARE(3 + 2)); // 3*3+2 printf("3+2의 제곱 : %d \n", SQ...