bootcamp/Spring

0110 마이크로 서비스 아키텍쳐(MSA)

깨돌 2024. 1. 10. 14:32

1교시

모놀리식 

회원기능이 뻗으면 다같이 뻗는다 왜? 서버가 하나라서

-msa식

특징, 장점:

장애가 발생하더라도 특정한 곳의 장애로만 발생한다 장애전파가 이뤄지지 않음

트래픽이 몰렸을 때 하나의 서비스만 받을 수 있도록 부하분산

서로 다른 프로젝트가 데이터만 잘 주고 받을 수 있으면 어떤 프로그래밍 언어라도 다 주고 받을 수 있음

프로젝트가 여러개로 쪼개져서 생산성이 좋아짐

요구사항에 대한 개발이 쉬워짐

 

 

단점:

프로젝트가 여러개 쓰기 때문에 서버가 많이 필요하고 배포를 여러번 해야 됨

배포할 때나 시스템을 통합시킬 때 문제점이 발생할 수도 있음

 

과거에는 서버가 많이 필요하고 배포를 많이 해야된다는 단점을 해결할 수 없어서 많이 사용하지 않음

그러나 지금은 클라우드를 이용하고 cicd(배포 자동화) 로 단점을 보완하게 되어 많이 사용되는  아키텍쳐이다

 

-msa의 구현 

넷플릭스가 msa 형식

넷플릭스는 msa를 사용하기 위해 OSS라는 오픈소스소프트웨어를 만들어 자체적으로 관리한다

 

 

스프링 클라우드 많이 사용할거임 아무튼 스프링 관련된거 많이 사용할거임

 

spof 단일장애지점(single point of fail) > zull에서 발생

 

레이어드 아키텍쳐 -  유연성과 확장성 :

서비스를 인터페이스 형태로 만든다

-> 이런 유연성과 확장성을 극한으로 만들어서 새로운 구조를 만든것이 헥사고날  아키텍쳐 

 

헥사고날 아키텍쳐

엔티티를 중심으로 내부와 외부를 나눠서 포트로만 데이터를 주고 받을 수 있고 포트에 어댑터를 연결

컨트롤러-어댑터 

캐이스-서비스

포트-레포지토리

라고 볼 수 있음

 

 

클린 아키텍쳐 참고 블로그 

https://daryeou.tistory.com/280

 

클린 아키텍처(Clean Architecture) 개념 및 원칙

개발이란 마치 여러 개의 기반이 되는 블록을 만들어 설계 원칙에 따라 조립하여 완성해 나아가는 과정이라고 생각합니다. 여기서 설계 원칙은 수 많은 디자인 패턴들을 의미하며, 이번 주는 아

daryeou.tistory.com

 

도메인부터 만듦

======================================

 

 

포스트맨 회원가입 요청

===>

어댑터.인.컨트롤러

-> 어플리케이션.포트.인.레지스터멤버유즈케이스

        (어플리케이션.서비스.레지스터멤버서비스)

 

->어플리케이션.포트.아웃.레지스터멤버포트

       (어댑터.아웃.퍼시스턴스.멤버퍼시스턴스어댑터)

 

->JPA이용해서 저장

 

 

 

spring cloud api gateway

각각의 주소로 포워딩 할거임

 

모듈을 새롭게 만들고 각각의 기능을 분리시켜서 필요한 서비스에 맞는 라이브러리만 폼에 추가

 

 

 

------------------------------------------

분리하고 분리한 것들끼리 메세지를 주고 받는게 가장 중요함 > 동기화

메세지큐 카프카

 

-------------------------------------------

api gateway 필터 > 토큰 확인 가능

-------------------------------------------

 

세션 기반 로그인

토큰 기반 로그인

================================================

@WebAdator는 기능이 있는게 아닌 그냥 이름표임

===========

 

아파치 카프카

-주키퍼 서버

: 카프카가 죽었는지 살앗는지 관리하는 서버

-카프카 브로커 서버(사진 9,10)

:메세지 큐 서버 역할, 주키퍼에 종속되어 있음

-프로듀서

:개발자가 프로듀서 개발, 메시지를 보내는 역할

-컨슈머(사진 6,7)

:개발자가 컨슈머 개발, 메시지를 받는 역할