1. 개요
인프런에서 MSA를 배우고 있다. 8만원 정도의 강의인데 만족도가 정말 높다. 이 글은 해당 인프런에 올라온 이도원님의 강의를 보고 공부한 내용을 정리하는 글이다. 다음은 강의 링크이다.
멋쟁이사자처럼이라는 동아리에서 공부하면서 프로젝트가 엄청 많아졌고 이를 하나의 로그인 서버로 관리하고 싶다는 생각으로 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. 결어
다음에는 일괄 메세징 처리와 같은 부분을 다뤄볼 것이다. 언제 올라올지는 모르겠지만... 시간이 되면 꼭 올릴 것이다! 베포까지 화이팅!
'programming > MSA' 카테고리의 다른 글
[MSA] Config 파일 관리를 위한 Spring cloud bus와 AMQP(Rabbit MQ) (1) | 2023.08.26 |
---|---|
[MSA] API gate-way 인증 설정과 Config service의 구현 (0) | 2023.08.22 |
[MSA] Kafka 오류 해결... - Kafka를 완벽하게 삭제하는 방법 (0) | 2023.07.31 |