본문 바로가기

MSA (Micro Service Architecture)/Simple MSA Prototyping4

4. Service Gateway AS-IS TO-BE 지금은 Client(Angular app)에서 접근하는 서비스가 AuthService 하나지만, 비즈니스가 추가되면 Service가 100개 이상이 될 수도 있습니다. 따라서 Client는 모든 Service의 도메인을 알아야 한다는 불편함이 있습니다. 이를 보완하기 위해 일반적으로 Api Gateway를 이용합니다. 여기서는 Api Gateway를 지원하는 여러 라이브러리 중 Netflix의 zuul을 사용하기로 결정했습니다. zuul은 Websocket을 지원하지 않기 때문에 NotiService에 대한 요청은 그대로 두고, AuthService와 UserService에 대한 요청만 게이트웨이를 타도록 변경했습니다. 1. API Gateway Service 앵귤러에서 들어오는 모.. 2020. 10. 19.
3. Auth Service 구현 및 Spring Session 설정 AS-IS TO-BE User Service는 User Repository에 직접 접근하는 서비스로, 클라이언트가 곧바로 User Service와 통신하는 것은 보안상 좋지 않습니다. 그러므로 클라이언트와 User Service 사이에 Auth Service를 만들어서 인증 및 권한 처리를 수행하도록 해야 합니다. 1. AuthService API User Service는 깊은 마이크로서비스로서 저장소에 접근하는 작업만 수행하고, Auth Service가 사용자에 대한 인증과 권한에 대한 작업을 수행합니다. 현재 인증에 대한 기능만 필요하므로 Spring Session만 추가하여 작업하고, 추후에 권한에 대한 기능을 추가할 예정입니다. WebClient vs RestTemplate WebClient와 R.. 2020. 10. 19.
2. 실시간 데이터 동기화 AS-IS TO-BE 페이스북에서 친구들에 의해 피드가 추가된다면, 'N개의 새로운 피드가 있습니다. 끌어서 당겨오기'라는 문구를 보게 됩니다. 이처럼 정적인 웹페이지에서 데이터가 실시간으로 변경되었다는 것을 알리거나, 자동으로 업데이트되는 기능이 필요한 경우가 있습니다. MSA Prototype에는 유저의 정보가 업데이트 될 때, 웹페이지에서 페이지의 이동 없이 유저의 정보가 변경되는 기능을 추가하고자 했습니다. 이를 위해 크게 3가지의 작업을 했습니다. UserService의 update가 성공적인 결과를 반환했을 때, RabbitMQ의 exchange에 변경된 User 정보를 push 합니다. NotiService는 exchange가 보내는 데이터를 보관할 임시 Queue를 만들고, Queue에 데.. 2020. 10. 16.
1. UserService 구현 이 글은 Angular 카테고리의 ""에서 구현했던 Angular 애플리케이션을 토대로 MSA prototype architecture를 구성하는 내용을 담고 있습니다. 실제 구현 방법을 공유하려는 목적보다는 아키텍쳐아키텍처 구성을 공유하고자 하는 목적이므로, 아키텍처의 변화나 이슈 사항에 초점을 맞춰 읽으시길 바랍니다. 따라서 Angular에서 사용했던 어플리케이션을 가져와 사용할 것이나, 구조는 변경될 것입니다. AS-IS TO-BE AS-IS에서는 User정보를 저장하는 방법으로 Angular가 제공하는 inmemoryDB를 사용하고 있었습니다. TO-BE에서는 이를 제거하고 MongoDB를 사용하기 위해 UserService를 구현했습니다. 1. UserService API UserService에.. 2020. 10. 15.