본문 바로가기
Cloud/MSA

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

by 민휘 2024. 1. 18.

클라우드 클럽 3기에서 Spring Cloud로 개발하는 MSA 스터디를 주최하고 운영해보았다. MSA가 궁금한데 쿠버네티스는 너무 어렵고, 그나마 익숙한게 Spring이어서 Spring Cloud 제품을 사용해보고 싶었다. 마침 클라우드 클럽 멤버들 중 스프링 사용자들이 있어서 이 분들과 함께 스프링 클라우드와 마이크로서비스를 공부해보고자 스터디를 열었다. 모집하고 보니 스프링을 사용해보지 않으신 분들도 계셔서 복습했는데, RESTful API 구현하면서 HATEOAS라는 것도 알게 되었다. 

 

스터디가 끝난 후 회고하면서, 다소 아쉬운 부분도 있었지만(후반부에 참여율이 떨어짐) MSA 입문은 성공적으로 한 것 같아 기쁘다. 기본 철학은 모듈화를 분산 환경에 적용하는 것이고, 변경 사항을 유연하고 빠르게 반영할 수 있어 비즈니스에 유리하다. 하지만 관리할 포인트가 증가하고 시스템 전체의 복잡성은 기하급수적으로 높아진다. 운영 비용이나 인력도 더 들어간다. 이러한 복잡성을 다스리기 위해 도메인 주도 설계나 클라우드의 관리형 서비스의 도입도 많이 선택한다. 객체지향원리와 크게 다르지 않다고 느꼈다. 코드의 변경 비용을 줄이지만 전체 시스템의 복잡성은 점점 증가한다. 결국 마이크로서비스도 서비스 간 의존성을 어떻게 다스리냐가 관건인 것 같다.

 

이론이나 패턴들을 읽어보면 그렇게 어렵거나 복잡해보이지 않았는데, 막상 구현을 해보니 정말 복잡했다. 스프링 클라우드가 그나마 스프링 개발자들 쓰기 편하라고 만든 도구라는데 이게 정말 간단한 건가요?! 😂😂 인프라를 직접 다루지 않도록 애플리케이션 레벨에서 솔루션을 구현했다고 하는데, 다음에는 인프라 관리로 한번 다뤄보고 싶다.

 

스프링 부트에서 제공하는 액추에이터로 서버의 메트릭 정보를 받아보고, 스프링 클라우드의 가장 핵심(?)에 가까운 서비스 디스커버리와 api 게이트웨이를 사용해보고, 설정 정보 동기화를 위한 Spring Cloud Bus, Spring Cloud Config Server, 장애 처리를 위한 Resilience4J를 사용해보았다. 스프링 클라우드 제품 외에도 이벤트 기반으로 설정 정보를 전달하기 위해 RebbitMQ나 비동기 이벤트 처리를 위한 Kafka, 모니터링을 위한 Grafana 등의 오픈소스도 사용해보았다. 이것 저것 많이 써보긴 했는데 스프링 생태계에서만 사용 가능하다니 좀 아쉽다. Spring Cloud Kubernates라는 제품도 있던데 적용해보고 싶다.

 

 

GitHub - Mingadinga/2023_Study_SpringCloud_MSA: <Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)> 듣

<Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)> 듣고 실습해요. Contribute to Mingadinga/2023_Study_SpringCloud_MSA development by creating an account on GitHub.

github.com

 

 

스프링 클라우드로 시작하는 MSA 입문 | Notion

모.놀할 사람~~🕺 (p/w: study)

cloudclub.notion.site

 

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) | Notion

목표 : 스프링 클라우드를 사용해 MSA 개발, 컨테이너 기술인 도커에 배포

uncovered-chocolate-cea.notion.site

 

 

 

 

이번 스터디를 계기로 시스템 아키텍처에 관심이 생겨서, 다음에는 <가상 면접 사례로 배우는 대규모 시스템 설계 기초>를 읽어보고 싶다.