Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- javascript
- 공개키 암호화
- 가상컴퓨팅
- BFS
- 생성자
- python
- generic class
- 암호학
- JPA
- 알고리즘
- sql
- Queue
- Stack
- 크루스칼
- MVC
- 코딩테스트
- DB
- Algorithm
- data structure
- 자바의정석
- 클라우드 컴퓨팅
- jsp
- 코테
- cloud computing
- Java
- 자료구조
- JDBC
- spring
- dbms
- dfs
Archives
- Today
- Total
PLOD
[Spring] MSA(MicroService Architecture) 본문
MSA
- 작고 독립적으로 배포 가능한 각각의 기능을 하는 서비스들로 구성된 아키텍쳐
- 모놀리식 서비스에서 각각의 비즈니스 로직을 분리하여 개별 프로젝트로 생성한 뒤 가장 앞단에 API Gateway와 같은 분배기를 통해 각 서비스 서버에 요청을 분산하여 관리
- 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 자향 아키텍쳐
- 서비스는 기능별로 구분
- 서비스의 교체가 쉽다
- 각 서비스의 최적인 개발언어 DB, HW , 소프트웨어 환경을 사용하여 구현
- 각 서비스는 독립적인 배포가 가능
MSA 장단점
장점
- 서비스별 스케일링 가능
- 서비스별 다른 프레임워크 사용 가능 (서비스 별 독자적 운영)
- 하나의 서비스가 off 되더라도 나머지 동작 가능
- 부분적으로 로직 업데이트 가능
단점
- 초기 구성의 난이도
- 시스템이 돌아가지만 특정 서비스가 off되면 재기능을 못할 수 있음
- 서버간 호출 비용
- 분산 관리
REST API
REST(Representational State Transfer)란 어떤 자원에 대하여 HTTP URL 및 HTTP Method를 통해 CRUD 연산을 수행하는 것
- GET
- URL에 데이터를 포함시켜 전송
- 데이터를 헤더에 포함하여 전송
- URL에 데이터가 노출되어 보안에 취약
- 캐싱할 수 있음
- READ 할 때 주로 사용
- POST
- URL에 데이터를 노출하지 않고 요청
- 데이터를 바디에 포함
- URL에 데이터가 노출되지 않아 GET 방식보다 보안이 높음
- 캐싱할 수 없음
- 노출되면 않되는 데이터를 전송해야 할 때(ex. 로그인) 할 떄 주로 사용
API Gateway
API 서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화 해주는 또다른 서버이다. 이 서버는 클라이언트 요청에 대해 어플리케이션 내부의 마이크로 서비스로 라우팅하는 역할을 수행 → 클라이언트 - 마이크로서비스 중개자
- API Gateway의 주요기능
- 인증 및 인가
- 로깅 및 모니터링
- 부하 분산
- API Gateway의 장점
- 단일 진입점
- 프로토콜 및 데이터 변환
- 보안 및 권한 관리
- 로깅과 모니터링
- 부하 분산과 캐싱
- 이중화 및 회복성
- 버전 관리
스프링 부트
비지니스 로직 처리를 담당하기 위한 어플리케이션 서버. 즉 특정 경로에 대한 컨트롤러를 통해 요청 처리를 진행한다.
- Spring Cloud Gateway : SCG
URL 주소에 대해서 아래 세부 경로에 따라 각각의 스프링 부트 어플리케이션에 분배하는 분배기 역할을 수행 - Spring Cloud Eureka Server
모니터링 서버로 Eureka Client 설정을 해둔 서버를 Eureka Server에 띄워 줌 모니터링 기능과 함께 추가적으로 Spring Cloud Gateway에 목록을 전달하여 Gateway가 로드밸런싱 대상을 설정하도록 작업 - Spring Cloud Eureka Client
Eureka Server에 등록되는 요소로 스프링 부트 어플리케이션과 같은 여러 스프링 프레임워크 서버에 설정이 가능하다. - Spring Config Server
변수 값들을 제공하는 서버로 특정 경로로 접근하면 미리 사전에 설정해둔 변수 값들을 제공 받을 수 있다. MSA를 구축하면 각각의 스프링 부트 어플리케이션에 application.properties에 값을 명시하는 것이 아닌 config server로 부터 데이터를 받아서 사용한다. - Config Repository
Config Server는 단순하게 데이터를 전달하는 매개체로 실제 데이터는 Config Server 뒷단에 깃허브 리포지토리와 같은 저장소를 물려서 사용한다. - Spring Config Client
Config Server로 부터 변수 데이터를 받기 위한 Client 서버 설정
'개발 공부 > Spring framework' 카테고리의 다른 글
[Spring] Redis 캐싱을 사용한 상품 정보 조회 성능 향상 (0) | 2024.10.03 |
---|---|
[Spring] 재고시스템으로 알아보는 동시성 이유 (1) | 2024.10.03 |
[Spring] @Request Param , @PathVariable과 Mapping 정리 (0) | 2024.08.17 |
[Spring] 3 Layer Architecture (0) | 2024.07.29 |
[Spring] Spring Security (0) | 2024.07.25 |
Comments