개발 메모장

[Spring Cloud] Spring Cloud란? 본문

IT 기타

[Spring Cloud] Spring Cloud란?

Delon 2020. 8. 12. 00:14

MicroService 환경에 프로젝트를 구성하다 보니 기본이 되는 환경을 잡는 부분이 가장 중요했다.

그리고 분산 처리 환경중 가장 기본이 되는 게이트웨이부터 생각을 해야했다. AWS의 API Gateway, 언어별로 다양한 프레임 워크도 있었고, tyk나 kong 같은 오픈소스들도 있었다. 그리고 그 많은 후보들중 Spring Cloud를 선택하였다. 

Spring Cloud를 선택한 이유를 얘기하기 전 Spring Cloud에 대해 간단하게 설명하자면


공식 홈페이지 : https://spring.io/projects/spring-cloud

 

위 홈페이지에서 가장 먼저 말하듯 MSA(마이크로 서비스) 즉 분산처리 환경을 작업할 수 있는 환경을 가장 빠르게 제공한다.

게이트 웨이 / 로드밸런서 / 서킷 브레이커 / 서비스 레지스트리 / Remote Config 서버 등 정말 많은 서비스를 프로젝트 생성부터 Run까지 몇단계 거치지 않고 , 각각의 서비스들이 유기적으로 돌아가게 된다. 

 또한 요즘 매우 유명한 넷플릭스에서 개발한 OSS(open source software)들과 ELK, Kafka, rabbitMQ, AWS, Azure, GCP, Kubernetes까지 정말 많은 서비들과 호환이 되어 있다. 그리고 이런 서비스들은 정말 간단한 설정 몇번으로 운영할 수 있다.


라고 실제로 프로젝트를 위하여 찾아보고 느껴본 내용이다.

 

Spring Cloud(스프링 클라우드)를 선택한 가장 큰 이유는 Spring boot 와 마찬가지로 가장 빠른 환경 설정이었다.

Annotation과 YML,Properties 들을 통하여 바로 시작할 수 있다.

그리고 두번째는 타 언어/프레임워크들과의 호환성이었다. 마이크로서비스를 시작단계에서 이미 기존의 서비스들이 다양한 언어와 통일되지 프레임워크로 구성되어 있었다. 그래서 이 부분을 가장 안전하게 가져가기 위하여 선택한 부분도 있었다. 이미 많은 유명한 서비스들의 연동을 해놓은 탓인지 조금만 검색해보면(물론 전부는 아니다!) Spring Cloud와 연동될 수 있는 라이브러리들이 많이 존재하고 있다.

그리고 마지막은 역시 많은 레퍼런스 였다..

 

물론 많은 레퍼런스와 많은 버젼들로 혼란스러울때도 있었고, 모놀리틱환 환경에서 마이크로 서비스 환경으로 오게되니 어떻게 좀 더 효율적으로 쪼개고 서로에게 영향을 미치지 않을지 고민하게 되었다. 하지만 Spring Cloud로 개발을 하다보니 개발환경에서 시작도 하지 못하고 버벅이는 문제도 줄어들게 되어 조금 더 아키텍쳐 측면에 관하여 생각을 할 수 있게 되었다.

 

물론 Spring Cloud가 정답은 아니고 각각의 장단점은 있지만 MSA를 처음 시작해본다면 선뜻 추천할 수 있을 것 같다.

 

Comments