기본 콘텐츠로 건너뛰기

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

라즈베리파이 커널 컴파일

- 라즈베리파이의 부트절차 1. Power on 2. SoC Rom의 첫번째 부트로더(Firmware)을 읽음. 3. 첫번째 부트로더가 MicroSD의 두번째 부트로더( bootcode.bin )을 호출 4. 두번째 부트로더가 MicroSD의 config.txt 파일을 읽고 실행. 5. 두번째 부트로더가 세번째 부트로더 ( start.elf )을 호출 실행 ARM core 활성화 6. ARM core가 네번째 부트로더( kernel.img )을 호출 실행 7. module load 8. init 실행 (daemon 실행) 부팅에 필요한 최소한의 세가지 : bootcode.bin, start.elf(start_cd.elf / start_x.elf), kernel.img - 라즈베리파이 커널 크로스 컴파일 - 커널 소스 내려받기 : 커널 소스가 필요한 이유? 임베디드 환경에 맞게 커널을 축소하기 위해서. git : sw 버전관리& 페키지를 쉽게 다운받기 위해 사용. #atp-get install git -y #git init #mkdir /raspberrypi 필요한 커널 소스 다운 및 크로스컴파일러 다운. : www.kernel.org 에서도 다운 가능. #cd /raspberrypi #apt-get update #apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 libc6-dev-i386 lib32z1 #git clone --depth=1 https://github.com/raspberrypi/linux #export KERNEL=kernel7 make를 이용해 크로스 컴파일 시켜줌. #apt-get install gcc-arm-linux-gnueabi make #cd linux #make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_

모든 프로그래머가 알아야 할 것들 목록.

Every Programmer Should Know Algorithms Big O Cheatsheet 📖   Grokking Algorithms Sorting Algorithms Numbers 📄   Floating Point Guide 📄   Basic Number Theory Every Programmer Should Know... 📄   Falsehoods Programmers Believe About Phone Numbers Strings Big List of Naughty Strings 📄   Unicode and Character Sets Homoglyphs Unicode Common Locale Data Repository Falsehoods Programmers Believe About Names Latency Interactive Latency Infographics 📄   Latency Numbers Every Programmer Should Know Time 📄   Falsehoods programmers believe about time 📄   More falsehoods programmers believe about time; “wisdom of the crowd” edition 📄   Some notes about time 📄   Falsehoods programmers believe about time and time zones Memory 📄   What every Programmer should know about memory Distributed Systems 📖   Designing Data-Intensive Applications 📜   Designs, Lessons and Advice from Building Large Distributed Systems 📜   Time, Clocks and the Orderi