JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
온라인 강의프로그래밍 과외책/전자책무료 강의
유튜브블로그
후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

비전공자도 이해할 수 있는 MSA 입문/실전

MSA 기본 개념

MSA를 왜 배워야할까?
MSA(Microservice Architecture)란?
MSA의 핵심 특징 / MSA의 독보적인 장점
언제 MSA를 도입하는 게 적절할까?
많은 사람들이 MSA가 어렵다고 착각하는 이유
MSA인지 아닌지를 판단하는 기준
MSA를 쉽고 빠르게 배우는 방법

기본적인 마이크로서비스 구축해보기

MSA 프로젝트 요구사항 및 설계
[실습] 각 Microservice에 해당하는 DB 서버 띄우기
[실습] User Microservice 만들기
[실습] Board Microservice 만들기
구현한 MSA 프로젝트를 잘 구현했는 지 전체적으로 검토하기

데이터 조회 API 구현하기 (마이크로서비스 간에 REST API로 통신)

데이터 조회 기능 구현 방식 (모놀리식 vs MSA)
[실습] 다른 마이크로서비스가 사용할 ‘사용자 조회 API’ 만들기
[실습] 특정 게시글 조회 API 만들기
특정 서비스가 장애났을 때, 장애가 전파되지 않게 막는 방법
[실습] 특정 서비스가 장애났을 때, 장애가 전파되지 않게 방어 코드 작성하기
[실습] 게시글 전체 조회 API 만들기 - 1
[실습] 게시글 전체 조회 API 만들기 - 2

데이터 쓰기 API 구현하기 (마이크로서비스 간에 REST API로 통신)

[실습] Point Microservice 만들기 - 1
[실습] Point Microservice 만들기 - 2
[실습] 회원 가입하면 포인트가 적립되도록 만들기
[실습] 사용자 활동 점수 적립 API 만들기
[실습] ‘포인트 차감 → 게시글 작성→ 활동 점수 적립’ 순으로 로직이 처리되도록 만들기

MSA 환경에서 트랜잭션 관리하기

게시글 작성 API 로직 수행 중, 중간에 에러가 발생하면 어떻게 될까?
MSA 환경에서의 트랜잭션 처리 방법
Saga 패턴이란? / 보상 트랜잭션이란?
[실습] 게시글 작성 API에 Saga 패턴 적용시키기 - 1
[실습] 게시글 작성 API에 Saga 패턴 적용시키기 - 2
Eventual Consistency(최종적 일관성)이란?
[참고] Saga 패턴을 구현할 때 고려해야 할 요소 (멱등성, 동시성 이슈 등)

데이터 쓰기 API 구현하기 (마이크로서비스 간에 메시징 기반으로 통신)

MSA 환경에서 언제 메시징 기반(비동기 방식)으로 통신하면 좋을까?
어떻게 구현할 지 설계하기
[실습] 게시글 서비스에서 Kafka로 ‘게시글 작성 완료 이벤트’ 발행하기
[실습] 사용자 서비스에서 Kafka로부터 ‘게시글 작성 완료 이벤트’ 구독하기
[실습] 잘 작동하는 지 테스트하기

‘메시징 기반의 데이터 동기화 방식’으로 데이터 조회 최적화하기

‘데이터 동기화’를 활용한 게시글 조회 API 최적화하기
[실습] 사용자 서비스에서 Kafka로 ‘회원가입 완료 이벤트’ 발행하기
[실습] 게시글 서비스에서 Kafka로부터 ‘회원가입 완료 이벤트’ 구독하기
[실습] 잘 작동하는 지 테스트하기
[실습] 게시글 조회 로직 최적화하기 (

API Gateway를 활용해 클라이언트의 요청을 적절한 서버로 전달하기

API Gateway란?
[실습] Spring Cloud Gateway 셋팅하기 / 라우팅 설정하기
[실습] ‘외부용 API’와 ‘마이크로서비스간 통신용 API’ 구분하기
[실습] API Gateway를 활용해 클라이언트가 접근할 API 제한하기

API Gateway를 활용해 JWT 인증 로직 구현하기

MSA에서 ‘인증 로직’ 구현하는 방법
[실습] 사용자 서비스에 로그인 API 구현하기
[실습] API Gateway에 JWT 인증 로직 구현하기 (
[실습] 게시글 작성 로직 수정하기

마무리

MSA는 꼭 쿠버네티스로 배포해야 할까?
[미션] AWS에 MSA 프로젝트 배포하기
[참고] 완성 프로젝트 Github 주소
← 블로그 목록으로 돌아가기

MSA 환경에서 언제 메시징 기반(비동기 방식)으로 통신하면 좋을까?

JSCODE 박재성
JSCODE 박재성
2026. 03. 18.
author
JSCODE 박재성
category
MSA
createdAt
Dec 6, 2025 02:16 PM
isPublic
isPublic
series
비전공자도 이해할 수 있는 MSA 입문/실전
slug
when-to-use-async-messaging-in-msa
type
post
updatedAt
Mar 18, 2026 09:00
👨🏻‍🏫
MSA 환경에서는 마이크로서비스끼리 통신을 해야 한다. 이 때, 통신 방식은 크게 동기와 비동기 방식으로 나뉜다. 이전까지 프로젝트에서 사용했던 REST API 기반의 통신 방식이 대표적인 동기 통신 방식이 있다. 그리고 Kafka와 같은 메시지 큐를 활용해 메시징 기반으로 통신하는 방식이 비동기 통신 방식이다.
MSA 환경에서는 이 2가지 통신 방식 중 하나의 통신 방식만 사용해야 하는 건 아니다. 두 가지 방식을 혼용해서 사용하는 경우가 많다. 그렇기 때문에 언제 동기 방식으로 통신하는 게 좋고, 언제 비동기 방식으로 통신하는 지를 판단할 수 있어야 한다. 그 차이점에 대해 알아보자.
 

✅ MSA 환경에서 언제 메시징 기반(비동기 방식)으로 통신하면 좋을까?

notion image
이전 프로젝트에서 게시글 작성 API를 구현할 때, 각 마이크로서비스는 REST API 기반의 동기적으로 통신하는 방식을 활용했다. 이 통신 방식의 가장 큰 특징은 ‘요청’을 보내면 ‘응답’이 날라온다는 특징이 있다.
 
이 특징 때문에 동기 방식의 통신은 ‘요청을 보낸 뒤에 응답을 받아야만 하는 경우’에 많이 활용한다. 기존에 구현한 게시글 작성 API 로직을 기반으로 생각해보자.
  1. 사용자가 게시글 작성 API에 요청을 보내고 나서 게시글 작성이 완료됐는 지를 사용자에게 응답해주어야 하기 때문에 동기 방식으로 통신해야 한다.
  1. ‘포인트 차감’이 확실하게 완료된 걸 확인한 뒤에 ‘게시글 작성’ 작업을 해야 하기 때문에 동기 방식으로 통신해야 한다.
 
그럼 메시징 기반의 비동기 통신 방식은 언제 사용하면 좋을까? 이 방식은 요청 처리 결과에 대한 응답을 굳이 받지 않아도 되는 경우에 많이 사용한다. 기존에 구현한 게시글 작성 API 로직을 기반으로 생각해보자.
  1. 사용자가 게시글 작성 API(’포인트 차감 → 게시글 작성 → 활동 점수 적립’)에 요청을 보냈을 때, ‘포인트 차감 → 게시글 작성’ 로직까지만 확실하게 작동한 걸 확인하고 성공 응답을 바로 내려줘도 된다. 한 마디로 ‘활동 점수 적립’ 처리가 끝날 때까지 기다렸다가 응답해줄 필요는 없다. ‘활동 점수 적립’은 메시징 기반의 비동기 방식으로 처리해도 된다.
  1. 사용자가 게시글 작성 API에 요청을 보냈을 때, 특정 작업이 실패하면 보상 트랜잭션을 실행시켜야 한다. 그런데 보상 트랜잭션 처리가 전부 끝날 때까지 기다렸다가 실패 응답을 해줄 필요는 없다. 즉, 사용자에게 먼저 실패 응답을 해준 뒤에 보상 트랜잭션은 따로 메시징 기반의 비동기 방식으로 처리해도 된다.
 
 

✅ MSA 환경에서 ‘동기 방식’으로 통신하는 게 잘못된 게 아니다!

MSA에 관련된 강의와 책들을 찾아보면 대부분 이벤트를 기반으로 하는 비동기 방식을 위주로 서술해놨다. 그래서 사람들이 MSA 환경에서는 동기 통신 방식보다는 비동기 통신 방식 위주로 구현해야 한다고 착각한다. 하지만 위에서 설명했다시피 동기 통신 방식을 사용할 지, 비동기 통신 방식을 사용할 지 Case에 따라 판단하는 게 맞다.
 
실제 규모 있는 기업 중 토스의 사례를 살펴보자. 아래 영상을 보면 토스에서 환전 기능을 구현할 때도 동기 통신 방식과 비동기 통신 방식을 Case에 따라 혼용해서 사용한 걸 알 수 있다.
토스ㅣSLASH 24 - 보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기
거대한 은행 계정계 시스템과 새로운 MSA 서비스는 어떻게 협력할 수 있을까요? 계정계 시스템의 원화 계좌와 분리된 외화 계좌를 오가는 환전 트랜잭션 구현법을 소개합니다. 이신동 / Server Developer 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-24 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im 토스에 합류하고 싶다면 👉🏻 https://toss.im/career/jobs #토스 #개발자컨퍼런스 #SLASH #SLASH24 #transaction #토스뱅크 #backend 유의 사항 *본 발표자료의 저작권은 연사에 있으며, 저작권자의 사전 서면 동의 없이 자료의 일부 또는 전부를 이용하거나 배포할 수 없습니다. *또한 해당 자료를 복제하여 SLASH 행사 홈페이지를 제외한 온라인상에 게재하는 행위는 연사가 동의한 저작권 및 배포전송권에 위배됩니다. *토스가 다루는 모든 개인정보는 고객에게 동의를 받은 후에 처리되고 있으며, 접근 권한이 분리되어 있습니다. 개발자는 모든 데이터가 아닌 담당 영역에 한하여 접근·이용할 수 있습니다.
토스ㅣSLASH 24 - 보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기
https://youtu.be/xpwRTu47fqY?t=590
토스ㅣSLASH 24 - 보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기
notion image
notion image
 
이처럼 MSA 환경에서 메시징 기반의 비동기 방식과 REST API 기반의 동기 방식을 혼용해서 사용하는 경우가 많다는 걸 기억하고 넘어가야 한다.
 
👨🏻‍🏫
다음 강의에서는 메시징 기반의 비동기 방식으로 통신하는 방법에 대해 알아보자.
 
📎
이 글은 비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot) 강의의 수업 자료 중 일부입니다.