아키텍처 & 설계(Architecture & Design)/MSA

마이크로서비스 아키텍처(MSA) 환경에서는 수많은 서비스가 동시에 동작하며, 클라이언트의 요청도 급격하게 증가할 수 있다. 모든 요청을 무작정 받아들이면, 서비스 전체에 과부하가 걸릴 수 있다. 이를 방지하기 위해 트래픽 제어(Traffic Control)가 필요하다. API Gateway는 단순히 요청을 라우팅하는 역할에 그치지 않고, 서비스 보호, 부하 분산, 응답 속도 최적화, 비용 절감 등 다양한 트래픽 제어 기능을 수행한다. 트래픽 제어란?트래픽 제어(Traffic Control)는 클라이언트로부터 오는 요청을 관리, 조절, 그리고 최적화하는 과정이다. 주요 목적서버 오버로드 방지서비스 안전성 확보효율적인 리소스 사용사용자 경험 향상 트래픽 제어의 중요성항목설명서비스 가용성 유지과도한 트래픽으로..
마이크로서비스 아키텍처는 각 서비스가 독립적으로 동작하므로, 보안을 한 곳에서 집중적으로 처리하는 것이 중요하다.이때 핵심적인 역할을 하는 것이 바로 API Gateway의 인증 및 인가 처리이다. API Gateway의 역할 API Gateway는 애플리케이션의 클라이언트와 백엔드 서비스 간의 통신을 중개한다.모든 API 요청이 Gateway를 통과하므로 인증, 인가, 로깅, 라우팅, 로드 밸런시 등 다양한 기능을 이곳에서 집중적으로 수행할 수 있다. 인증(Authentication) 처리🔑 인증이란?사용자가 누구인지 신원을 확인하는 절차 🔐 인증 방식방식설명Basic Authentication사용자명/비밀번호를 헤더에 실어 요청Token-based (JWT)로그인 시 발급된 토큰을 통해 인증OAu..
API Gateway는 마이크로서비스 아키텍처에서 필수적인 구성 요소이며, 그중에서도 클라이언트 요청을 적절한 서비스로 연결하는 라우팅(Routing) 기능은 핵심 중의 핵심이다. 라우팅(Routing) 개념📌 사전적 정의라우팅(Rouring)이란, 네트워크 내에서 데이터가 목적지까지 도달하는 경로를 선택하는 과정을 말한다. 라우팅은 클라이언트의 요청 URL, HTTP 메서드, 헤더, 쿼리 파라미터 등을 기준으로, 적절한 백엔드 서비스로 요청을 전달하는 프로세스이다. 즉, API Gateway는 클라이언트 요청을 받아 조건에 따라 내부 마이크로서비스로 분기시킨다.  📌 API Gateway에서의 라우팅API Gateway에서의 라우팅은 단순히 경로를 지정하는 것을 넘어서, 다음과 같은 역할을 수행한다..
API Gateway는 마이크로서비스 아키텍처에서 프론트엔드와 백엔드 간의 중간자 역할을 수행한다. 이때 핵심이 되는 구성 요소 중 하나가 바로 프록시 서버(Proxy Server)이다.프록시 서버란? 프록시 서버는 클라이언트와 백엔드 서버 사이에 위치하여, 클라이언트의 요청을 받아 백엔드로 전달하고, 백엔드의 응답을 다시 클라이언트로 보내주는 중간 계층 서버이다. 즉, 클라이언트는 실제 백엔드를 직접 호출하지 않고, 프록시를 통해 간접적으로 호출한다. API Gateway는 이러한 프록시 역할을 수행한다. API Gateway의 프록시 주요 기능 및 예시1️⃣ 중계 (Forwarding) - 기본 중계 기능 프록시의 가장 핵심적인 기능은 요청을 중계하는 것이다. 📌 예시사용자가 /api/orders ..
마이크로서비스 아키텍처(MSA)가 널리 사용되면서, 이를 뒷받침하는 핵심 구성 요소 중 하나가 바로 API Gateway이다.클라이언트와 다수의 백엔드 서비스 사이에서 중심 역할을 하며, 시스템의 안전성과 확장성을 지탱하는 API Gateway의 개념과 등장 배경, 그리고 핵심 특징을 이 글에서 정리한다. API Gateway란? API Gateway는 클라이언트와 백엔드 서비스 사이의 통신을 중개하는 진입점이다.모든 클라이어늩 요청은 API Gateway를 거쳐 해당 백엔드 서비스로 전달되며, 응답 또한 Gateway를 통해 다시 클라이언트에게 전달된다. 📌 API Gateway 정의API Gateway는 모든 API 요청을 한 곳에서 수신하고, 해당 요청을 적절한 내부 서비스로 라우팅하는 프록시 서..
프로젝트 구성루트 폴더(miri-miri-msa)core-moduleuser-service-modulegoods-service-moduleorder-service-module 그리고 루트 폴더의 settings.gradle 파일과 build.gradle 파일을 다음과 같이 설정한다.setggins.gradle (root 프로젝트)rootProject.name = 'miri-miri-msa'include 'core-module'include 'user-service-module'include 'goods-service-module'include 'order-service-module' build.gradle (root 프로젝트)plugins { id 'java'..