블로그 글
박재성 선생님이 개발 블로그에 쓴 글입니다.

MSA 환경에서 언제 메시징 기반(비동기 방식)으로 통신하면 좋을까?
MSA 환경에서는 마이크로서비스끼리 통신을 해야 한다. 이 때, 통신 방식은 크게 동기와 비동기 방식으로 나뉜다. 이전까지 프로젝트에서 사용했던 REST API 기반의 통신 방식이 대표적인 동기 통신 방식이 있다. 그리고 Kafka와 같은 메시지 큐를
![[실습] API Gateway를 활용해 클라이언트가 접근할 API 제한하기](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-80db-9412-cbe003339b5e-7716e827be43d6fe.webp&w=3840&q=75)
[실습] API Gateway를 활용해 클라이언트가 접근할 API 제한하기
✅ API Gateway를 활용해 클라이언트가 접근할 API 제한하기 이전 강의에서 클라이언트가 사용하는 외부용 API와 마이크로서비스 내부에서만 사용하는 내부용 API를 분리했다. 이 구성에서 클라이언트는 내부용 API에 접근할 수 없게 막아야 한다
[참고] Saga 패턴을 구현할 때 고려해야 할 요소 (멱등성, 동시성 이슈 등)
✅ Saga 패턴을 구현할 때 고려해야 할 요소 (멱등성, 동시성 이슈, 시맨틱 락) 지금까지 Saga 패턴의 개념을 이해하고 Saga 패턴을 직접 구현해봤다. 하지만 Saga 패턴을 더 꼼꼼하고 완벽하게 구현하려면 고려해야 하는 요소들이 훨씬 많다.
![[실습] 특정 게시글 조회 API 만들기](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-80cd-a79f-f1092e1b02aa-fd8a91b4a92ac51d.webp&w=3840&q=75)
[실습] 특정 게시글 조회 API 만들기
✅ 특정 게시글 조회 API 만들기 board-service에서 아래 코드 작성하기 Response DTO 만들기 user-service의 API와 통신할 코드 작성하기 Service 로직 작성하기 Controller 로직 작성하기 서버 재실행시킨 후
![[실습] Point Microservice 만들기 - 2](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-80be-92bd-dedeb757b719-da63560a7122e168.webp&w=3840&q=75)
[실습] Point Microservice 만들기 - 2
✅ Spring Boot 프로젝트 셋팅 & DB 연결 Spring Boot 프로젝트 셋팅 application.yml 작성하기 Spring Boot 서버 실행시켜서 DB 연결 제대로 되는 지 확인하기 ✅ 포인트 적립 API 만들기 Point 엔티티 생
![[실습] 특정 서비스가 장애났을 때, 장애가 전파되지 않게 방어 코드 작성하기](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-80bd-a4a9-cb723b258822-86613ef4c3ecfa12.webp&w=3840&q=75)
[실습] 특정 서비스가 장애났을 때, 장애가 전파되지 않게 방어 코드 작성하기
✅ 장애 전파 방어 코드 작성하지 않으면 어떻게 되는 지 테스트하기 user-service 서버 종료시키기 게시글 조회 API로 요청 보내기 ✅ 장애 전파 방지 전략 User Service가 장애가 나더라도 Board Service의 게시글 조회 AP
![[실습] Point Microservice 만들기 - 1](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-80ab-a25e-eeaf569936b5-796d10a4d208cd3f.webp&w=3840&q=75)
[실습] Point Microservice 만들기 - 1
✅ Point Microservice가 사용할 DB 띄우기 MySQL 서버 띄우기 GUI 툴로 MySQL 접근 되는 지 확인하기 데이터베이스 생성하기

API Gateway란?
✅ API Gateway란? 우선 Gateway라는 의미를 먼저 알아보자. Gateway는 네트워크 상에서 다른 네트워크로 들어가는 입구 역할을 하는 지점을 의미한다. 그럼 API Gateway의 뜻은 뭘까? API Gateway는 클라이언트(웹, 모

게시글 작성 API 로직 수행 중, 중간에 에러가 발생하면 어떻게 될까?
✅ 게시글 작성 API 로직 수행 중, 중간에 에러가 발생하면 어떻게 될까? 게시글 작성 API 로직이 ‘포인트 차감 → 게시글 저장 → 활동 점수 적립’ 구성으로 이루어져 있다. ‘포인트 차감, 게시글 저장, 활동 점수 적립’은 기획상 하나로 묶인
![[실습] Spring Cloud Gateway 셋팅하기 / 라우팅 설정하기](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-80a7-965c-c7c4c28355c6-8eb1d91484dee6a7.webp&w=3840&q=75)
[실습] Spring Cloud Gateway 셋팅하기 / 라우팅 설정하기
✅ Spring Cloud Gateway 서버 기본 셋팅하기 / 라우팅 설정하기 Spring Boot 프로젝트 셋팅 application.yml 작성하기 요청이 잘 라우팅되는 지 테스트해보기
![[실습] 사용자 서비스에서 Kafka로 ‘회원가입 완료 이벤트’ 발행하기](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-809f-95f5-cdee12095755-e95010b3a5bebd4b.webp&w=3840&q=75)
[실습] 사용자 서비스에서 Kafka로 ‘회원가입 완료 이벤트’ 발행하기
✅ 사용자 서비스에서 Kafka로 ‘회원가입 완료 이벤트’ 발행하기 게시글 서비스에서 사용해야 하는 사용자 데이터(user_id, name)를 동기화하기 위해서, 사용자 서비스에서 user_id, name의 데이터가 생성/변경/삭제가 될 때마다 카프카
![[실습] 게시글 전체 조회 API 만들기 - 1](/_next/image?url=https%3A%2F%2Fapi.jscode.kr%2Fapi%2Fpost-images%2F2c111062-ff07-809b-8110-ea1c8669df50-8560e4861e147143.webp&w=3840&q=75)
[실습] 게시글 전체 조회 API 만들기 - 1
✅ 설계 [게시글 전체 조회 API] 위 요구사항에 따라 게시글 전체 조회 API를 만들려면 게시글의 개수만큼 사용자 정보를 조회해와야 한다. 즉, 10개의 게시글을 조회해서 응답하려면 각 게시글의 사용자 정보가 필요하므로 사용자 정보 조회 API를