[Project] Spring Cloud vs Kubernetes

mDev_97·2023년 12월 17일

Goormthon-Project

목록 보기
1/4
post-thumbnail

구름톤 트레이닝에서 진행하는 팀 프로젝트로 우리 팀은 프로젝트에 MSA를 적용하기로 하였다.
그 과정에서 Spring Boot를 사용한 기존의 모놀로식 환경을 MSA 환경으로 전환하기 위한 방법으로
Spring Cloud를 접하게 되었고, 우리 팀은 구름톤 과정에 맞게 쿠버네티스를 사용해야만 했다.

처음 프로젝트를 구상하는 단계에서는 우리 팀은 단순하게 Spring Cloud를 사용해서
코드를 작성하고, Kubernetes를 사용해서 Spring Cloud로 작성된 서버를 배포하면 되는 것으로 생각하였다.

하지만, Spring Cloud와 Kubernetes는 분명하게 서로 다른 점들이 존재하였고,
Spring Cloud 라이브러리를 사용하는 것보다 Kubernetes 환경에서 좀 더 간편하게 관리할 수 있는 부분들이 있었다.

이에 MSA 방식으로 프로젝트를 진행하기 위해서 Spring Cloud와 Kubernetes를 비교해보려고 한다.

Spring Cloud vs Kubernetes

위에 보이는 맵핑 테이블의 핵심은 다음과 같다.

  • Spring Cloud
    • 스프링 클라우드는 다수의 자바 라이브러리를 제공한다.
      -> 즉, JVM 환경인 자바에 적합한 기능들을 제공한다.

    • 스프링 클라우드의 라이브러리들은 어플리케이션 Stack의 일부분으로써 기능을 제공한다.

      📌 Spring Cloud
      스프링 클라우드는 분산 환경에서 나타나는 공통적인 패턴들을 개발자가 빠르게 구축할 수 있는 도구들을 제공한다. 이에 Service Discovery, Routing 등이 Neflix OSS 라이브러리를 기반으로 만들어져 Java 개발자 친화적으로 작성되어있다.

  • Kubernetes
    • 스프링 클라우드와는 다르게 자바 뿐만 아니라 다양한 언어를 지원한다.
      -> 즉, 모든 언어에 대해 보편적인 방식으로 분산 컴퓨팅 문제를 해결하기 위한 방식을 제공한다.
    • 다양한 기능들을 어플리케이션 Stack이 아닌 플랫폼 레벨에서 제공한다.
    • 또한, 스프링 클라우드와는 다르게 어플리케이션 내부가 아닌 외부에서 동작한다.

      📌 Kubernetes
      앞서 말한 것과 같이 쿠버네티스는 Spring Cloud와는 다르게 다양한 언어를 지원하고, 클라우드 네이티브 또는 전통적인 컨테이너 어플리케이션 모두 사용할 수 있는 일반적인 컨테이너 관리 방식을 제공하는 플랫폼이다. 이를 통해서 Spring Cloud보다 MSA에서 발생할 수 있는 문제들을 더 광범위하게 해결할 수 있는 방법을 제공한다.

위의 그림과 작성한 내용들을 보면 Spring Cloud보다 Kubernetes가 더 우수하고, Spring Cloud를 사용할 이유가 없어보인다.

하지만, Kubernetes에 비해 Spring Cloud가 가지는 강점들이 있다.
바로, 스프링 클라우드는 다양한 라이브러리들을 제공하고, 제공하는 라이브러리들은 다른 라이브러리들과 쉽게 통합할 수 있다는 것이다.
특히 FeignClient나 RestTemplate는 어노테이션 기반으로 코드를 작성하여
개발자가 손쉽게 서비스간 통신을 구현할 수 있어 개발자 친화적이다.
반면, 쿠버네티스는 개발자 친화적인 플랫폼이 아니다. 이에 개발자들이 새로운 개념을 배우고 문제를 해결하기 위한 방법들을 익히기 위해서는 많은 시간들을 투자해야한다.

이처럼 어떤 부분에서는 Spring Cloud가 강점을 가지고 있고, 어떤 부분에서는 Kubernetes가 강점을 가지고 있다.
이러한 비교를 통해서 우리 팀의 프로젝트에서는 어떻게 적용할 것인지 고민해봐야할 필요성이 있다.

profile
안녕하세요. 백엔드, 클라우드, 인프라에 관심과 열정이 있는 김문성입니다. 😊

0개의 댓글