★ MSA 총 정리 ★
·
MSA
MSA(Microservices Architecture) 총정리1. MSA란?MSA(Microservices Architecture)는 하나의 큰 애플리케이션을 여러 개의 작고 독립적인 서비스로 분리하여 개발하는 아키텍처 방식이다.각 서비스는 주문, 결제, 배송, 회원과 같이 특정 비즈니스 기능을 담당하며 독립적으로 개발, 배포, 확장할 수 있다.예를 들어 쇼핑몰 서비스를 MSA로 구성한다면 다음과 같이 나눌 수 있다.[회원 서비스][상품 서비스][주문 서비스][결제 서비스][배송 서비스]각 서비스는 서로 독립적으로 동작하며 HTTP API, 메시지 브로커(Kafka, RabbitMQ) 등을 통해 통신한다.MSA의 주요 특징독립적인 배포: 특정 서비스만 수정하여 별도로 배포할 수 있다.독립적인 확장: 트..
MSA(Microservices Architecture) 총 정리
·
MSA
이번 파트에서는 그동안 배우고 정리했던 MSA의 개념, 종류와 중요한 코드를 한 페이지에 정리하는 시간을 가져보도록 하겠다.1. MSA(Microservices Architecture)하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일이다.[Product] - 독립APP[ User ] - 독립APP[ Order ] - 독립APPMSA의 장단점장점단점확장성: 특정 서비스만 확장하여 성능 최적화 가능복잡성 증가: 서비스 간 통신, 데이터 일관성 유지 등의 복잡성 증가독립적 배포: 개별 서비스의 변경 사항을 독립적으로 배포 가능운영 비용 증가: 각 서비스의 모니터링, 로깅 등을 개별적으로 관리해야 한다.유연성: 서비스별로 적합한 기술 ..
분산 추적(Zipkin) & 이벤트 드리븐
·
MSA
1. 분산 추적(Zipkin)은 무엇일까?어느 요청이 여러 서비스를 거치면 어디서 문제가 생기는지 원인을 찾아내기 어렵다.이를 해결하기 위해 분산 추적의 Zipkin을 통해 트레이스 데이터를 수집하고 시각화해주어 어디서 문제가 발생했는지 파악할 수 있도록 도와준다. 분산 추적은 분산 시스템에서 서비스 간의 요청 흐름을 추적하고 모니터링하는 방법각 서비스의 호출 관계와 성능을 시각화하여 문제를 진단하고 해결할 수 있도록 도움.1-2. 분산 추적 예시서비스 호출 흐름 추적예제 서비스 간의 호출 흐름을 추적하고, Zipkin 대시보드에서 시각화한다.각 서비스 호출 시 트레이스와 스팬이 생성되고, Zipkin 서버로 전송된다.성능 병목 진단Zipkin 대시보드를 통해 성능 병목이 발생하는 부분을 식별한다.각 스..
Config(Spring Cloud Config)
·
MSA
1. Spring Cloud Config란 무엇일까? 분산 시스템 환경에서 중앙 집중식 구성 관리를 제공하는 프레임워크Git, 파일 시스템, JDBC 등 다양한 저장소를 지원1-2. 주요 기능중앙 집중식 구성 관리: 모든 마이크로서비스의 설정을 중앙에서 관리환경별 구성: 개발, 테스트, 운영 등 환경별로 구성을 분리하여 관리실시간 구성 변경: 설정 변경 시 애플리케이션을 재시작하지 않고도 실시간으로 반영 가능2. Spring Cloud BusSpring Cloud Bus를 사용하면 설정 변경사항을 실시간으로 클라이언트 APP에 반영 가능3. 수동 구성 갱신Spring Cloud Bus를 사용하지 않을 때, Config 서버 설정 파일을 변경하여 /actuator/refresh 엔드포인트 사용하고, 각 클..
보안 구성
·
MSA
1. OAuth2란 무엇인가? 토큰 기반의 인증 및 권한 부여 프로토콜클라이언트 애플리케이션이 리소스 소유자의 권한을 얻어 보호된 리소스에 접근할 수 있도록 한다.역할: 리소스 소유자, 클라이언트, 리소스 서버, 인증 서버1) Authorization Code Grant: 인증 코드를 사용하여 엑세스 토큰을 얻는 방식2) Implicit Grant: 클라이언트 애플리케이션에서 직접 액세스 토큰을 얻는 방식3) Resource Owner Password Credentials Grant: 사용자 이름과 비밀번호를 사용하여 액세스 토큰을 얻는 방식4) Client Credentials Grant: 클라이언트 애플리케이션이 자신의 자격 증명을 사용하여 액세스 토큰을 얻는 방식 2. JWT(JSON Web Tok..
API 게이트웨이 (Spring Cloud Gateway)
·
MSA
1. API 게이트웨이란 무엇일까?클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가 기능을 제공한다.클라이언트와 서비스 간의 단일 진입점 역할을 하며, 라우팅, 인증 & 권한 부여, 로드 밸런싱, 모니터링 & 로깅, 요청 & 응답 변환 등을 처리한다.2. Spring Cloud Gateway란 무엇일까?Spring에서 개발된 API 게이트웨이로, 클라이언트 요청을 적절한 서비스로 라우팅하고 다양한 필터링 기능을 제공한다.주요 기능으로 동적 라우팅, 필터링, 모니터링, 보안 등의 역할을 수행한다.사용자는 각각의 URL에 따라 데이터를 요청하지않고, 하나의 URL을 통해 API Gateway에 요청을 하면 API Gateway는 인증, 인가, 요청, 응답 등을 수행하여 사용자가 원하는 데이터..
서킷 브레이커 (Resilience4j)
·
MSA
1. 서킷 브레이커마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴으로 외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하여 시스템의 다른 부분에 영향을 주지 않도록 한다.상태 변화: 클로즈드 -> 오픈 -> 하프-오픈 2. Resilience4j서킷 브레이커 라이브러리로, 서비스 간 호출 실패를 감지하고 시스템의 안정성을 유지한다.다양한 서킷 브레이커 기능을 제공하며, 장애 격리 및 빠른 실패를 통해 복원력을 높인다. 2-1. Resilience4j의 주요 특징서킷 브레이커 상태- 클로즈드(Closed)기본 상태(Default)로 모든 요청을 통과시킨다.호출 실패 시, 실패 카운터가 증가한다.실패율이 설정된 임계값(설정 값)을 초과하면 서킷 브레이커가 오픈 상태로..
로드 밸런싱
·
MSA
1. 로드 밸런싱이란? 로드 밸런싱은 네트워크 트래픽을 여러 서버로 분산시켜 서버의 부하를 줄이고, 시스템의 성능과 가용성을 높이는 기술서버 간 트래픽을 고르게 분배하여 특정 서버에 부하가 집중되는 것을 방지종류: 클라이언트 사이드 로드 밸런싱, 서버 사이드 로드 밸런싱 2. FeignClient이란?Spring Cloud에서 제공하는 HTTP 클라이언트로, 선언적으로 RESTful 웹 서비스를 호출할 수 있음Eureka와 같은 서비스 디스커버리와 연동하여 동적으로 서비스 인스턴스를 조회하고 로드 밸런싱을 수행2-1. 주요 특징선언적 HTTP 클라이언트: 인터페이스와 어노테이션을 사용하여 REST API를 호출할 수 있음Eureka 연동: Eureka와 통합하여 서비스 인스턴스 목록을 동적으로 조회하고 ..
서비스 디스커버리 (Eureka) 와 Server/Client 설정 방법
·
MSA
1. 서비스 디스커버리(Service Discovery)란?마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능이다.주요 기능: 서비스 등록/조회, 헬스 체크 등.2. 헬스 체크 및 장애 처리헬스 체크Eureka 서버가 주기적으로 서비스 인스턴스의 상태를 확인하여 가용성을 유지한다.기본 헬스 체크 엔드포인트 /actuator/health 를 사용하여 주기적으로 체크한다.장애 처리서비스 장애 시 Eureka 서버는 해당 인스턴스를 레지스토리에서 제거하여 다른 서비스의 접근을 차단한다.3. Eureka 설정 방법spring-cloud-starter-netflix-eureka-client 의존성이 필요하고, 애플리케이션 이름만 설정파일에 있다면 Eureka에 등록이 된다. 총 3개의 ..
Spring Cloud란 무엇일까?
·
MSA
1. Spring Cloud마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장으로, 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와주는 역할을 하는 프레임워크이다. 2. Spring Cloud의 주요 모듈2-1. 서비스 등록 및 디스커버리★ Eureka(위치 저장소): 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리한다.모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 하며, 서비스 인스턴스의 상태를 주기적으로 체크하여 가용성을 보장한다. 2-2. 로드 밸런싱: 서버가 받는 부하(Load)를 여러 대의 서버로 균등하게 나누어 주는(Balancing) 기술 ★ Ribbon: 넷플릭스가 개발한 클..