kjp0411 님의 블로그
내일배움캠프 단기심화 Java - 본 캠프 Day 54 본문
TIL - 2026.04.29
오늘 한 일
- User-Service와 Gateway에 Keycloak 기반 JWT 인증 연동
- User-Service에서 Access Token 검증 설정 적용
- Gateway에서 인증되지 않은 요청을 내부 서비스로 전달하기 전에 401로 차단하도록 구성
- 회원가입/로그인처럼 인증 제외가 필요한 경로를 API 명세서 기준으로 정리
- Gateway 라우팅 설정과 테스트 환경 정리
- MVP 마감 전 통합 작업 우선순위 정리
- Config Server의 역할과 MSA 구성 요소별 책임 정리
오늘 배운 점
1. Gateway는 외부 요청의 진입점 역할을 한다
MSA 구조에서는 클라이언트가 각 서비스를 직접 호출하는 것이 아니라, Gateway를 통해 요청을 전달한다.
이번 작업에서는 Gateway에서 JWT 토큰이 없는 요청이나 유효하지 않은 요청을 먼저 차단하도록 구성했다.
이를 통해 인증되지 않은 요청이 User-Service 같은 내부 서비스까지 전달되지 않도록 만들 수 있었다.
Client
→ Gateway
→ JWT 검증
→ 인증 성공 시 내부 서비스 전달
→ 인증 실패 시 401 반환
2. User-Service는 전달받은 Access Token을 검증한다
Gateway에서 1차적으로 요청을 필터링하더라도, User-Service에서도 Access Token 검증 설정이 필요하다.
User-Service는 자신에게 들어온 요청이 인증된 사용자의 요청인지 확인하고, 보호 API에 대해 인증된 접근만 허용해야 한다.
이번 작업을 통해 Gateway 인증과 서비스 내부 인증이 각각 어떤 역할을 가지는지 구분할 수 있었다.
3. 인증 제외 경로 정리가 중요하다
회원가입, 로그인, 토큰 발급과 같은 API는 인증 없이 접근 가능해야 한다.
반대로 회원 정보 조회, 수정, 삭제 같은 API는 Access Token이 필요하다.
따라서 API 명세서를 기준으로 인증 제외 경로와 인증 필요 경로를 명확히 구분해야 한다.
인증 제외
- 회원가입
- 로그인
- 토큰 발급
인증 필요
- 회원 조회
- 회원 수정
- 회원 삭제
- 보호 API
4. MSA에서는 서비스 연결 기준을 맞추는 것이 중요하다
MSA 프로젝트에서는 각 팀원이 서비스를 따로 개발하더라도, 최종적으로는 하나의 시스템처럼 동작해야 한다.
이를 위해서는 다음 정보들이 반드시 맞아야 한다.
- 서비스 포트
- Eureka 등록 이름
- API Prefix
- Gateway 라우팅 경로
- 인증 필요 경로
- 인증 제외 경로
- 로컬 실행 환경
단순히 기능을 구현하는 것보다, 각 서비스가 Gateway를 통해 정상적으로 연결되고 호출되는 구조를 만드는 것이 중요하다는 점을 배웠다.
5. Config Server는 설정을 중앙에서 관리하는 역할이다
Config Server는 서비스를 연결하거나 요청을 라우팅하는 서버가 아니다.
각 마이크로서비스가 실행될 때 필요한 설정을 중앙에서 제공하는 역할을 한다.
Config Server → 설정 중앙 관리
Eureka Server → 서비스 위치 등록/조회
Gateway → 외부 요청 라우팅
Keycloak → 인증/토큰 발급
Kafka → 비동기 이벤트 통신
Config Server를 사용하면 서비스별 application.yml에 설정이 흩어지는 문제를 줄이고, 로컬/배포 환경별 설정을 분리해서 관리할 수 있다.
느낀 점
오늘 작업을 하면서 MSA 프로젝트는 단순히 서비스를 나누는 것이 끝이 아니라는 것을 느꼈다.
각 서비스가 독립적으로 개발되더라도 Gateway 라우팅, Eureka 등록명, 인증 정책, Config Server 설정, 실행 환경이 맞지 않으면 전체 시스템으로 동작하기 어렵다.
도메인 기능만 구현했다면 비동기 통신이나 특정 비즈니스 로직은 어필할 수 있었겠지만, 이번처럼 Gateway, 인증, 서비스 연결, 설정 관리까지 경험하면서 MSA 프로젝트의 전체 흐름을 더 잘 이해할 수 있었다.
이번 경험은 나중에 면접에서 “MSA 프로젝트에서 어떤 역할을 했는지”, “서비스들을 어떻게 연결했는지”, “Gateway와 Eureka, Config Server의 역할은 무엇인지”를 설명할 수 있는 좋은 근거가 될 것 같다.
다음에 할 일
- 팀원 서비스 포트 / API Prefix 정리
- 전체 서비스 Eureka 등록 확인
- Gateway 전체 서비스 라우팅 연결
- Gateway 경유 API 호출 테스트
- MVP 핵심 시나리오 Postman 정리
- 로컬 통합 실행 테스트
- 통합 완료 후 배포 방식 검토
오늘의 핵심 정리
MSA에서는 개별 서비스 구현도 중요하지만, 각 서비스가 하나의 시스템으로 동작하도록 연결하는 통합 과정이 매우 중요하다.
오늘은 Keycloak JWT 인증을 User-Service와 Gateway에 연동하면서, Gateway 인증 차단 흐름과 서비스 내부 토큰 검증 흐름을 직접 구성했다.
또한 MVP 마감 전에는 배포보다 먼저 로컬에서 전체 서비스가 Gateway 기준으로 정상 연결되는지 검증하는 것이 우선이라는 점을 정리했다.
'TIL' 카테고리의 다른 글
| 내일배움캠프 단기심화 Java - 본 캠프 Day 56 (0) | 2026.05.01 |
|---|---|
| 내일배움캠프 단기심화 Java - 본 캠프 Day 55 (0) | 2026.04.30 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 53 (0) | 2026.04.28 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 52 (0) | 2026.04.27 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 51 (0) | 2026.04.24 |
