4/2(목) 구현 중 회의, 키클록 403문제해결, 회원가입 구현

dev_joo·2026년 4월 2일

배송 생성 과정

주문 - (허브-유저) - 배송

배송 생성 과정에서 배송이 허브가 (허브간 경로는 물론) 왜 주문, 유저 정보까지 가져와야하는지 의문이었다.

1. 서비스 간 강한 결합(Strong Coupling) 방지

배송 서버가 생성 시점에 유저 서버로 직접 데이터를 조회(API Call)하도록 설계하면, 배송 서비스는 유저 서비스의 가용성에 종속된다.

문제 상황: 유저 서버가 점검 중이거나 장애가 발생하면, 배송 서비스는 배송 기사 정보를 가져오지 못해 배송 생성이 지연되거나 실패한다.
해결책: 허브가 이벤트를 발행할 때 이미 결정된 정보(경로, 기사 등)를 페이로드에 담아 전달하면, 배송 서버는 다른 서버를 조회할 필요 없이 자체 DB만으로 즉시 비즈니스 로직을 완결할 수 있다.

2. 이벤트 중심 아키텍처(EDA)의 완결성

이벤트는 일반적으로 "이미 발생한 사실(Fact)"을 의미한다.

허브의 역할: 물류망 중심에서 특정 배송 건의 경로와 담당 기사 배정(Matching)을 수행한다.
전달 방식: 배정 완료 시 DeliveryAssigned 이벤트를 발행하여, "이 경로는 이 기사가 담당하기로 결정됐다"는 확정 상태를 배송 서버에 전달한다.
조회 방식의 단점: 배송 서버가 나중에 유저 서버에 묻는 방식은 단순 조회가 아닌 절차적 요청에 가깝고, 데이터 정합성을 위해 더 복잡한 트랜잭션 처리가 필요하다.

3. 데이터 로컬리티(Data Locality)와 성능

배송 도메인에서는 '배송 기사' 정보가 유저 서비스에 속하지만, 배송이 진행되는 동안 해당 정보는 배송 로직의 일부가 된다.

데이터 스냅샷: 이벤트를 통해 배송 서버가 정보를 받아 자체 DB에 저장(Denormalization)하면, 추후 배송 상태 조회 시 매번 유저 서버와 통신하거나 Join할 필요가 없어 응답 속도가 크게 향상된다.


배송관련 데이터 흐름

배송관련 데이터 흐름으로 배송 과정을 팀원들과 어떻게 저장되는지 다 같이 개념을 확인했다.


트러블 슈팅

공통모듈 의존성 오거나이제이션에 배포시 빈 수동등록이 안되는 문제

동일한 코드로 다른 레포에 배포된 공통모듈 의존하니 해결됐다.
진짜 안되는 이유를 모르겠다.
저주받은 레포

키클록 Client 권한

낮에 튜터님과 client 권한을 부여했지만 빠진 설정이 있는것 같다.

클라이언트(Service Account)에 manage-users 권한을 주기

  1. Keycloak 관리자 페이지에 최고 관리자(admin)로 로그인

  2. 왼쪽 메뉴에서 Clients를 클릭하고,

Spring Boot application.yaml에 등록한 client-id (예: user-service-client)를 선택

KEYCLOAK_REALM=iimsa
KEYCLOAK_CLIENT_ID=iihub-app
...


keycloak:
  server-url: "https://keycloak.code-factory.co.kr"
  realm: ${KEYCLOAK_REALM}
  client-id: ${KEYCLOAK_CLIENT_ID}
  client-secret: ${KEYCLOAK_CLIENT_SECRET}
  admin-username: ${KEYCLOAK_ADMIN_USERNAME}
  admin-password: ${KEYCLOAK_ADMIN_PASSWORD}

해당 클라이언트 설정 화면 상단 탭에서 Service account roles (또는 Roles) 탭으로 이동합니다.

참고: 만약 이 탭이 안 보인다면, Settings 탭 밑으로 내려가서 Service accounts enabled 스위치가 켜져 있는지 확인하세요.

Assign role (권한 할당) 버튼을 클릭합니다.

목록 상단의 필터를 Filter by clients (클라이언트 롤)로 변경합니다.

검색창에 realm-management를 검색합니다.

realm-management 하위에 있는 manage-users 권한을 체크하고 할당(Assign)합니다.

(유저 생성, 삭제, 비밀번호 변경 등을 위해 필수적인 권한입니다.)

유저 조회를 위한 권한

회원가입


첫 PR

🔗 Issue Number

  • close #1
    회원가입 구현

📝 작업 내역

프로젝트에서 키클록 연동 및 회원가입 구현

  • 도메인 계층 작성
  • 도메인 유저 객체 작성
  • 도메인 서비스 작성
  • 키클록 연동
  • 허브 서비스 API 요청 작성
  • 회원가입 로직 생성 (허브 서비스 받아오는 부분은 주석처리함)
  • 회원가입 요청 받기
image

💡 PR 특이사항

  • 허브 서비스 받아오는 부분은 주석처리함

💡 명세서 수정

image
profile
풀스택 연습생. 끈기있는 삽질로 무대에서 화려하게 데뷔할 예정 ❤️🔥

0개의 댓글