티스토리 뷰

#0 설계

MSA로 개발을 한다는 것은, 생각보다 많은 것을 필요로 한다. 서비스가 나누어 개발하였는데 몇 개 되지 않을 수 있고 반면에 점점 늘어나서 10개 20개.. 수십 개로 늘어날 수 있다. 이렇게 늘어난 서비스들의 관리는 복잡하고 어려워지며 클라우드 환경으로 가게 되면 서버의 상태에 따라 자동으로 Scale-up, out 되어 수시로 변경 되는 각 서비스의 IP와 port 등의 정보들을 관리하며 호출하기는 불가능에 가깝다. 

 

그래서 이러한 부분들을 보완하기 위한 친절한 소스들이 많이 제공되어 있다. 일단 초기에 테스트하면서 몇 가지 구축을 해보려 하는 것의 목록은 아래와 같다.

  • Spring Cloud Config Server
    프로젝트 별 환경 설정들을 별도 서버로 관리하고 동적으로 변경 가능하도록 해준다. 득 보다 실이 많을 수도 있고, 잘 활용한다면 좋을 수도 있다. 일단은 사용해 보기로 하고 지속적으로 사용할지는 겪어보아야 알 것 같다.
  • Spring Cloud Netflix Eureka
    흩어진 서비스들의 정보를 레지스트리에 등록하고 동적인 서비스의 탐색과 로드밸런싱 등을 제공한다. Eureka서버를 구축해두고 각 마이크로 서비스들은 서버 기동 시 Eureka Client를 통해 Eureka서버에 알리고 특정 주기로 상태를 전송한다.
  • Spring Cloud Netflix Zuul
    Zuul은 API Gateway다. 많은 마이크로 서비스들이 제공하는 API들은 동적으로 IP와 PORT가 바뀌고 있으며 Front개발자는 그 정보를 알 수가 없다. 그래서 Zuul을 통해 서비스의 이름을 통해 접근하고 API를 호출할 수 있도록 라우팅 기능을 활용하며, CORS, 인증, 보안 등 공통 설정도 처리한다.
  • Apache Kafka
    Front에서는 Gateway를 통해 API를 호출 하지만 해당 방법으로 마이크로 서비스간에 통신을 효율적으로 하기는 어렵다. 그래서 Apache Kafka와 같이 메시지 브로커를 이용하여 마이크로 서비스 간의 통신을 하기 위해 사용할 예정이며 트랜잭션 처리를 Kafka의 이벤트를 이용해 처리할 생각이다.

일단 필요한 것들을 생각을 좀 해보면서 어떤 것을 사용해야 가장 빠르고 효율적으로 경험을 해보고 프로젝트를 구성할 수 있을지를 생각하다 보니 위와 같이 결정이 된 것 같다. 그런 면에서 Spring boot기반의 프로젝트 구성이 현재로서는 가장 효율적으로 보이며, 이후 세부적으로 성능이나, 기능 등을 겪어보며 해당 부분에 대한 다른 모듈로의 교체 등을 고민해 보는 것이 좋을 것 같다.

 

일단 생각하는 구조를 app.cloudcraft.co 에서 만들어 보았다.

 

각각의 Micro Service들은 아래의 기능을 포함한다.

- spring-cloud-config (client) : spring-cloud-server에서 환경 설정을 가져오기 위함

- spring-cloud-netflix-eureka-client : ip, port, service id 등의 정보를 eureka server에 지속적으로 제공 하기 위함

- spring-kafka : 서비스간의 통신을 위해, 내가 구독하고 있는 토픽에 대한 이벤트(메시지)를 받기 위해서

- 그 외 web, actuator.. 등등

 

Zuul에는 Micro service와 같이 spring-cloud-netflix-eureka-client를 포함한다. eureka-server에서 제공해주는 활성화 상태의 서비스들의 목록을 로컬 레지스트리에 저장해 두었다가 api요청이 들어올 경우 해당 정보를 기반으로 api를 호출하도록 운영한다. 

 

각 부분에 대한 세부적인 기능은 차차 필요한 것 위주로 찾으면서 적용해 나갈 예정이며 일단은 기본적인 기능에 충실한 테스트 코드 부터 작성할 예정이다.


MSA로의 프로젝트 개발은 처음이며, 알기 위해 작성하고 보완해 나가기 위한 글이니 해당 내용이 틀릴 수도 있고 정답이 아닐 수 있으니 전적으로 신뢰하지 않았으면 좋겠고, 주의 점이나 놓치는 부분에 대해서는 보완해주셨으면 좋겠습니다. 

 

다음 글 > Spring boot 기반 마이크로서비스 아키텍처(Microservices Architecture, MSA) #1 기초개발환경 구성

https://mr-spock.tistory.com/40

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함