본문 바로가기
IT 이야기/Spring

[MSA] MSA 스터디 1장 Eureka

by Dblog 2022. 11. 18.
728x90

MSA를 스터디하고 토이프로젝트를 만들어가는 과정을 기록합니다.

 

MSA는 Micro Services Architecture의 약자로 직역하면 작은 서비스 구조이며

기존 모놀리식 아키텍쳐와는 관리적 측면이나 효율 측면에서 많은 차이가 있는 구조입니다.

 

MSA 관련한 삼성 SDS의 좋은 기술 문서가 있어서 공유합니다.

https://www.samsungsds.com/kr/insights/msa_and_netflix.html


기존 모놀리식은 큰 틀로 봤을땐 어플리케이션 하나와 DB하나를 통해 전체 비즈니스를 진행하는 방식으로 규모가 커지면 커질수록 복잡도가 증가하고 복잡도가 증가하는것과 비례해서 시스템의 효율이나 관리가 어려워 질 수 있습니다.

또한 작은 수정임에도 불구하고 빌드와 배포를 위해 거대한 비용을 사용해야 할 수도 있게됩니다.

MSA는 규모가 작은 비즈니스나 사업 초기에 구축하기에는 많은 비용이 들고 어렵지만 앞서 있었던 문제였던 규모가 커졌을때 발생하는 시스템 복잡도의 증가와 빌드 배포 비효율에 대비할 수 있는 구조로 이루어져있습니다.

복잡하게 얽혀있던 굵직 굵직한 모듈들을 각자의 데이터베이스를 가진 독립된 하나의 작은 서비스로 분리함으로써 여러 이득을 가져올 수 있는데 크게는

1. 빌드, 배포 효율 증가
2. 개발, 유지 관리 효율 증가
3. 시스템의 경량화

3 가지를 가져올 수 있습니다. 실제로 모놀리식에 가까운 현재 회사에서는 빌드, 배포 하는데 30분이상 걸릴 정도로 이미 상당한 규모로 커져있었고 그 때문에 개발 효율이나 테스트 효율이 많이 안좋았기 때문에 MSA 장점이 더 크게 느껴졌습니다.

이미 MSA를 도입하고 있는 Toss, 무신사와 같은 회사들의 기술 블로그에서 글을 읽으며 지금 당장 회사에서 MSA를 고려하고 있지 않지만 언젠간 우리도 도입할 수 있지 않을까라는 생각으로 스터디를 시작했습니다.

 

1분 내로 빌드 단축하기

https://www.youtube.com/watch?v=6y_lR3yjg7k

 

 

배포 시간 단축하는 방법 

https://techblog.woowahan.com/2696/

 

우리는 불편함을 어떻게 마주하고 있는가 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요. 신사업부 띠잉셀 박제현입니다. 띠잉 서비스를 개발하면서 어떤 고민을 하며 시스템을 개선했는지, 그리고 그 고민을 해결하는 과정에서 얻은 것은 무엇이었는지 가볍게

techblog.woowahan.com

 

 

MSA기술

  • Configuration Management
  • Service Discovery
  • API Gateway
  • Load Balancing
  • Resilence, Fault Tolerance

MSA에 주요 활용되는 기술은 위에 목록처럼 실패 방지 구조, API Gateway, 설정 관리 서버등 이미 수없이 많지만 spring 영역에서 자주 사용되는것은 아직까진 한정적인것 같습니다.

Spring Cloud는 많은 라이브러리들을 공식으로 지원하고 있고 아직 활발하게 업데이트 되고 있습니다.

많은 기술들이 있지만 먼저 몇개의 라이브러리부터 공부해볼 생각입니다.

 

  • Eureka
  • Spring Cloud Gateway
  • Spring Cloud Config Server

 

Eureka

유레카는 실행되는 마이크로서비스들을 동적으로 등록하고 서비스 디스커버리를 수행합니다.
또한 로드벨런싱을 제공한다고 하는데 일단 로드벨런싱은 API Gateway로 해볼 생각이라 동적 등록과 디스커버리 수행을 먼저 테스트 해볼 생각입니다.

 

Spring Cloud Config Server

gateway가 실행되기전에 설정 정보들을 불러오기 위해서 사용할 예정입니다. 
설정 정보는 application.yml로 설정할 수 있지만 코드베이스로 관리할 수 있는지를 테스트하고 싶어서 git에 올려두고 테스트 해볼 예정입니다.

 

Spring Cloud Gateway

단기적으로는 Load Balancing을 테스트해볼 생각입니다.

Eureka에서 제공하는 Ribbon을 사용할 수 있지만 스프링에서 공식으로 제공하는 라이브러리에는 장점이 확실하게 있을것 같아서 먼저 공부해볼 생각입니다.

 

728x90

'IT 이야기 > Spring' 카테고리의 다른 글

[JPA] @Inheritance 테이블 상속  (0) 2022.03.15
[Spring] AWS S3를 연동하기  (0) 2022.01.03

댓글