본문 바로가기

programming/MSA

[MSA] Service Discovery와 API gate-way - Spring cloud netflix Ecreka, Spring cloud gate-way

반응형

1. 개요

 

 인프런에서 MSA를 배우고 있다. 8만원 정도의 강의인데 만족도가 정말 높다. 이 글은 해당 인프런에 올라온 이도원님의 강의를 보고 공부한 내용을 정리하는 글이다. 다음은 강의 링크이다.

 

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의

Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해

www.inflearn.com

 

멋쟁이사자처럼이라는 동아리에서 공부하면서 프로젝트가 엄청 많아졌고 이를 하나의 로그인 서버로 관리하고 싶다는 생각으로 MSA를 공부하게 되었다. 교수님의 말씀으로는 배보다 배꼽이 더 큰 수준이라고 하셨지만 동아리 내의 프로젝트가 많아지면서 효율적인 프로젝트 아키텍쳐가 되었다. 언젠가는 최종 배포를 통해 URL도 공개하였으면... 이번 글에는 전체적인 MSA의 구조에 대해 정리하고 싶다.

 

2. 본문

 

 MSA는 Microservice Architecture라는 뜻으로 하나의 큰 프로젝트를 잘게 나누어 구현하는 구조를 말한다. 이 구조를 왜 공부하려 했냐면 동아리 내의 정말 많은 프로젝트가 쏟아졌기 때문이다. 이 프로젝트를 하나의 로그인 서버로 연결하고 싶었고 이때 MSA에 대해서는 알고 있었기에 좋은 도전이 될 것 같았다. 각설하고 MSA를 나타내는 좋은 그림이 있기에 첨부해보았다.



 이렇게 하나의 큰 프로젝트를 작은 서비스단위로 나누는 것이 바로 Microservice Architecture이다. 그럼 분명 로깅이나 인증과 같은 많은 불편함이 있을 수 있는데, 이를 해결하는 여러 서비스와 구조를 배웠다. 이제 하나하나 내가 배운 것을 설명해보겠다.

 

- Service Discovery

 

 Service Discovery는 말그대로 특정한 서비스를 찾아주는 역할을 한다. 하나의 서비스를 생성하고 이를 Service Discovery에 등록하면 Service Discovery에서는 등록된 서버의 위치를 가지고 있다. 그냥 전화번호부 같다. 나는 이 Service Discovery의 역할을 하는 제품으로 Spring cloud netflix eureka를 사용하였다. 아마 아래와 같은 그림일 것이다.



 이렇게 되면 개인적으로 좋았던 점은 random port를 사용해 서버를 분산처리할 수 있었다는 것이다.

 

- api gate-way

 

 이제 생각해보자. 여러가지의 기능이 분산되어 있으니 로깅 혹은 인증 필터와 같은 부분을 구현하는데 큰 어려움이 있을 것이다. 특히 JWT 인증 필터를 구현하려면 3개의 서비스에 모두 커스텀필터를 구현해야한다. 이는 말이 안된다. 따라서 이런 문제를 해결하기 위해 gate-way를 구현해보았다. 제품은 spring cloud gateway를 사용하였다. 

 

 gateway로 서비스를 요청하면 gateway는 service discovery에 서비스의 위치를 물어보고 service discovery는 이를 반환한다. 반환된 위치로 gateway는 uri를 매핑하여 자원을 가지고 오면 최종적으로 client는 gateway에 요청하고 자원을 한버에 받아오는 효과가 발생한다. 다음과 같은 그림이 될 것이다.



3. 결어

 

 다음에는 일괄 메세징 처리와 같은 부분을 다뤄볼 것이다. 언제 올라올지는 모르겠지만... 시간이 되면 꼭 올릴 것이다! 베포까지 화이팅!

반응형