msa 기본

Tae hyun·2023년 2월 21일
0

소프트웨어 아키텍처: 소프트웨어 도면을 작성하는 것

uml: (개발자쪽에 치중된) java를 모르는 사람들에게 시스템을 표현해줄 수 있는 표준화된 언어
아키텍처 관점을 view라고 하는데 4+1뷰가 있음

logical view, development view, process view, physical view

소프트웨어 아키텍처 스타일
스타일은 접근방법을 제시하고, 패턴은 구체적인 해결전술을 제시
ex. a 다음에 b를 하고 b 다음 c를 해야해-> 스타일
c를 구현하는데 프록시패턴으로 구현할 것인지, 빌더패턴으로 구현할것인지...
msa는 코딩영역으로 보기이전에 아키텍처에 관한 스타일이다.
전체적인 구조를 만드는 능력이 중요함

-모놀리스에서 마이크로서비스로 변화
모놀리스: 하나의 애플리케이션으로 묶어서 처리
민첩한 대응이 어렵다
ex. 개발1팀, 개발2팀, 공통팀, 품질팀
처음에 공통팀이 인터페이스를 잘못 설계하면 개발1팀, 2팀이 많은 어려움을 겪음
서로 경계가 크면 책임을 서로 전가하게됨

스케일업: 서버한대를 증설한다

마이크로서비스아키텍처: 아주 작은 단위로 동작하는 서비스가 구동되도록 시스템 및 소프트웨어의 구성과 구성요소 간의 관계를 정의한 아키텍처
모놀리스 아키텍처와의 가장큰 차이점은 애플리케이션 기능뿐만 아니라 데이터까지 분리하여 격리된 독립환경으로 구성하는것

서비스지향 아키텍처
1. 서비스 계약: 서비스제공자와 소비자사이의 규칙을 준수해야함
2. 서비스 가용성: 요청에 대한 반응이 일정시간동안 없으면 기존경로 차단, 다른 경로로 요청 경로를 변경
서로커뮤니케이션이나 빠른대처 이런게 안되면 책임소재를 전가하게된다.
3. 서비스관리: 특정 서비스에 오류가 발생하면 자연스럽게 다른 정상적인 서비스로 요청 흐름의 변경도 가능함. 서비스의 상태는 시간화하여 모니터링할 수 있어야함

클라우드 네이티브

탄력적 아키텍처: 서비스 생성-통합-배포-비즈니스 환경 변화에 대응시간을 단축, 오류를 예측하고 적절히 대응할 수 있는 아키텍처 구조

무상태 통신 프로토콜
요청을 비동기로 보내놓고 응답이 오던 말던 하고싶은 일을 하다가 응답온 내용을 받아오면 됨

카프카 메신저

동기요청해야하는 경우/비동기요청해야하는 경우

-동기요청: 조회작업
-비동기요청: 추가,수정,삭제
콘테이너별로 웹서버 하나가 있어야함
웹서버의 종류는 다양

내장된 랜더링 엔진이 있기때문에

자바스크립트 해석기

서비스와 서비스간의 요청도 msa에서는

ㅈ 슈

스프링부트는 내장된 콘텍스가있다

이벤트스트밍 다시 다듬어야할 필요가 있음

msa 적용시 고려사항
디자인 패턴으로 유명한 Martin Fowler는 모놀리식으로 관리하기에 특별히 복잡한 시스템을 운영할 상황이 아니면 마이크로 서비스 도입을 고려하지 말 것을 강조하고 있다.

서킷브레이커
-서비스간 장애 전파 차단 p37
Hystrix는 분산환경을 위한 장애 및 지연 내성(Latency and Fault Tolerance)을 갖도록 도와주는 라이브러리. MSA에서는 각각의 서비스들이 독립적이지만, 장애가 전파될 수 있는 성질이 있어 이를 미연에 방지하기 위한 Circuit Breaker가 필수적이다

비동기처리하는게 좋다

profile
안녕하세요 개발하는 알파카입니다. https://github.com/oh-taehyun

0개의 댓글