프로젝트 개요 : MSA 프로젝트를 직접 구성해보고 앱에서 각종 제어를 실습해보는 목적으로 프로젝트를 진행 중.
MSA는 만능이 아님 서비스 환경적으로 서비스 사용자가 많았을 경우에 적합한 기술이다.
-
빌드 및 테스트 시간을 단축시킬 수 있다.
30개의 서비스를 가진 Monolithic 의 빌드 시간이 30분이었다면, MSA는 각각의 서비스를 1분 만에 빌드 할 수 있습니다. 이는 CI / CD를 추구하는 기업에서는 좀 더 적합한 모델이 됩니다. 왜냐하면 하루에도 몇 번을 빌드 및 배포를 해야 하는데 그때마다 많은 시간을 소모하게 된다면 낭비이기 때문입니다. -
상황에 맞게 기술을 유연하게 적용할 수 있습니다. 예를 들어 TPS(시간당 트랜잭션)가 높고, 읽기 작업이 많은 서비스에는 Node + Redis로 구현을 하고, 트랜잭션 및 안정성이 중요한 서비스에는 Spring + RDB를 적용할 수 있습니다.
- 오라클 -> h2 로 데이터베이스 변경(경량화 목적)
- h2 DB 구성완료
- 프로젝트 DB 연동완료(postgresql, h2)
- 클라이언트(h2), 서버(postgresql)로 구성완료
- 유레카관리서버1대 클라이언트2개 구성완료
- 유레카 관리서버 페이지 각 클라이언트1,2 연동 확인완료
- 클라이언트1번 서버는 postgresql, 2번서버는 h2연결완료
Ribbon은 분산 처리 방법으로 여러 서버를 라운드 로빈 방식으로 부하 분산 기능을 제공합니다. (여러 알고리즘 사용 가능) 트래픽분산처리 찍어보기
properties 정보에 인스턴스아이디 랜덤부여 설정
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
eureka.instance.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
위의 설정 후 클라이언트 실행 시 스테이터스의 정보란에 인스턴스 2개가 나옴
그레이들에 spring-cloud-starter-ribbon 추가한다. 그다음 @LoadBalancerClient 추가
- 유레카 구성 2개 서버
- 서버아이피 및 스테이터스 -레지스트리, 인스턴스, 클라이언트, 서버 디테일하게 정리
- 리본구성
- 트래픽 분리(기본 라운드로빈, 트래픽분배 다른패턴 파악)
- 서킷 브레이커 시스템 다운시 간접영향부분 절단 테스트
- 히스트릭스