0110 마이크로 서비스 아키텍쳐(MSA)
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)
:개발자가 컨슈머 개발, 메시지를 받는 역할