byworld 님의 블로그
[자바단기심화 입문 TIL 8일차] Spring 숙련심화MSA, Layered Arch 특강 본문
서론
내일 9시까지 MSA 정리 파일 제출이라니... 일단 최대한 할 수 있는 대로 해봐야겠다.
Spring 숙련 강의
전부 다는 못 들었다. 일단 객체 관계에 대해서 배웠는데, DB 강의때 배웠던 내용과 매우 유사하다. 하이버 네이트 할 때도 Join 연산을 사용해서 하기도 하고. 하지만 JPA는 방향성이 존재한다. 외래키의 주체를 JoinColumn등으로 설정할 수가 있고, 주체가 아닌 연관을 방향을 연결하려면 mapped 파라미터로 이어줘야 한다. M:N은 중간 테이블으로 처리해야한다. 중간을 생성해서 관리하면 좀 더 관리하기 쉽다. 그 외에도 fetch로 Lazy, Eager 등을 배우고 cascade를 이용한 orphan 등을 배웠다. 프로젝트 구현 부분을 거의 못했는데, 팀 프로젝트 하면서 병행해야겠다.
Spring 심화 강의
중요해 보이는 것만 들었다. AOP와 예외처리가 중요해보였다. AOP는 프록시 개념을 활용해 중간에 가로채서 공통 기능 삽입하는 하는 것이 주이다. API 실행 시간, 로그, 트랜잭션, 공통 예외처리, 권한 체크 등을 할 수 있다. 본질적 4가지 요소는 공통기능의 Aspect, 언제 실행할지 정하는 Advise, 어디에 적용할지의 Pointcut, 실제 실행하는 JoinPoint가 있다.
API 예외를 배웠다. 비즈니스 로직이 아니라 서비스에서 예외를 던져서 기능을 분리한다. 그래서 @ControllerAdvise 글로벌 컨트롤러로 가로채 상태 코드와 메시지를 생성하는 패턴을 주로 쓴다.
특히 MSA에서 중요할 것 같다. Http는 상태 코드 기반 프로토콜이다. (404 New Era) MSA는 장애가 전파되는데, 서버쪽의 오류인 500번대가 있을 때 주로 서킷브레이커가 발동한다.(난 주식으로 이 용어를 알았다.) 인가 인증 등의 클라쪽 오류가 났을 때 500번이 아니라 400대로 매핑하여 서버의 장애를 방지할 수 있다. AOP는 아니지만 비슷하게 동작하는 원리이다.
MSA 강의
도메인 별로 서버를 분리하는 DDD같은 구조에 MSA가 자주 쓰인다. 모놀리식의 중앙집중 서버의 부하를 줄여주기 때문이다. 앞 단에 API 게이트웨이가 있고, 필터 체크도 한다. 각 도메인(서비스) 별 서버들이 존재한다.그 서버간 분산 컨트롤은 로드 밸런싱을 하여 트래픽을 분산한다. 중앙 관리하고 어디 클라에 게이트웨이를 호출할 지 알려주는 가장 중요한 서비스등록/디스커버리(유레카 등) 서버도 있다. 에러가 났을 때 서킷브레이커, 중앙 관리하는 Config 서버, 분산을 직관적으로 알기 힘드므로 추적을 해주는 분산추적 기능도 필요하다. 이벤트 기반 비동기 통신하는 메시징도 필요하다. 도식으로 표현하면 다음과 같다.
Client
↓
API Gateway
↓
Order Service
↓ (Eureka 통해 위치 확인)
Product Service (로드밸런싱 적용)
↓
Circuit Breaker 보호
↓
Config Server 설정 관리
↓
Zipkin 추적
결론
내일 졸업이라 파일들을 4년간의 강의 파일을 오늘까지 다운받을 수 있다고 한다. 꽤 시간이 걸리던데, 최대한 할 수 있는 만큼 빨리 받고, MSA 마무리 강의 제외하고 모두 수강하는 것을 목표로해야겠다. 내일 오전 9시까지 제출은 해야지...
'TIL' 카테고리의 다른 글
| [자바단기심화 입문 TIL 10일차] ERD 명세서, 인프라 그림 (0) | 2026.02.25 |
|---|---|
| [자바단기심화 입문 TIL 9일차] 입문 프로젝트 발제 (0) | 2026.02.24 |
| [자바단기심화 입문 TIL 7일차] Spring 숙련 강의 ~2-6, 깃 PR 특강 (0) | 2026.02.20 |
| [자바단기심화 입문 TIL 6일차] 맥북 에어, 특강, (Spring 입문 강의 완강, Spring 숙련 강의 1장 완료, Spring AI 특강) (0) | 2026.02.19 |
| [자바단기심화 입문 TIL 5일차] 맥북 에어, 특강, (Spring 입문 강의 2장 ~5강) (0) | 2026.02.13 |