Backend/Spring Cloud MSA
이전 포스팅에서 서로 다른 서비스들 간의 데이터 동기화를 Kafka를 이용하여 수행해보았다.이번에는 같은 서비스가 여러개의 인스턴스를 가지는 경우, 데이터의 불일치를 해결하는 일부 방법에 대해 살펴보려고 한다.사실 해당 내용은 공부를 하면서 여러가지 의문사항이 많이 남았는데 이 내용은 마지막에 서술하려고 한다. 문제점 Microservice에서는 여러개의 서비스 뿐 만 아니라, 같은 서비스가 여러개의 서버로 Scale-out되어 여러 인스턴스가 동작하고 있을 수 있다. 이들이 각자의 데이터베이스를 가지고 동작한다면 데이터 동기화의 문제가 발생할 수 있다. 예를 들어 Order-service의 주문을 100건 한다고 치면, 위의 3개의 Order-service들이 요청을 각각 나누어 처리하게 될 것이다.그..
마이크로서비스의 독립적인 서비스들은 각각 자체 데이터 스토어를 가지며 서로 통신하여 전체 시스템을 구성한다. 데이터 동기화는 이러한 독립적인 마이크로서비스 간에 데이터 일관성을 유지하고 서로의 상태를 동기화하기 위해 중요한 측면을 띄고 있다. E-Commerce 어플리케이션에서 예를 들면 주문 관리 서비스와 재고 관리 서비스가 각각의 데이터베이스를 가질 때, 주문이 발생하면 재고를 감소시켜야 한다. 이 때, 이벤트 기반의 Message Broker, 혹은 Message Queueing Service는 이런 데이터의 동기화에 유용하게 사용될 수 있다. 위 사례에서, Order-service가 주문을 처리함과 동시에 Message Broker에게 이벤트를 Produce하면서, Catalog-service는 ..
이전 포스팅에서는 Microservice들의 설정을 일괄적으로 할 수 있는 Config Server를 구축해 보았었다. 이번에는 분산된 Microsevice들 간의 통신에 대해서 다루어 보려고 한다. MSA 간의 통신의 필요성 다음 마이크로서비스의 경우를 생각해보자. 만약 User를 ID를 기반으로 조회할 때, 해당 유저가 주문한 주문내역을 함께 응답으로 주고 싶다고 생각해보자. 이럴 경우, Order Service와의 통신이 이루어져야 한다. 전통적인 Monolithic 아키텍쳐는 단일 데이터베이스 아래에서 외래키 참조와 Join을 통해 다른 도메인의 데이터를 가져오곤 했었다. 그렇지만 MSA라는 개념이 도입된 이후로, 같은 서비스 내에서 참조 가능한 데이터는 외래키와 Join을 통해서 가져오면 되지만..
이전 포스팅에서는 Spring Configuration Server를 구축하여, Microservice들의 설정들을 중앙에서 효율적으로 관리할 수 있도록 만들어 보았었다. 해당 내용과 이어지는 내용이므로, 앞의 포스팅을 보지 못했다면 보고 오는 것을 권장한다. https://sjh9708.tistory.com/123 [Spring Cloud] Microservice(MSA) 구축 : (4) Spring Cloud Config Server 구축 이전 포스팅에서는 여러개의 Microservice를 만들고, Spring Cloud Gateway와 Registry Server를 구축하여보았었다. 이번 포스팅에서는 Spring Configuration Server를 구축하여, Microservice들의 설정들을 ..
이전 포스팅에서는 여러개의 Microservice를 만들고, Spring Cloud Gateway와 Registry Server를 구축하여보았었다. 이번 포스팅에서는 Spring Configuration Server를 구축하여, Microservice들의 설정들을 중앙에서 효율적으로 관리할 수 있도록 만들어 보려고 한다. Spring Cloud MSA 구조를 다시 보면.. Spring Cloud는 분산 시스템과 MSA를 쉽게 개발하고 구축하기 위한 Spring 기반의 프레임워크 모음이다. Spring Cloud는 다양한 분산 시스템 문제에 대한 해결책을 제공하며, 여러 서비스로 구성된 복잡한 시스템을 쉽게 관리하고 확장할 수 있도록 지원한다 Spring Cloud API Gateway 마이크로서비스 아키..
이번 포스팅에서는 MSA 아키텍처 구조에서의 인가(Authorization)에 대해서 다루어 보려고 한다. 아래의 내용은 일반적인 JWT 기반의 인증과 인가 플로우이다. 그렇다면, 여러개의 서버가 존재하는 MSA 구조에서는 해당 과정의 처리를 어떻게 해야 할지 알아보도록 하자. 클라이언트 서버 인증 1 로그인 요청 2 데이터베이스에서 ID와 비밀번호 대조 후 일치여부 확인 3 일치 시 암호화된 토큰 생성 4 응답으로 토큰을 반환 5 클라이언트는 토큰을 저장 인가 1 API 요청 시 헤 토큰을 포함시켜 요청 2 토큰을 복호화하여 유효성 검증 3 검증 완료되었다면 API 로직 처리 후 응답 4 응답을 받음 프로젝트 구조 User-Service에서의 인증(Authorization) 일반적으로 Applicati..
이전 포스팅에서 MSA 아키텍쳐의 구조와 Spring Cloud에 대한 소개를 하였었다.이번 포스팅에서는 이전에 소개했던 아키텍쳐의 구성 요소들인 Gateway, Naming Server, MSA Service들을 만들어보고 연동하는 작업을 해보려고 한다. https://sjh9708.tistory.com/119 [Spring Cloud] Microservice(MSA) 구축 : (1) MSA의 이해와 Spring Cloud의 구조마이크로서비스 아키텍처 (Microservices Architecture, MSA) 비즈니스 로직을 분리하여 개발하고, 분리된 서비스가 다른 서비스에 영향을 최소화하여 개발하는 방법론. 작은 서비스들이 모여 단일 어플sjh9708.tistory.com Spring Cloud..
마이크로서비스 아키텍처 (Microservices Architecture, MSA) 비즈니스 로직을 분리하여 개발하고, 분리된 서비스가 다른 서비스에 영향을 최소화하여 개발하는 방법론. 작은 서비스들이 모여 단일 어플리케이션을 이룬다. 소프트웨어를 작은, 독립적인 서비스 단위로 나누는 방식으로 설계된다. 이러한 독립적인 마이크로서비스는 각각 자체 실행 가능하며, 특정 기능 또는 업무를 처리한다. 다른 마이크로서비스와 통신하여 전체 시스템을 구성하게 된다. 1. 낮은 서비스 간의 결합도 각 서비스는 독립적으로 개발, 배포, 확장될 수 있다. 최소한의 중앙집중식 시스템을 유지하며, 분산 시스템을 구축한다. 2. 독립된 기술 스택과 데이터 스토리지 독립적으로 어떤 기능에 충실하여 개발하게 되므로, 굳이 같은 ..