로그인 / 등록 Account
Jump to section

쿠버네티스 기반 Spring

URL 복사

Red Hat® OpenShift®는 쿠버네티스 네이티브 Spring 및 Spring Boot 애플리케이션을 개발하고 실행하기에 가장 좋은 방법입니다.

Spring Framework는 분산형 마이크로서비스아키텍처를 기반으로 애플리케이션을 구축하는 데 가장 많이 사용되는 Java 프레임워크 중 하나입니다. Java 기반 애플리케이션을 위한 Spring의 프로그래밍 및 구성 모델은 개발자가 특정 배포 환경에 불필요하게 연결하지 않고도 애플리케이션 수준 비즈니스 로직에 집중할 수 있도록 하는 '배수관' 역할에 중점을 둡니다. 그런 다음 Spring Boot는 애플리케이션을 쿠버네티스컨테이너로 손쉽게 배포할 수 있는 독립 실행 가능한 애플리케이션으로 손쉽게 패키징하고 구성하도록 지원합니다.

쿠버네티스 네이티브 Spring

대부분의 기존 Java 프레임워크와 마찬가지로 Spring은 쿠버네티스와 같은 플랫폼에 기반하는 컨테이너에서 실행되고 있다는 것을 기본적으로 '인지'하지는 못합니다. Spring Framework에는 Spring Boot, Spring Cloud, Spring Web을 비롯해 서비스 검색, 부하 분산, 요청 라우팅 등을 수행하는 많은 기타 구성 요소와 같이 분산형 애플리케이션을 더욱 쉽게 구축하고 배포할 수 있는 많은 구성 요소가 포함되어 있습니다. 쿠버네티스를 활용하면 이러한 작업의 많은 부분을 기본 컨테이너 플랫폼에 위임하여, 기반 플랫폼과 더욱 효율적으로 통합되는 애플리케이션을 생성할 수 있습니다. 이렇게 최적화된 코드 경로를 사용하여 Spring 애플리케이션을 구축하는 것이 Spring과 쿠버네티스를 결합해 강력한 성능을 실현하는 핵심 요인입니다.

Spring 애플리케이션은 쿠버네티스와 쿠버네티스에 배포된 기능을 활용하여, 효율적인 쿠버네티스 기반 개발을 지원하는 데 필요한 클라우드 서비스를 제공할 수 있습니다. 여기에는 특히 메시지 큐, 데이터베이스, 퍼시스턴트 스토리지, 캐싱 등과 같은 서비스가 포함됩니다.

서비스 레지스트리

마이크로서비스 아키텍처는 호스트의 수와 주소를 항상 예측하거나 미리 정적으로 구성할 수는 없는 프라이빗, 하이브리드 또는 퍼블릭 클라우드에서 개별 서비스의 동적 확장을 의미하는 경우가 많습니다. 쿠버네티스에서 서비스 복제 및 확장은 핵심 기능입니다. 즉, 클라이언트가 캐시를 유지하고 서비스 레지스트리 자체의 장애를 설명할 필요가 없습니다. 예를 들어, Netflix Ribbon(종종 Spring 애플리케이션과 함께 사용)은 코드 변경 없이 서비스 레지스트리 대신 쿠버네티스를 사용하도록 선언적으로 구성할 수 있습니다.

부하 분산

Spring 애플리케이션에서 스테이트리스 서비스에 대한 클라이언트 호출의 경우 고가용성(HA)은 서비스 레지스트리에서 서비스 조회와, 사용 가능한 인스턴스 간 부하 분산이 필요함을 의미합니다. 쿠버네티스는 호출의 부하가 분산되고 적절한 인스턴스로 리디렉션되는 단일 서비스 주소를 제공합니다. 쿠버네티스 클러스터 내에서 서비스 이름은 이 클러스터 IP 주소로 확인되며 로드 밸런서에 연결하는 데 사용할 수 있습니다. 외부에서의 호출이나 라우터를 거치는 호출이 바람직하지 않은 경우 서비스에 대해 외부 IP 주소를 구성할 수 있습니다.

내결함성

고도로 분산된 마이크로서비스의 특성으로 인해 원격 호출의 수가 증가하는 데 따른 원격 호출의 실패 위험은 더 높습니다. 과거에 서킷 브레이커와 같은 내결함성 패턴을 구현하는 부담은 개발자의 몫이었습니다. 그러나 서비스 메쉬를 구현하는 Istio와 같은 프로젝트는 이러한 부담을 완화하고 클러스터에서 실행되는 Spring 서비스 운영을 더 강력히 제어할 수 있습니다.

외부 구성

외부 구성 관리 솔루션은 애플리케이션의 이식성을 높이고 외부 변경 사항에 대한 경직성을 낮추는 데 사용되는 구성 파일, 커맨드라인 인수, 환경 변수라는 일반적인 조합에 대한 대안을 제공할 수 있습니다. 쿠버네티스 ConfigMap은 개별 속성과 같은 세분화된 정보, 또는 전체 구성 파일이나 JSON Blob과 같은 개괄적인 정보를 저장하는 데 사용할 수 있습니다. @ConfigProperty와 같은 주석을 사용하여 별도의 구성을 유지하면서 Spring 애플리케이션에 액세스할 수 있도록 컨테이너에 구성 데이터를 주입하는 메커니즘을 제공합니다.

분산 추적 및 애플리케이션 메트릭

이러한 모든 장점에도 불구하고 마이크로서비스 아키텍처는 분석과 트러블슈팅이 어려울 수 있습니다. 각 비즈니스 요청은 다양한 레이어의 개별 서비스에 대한 호출 및 개별 서비스 간에 여러 호출을 생성합니다. 분산 추적은 모든 개별 서비스 호출을 하나로 묶고 생성된 고유 ID를 통해 비즈니스 요청과 연결합니다. 뿐만 아니라 메트릭을 통해 Spring 애플리케이션은 애플리케이션 수준 데이터를 노출하여 애플리케이션 상태를 세밀하게 검사할 수 있습니다. Jaeger와 같은 추적 툴은 PrometheusGrafana를 포함하는 메트릭 스택과 결합되어 쿠버네티스에서 Spring 애플리케이션의 모니터링과 트러블슈팅을 위한 견고한 기반을 제공합니다.

Spring 애플리케이션이 분산 서비스 컬렉션으로 진화함에 따라 이러한 서비스 간의 통신 및 보안 관리는 더욱 어려워집니다. Red Hat Runtimes와 결합된 Red Hat OpenShift는 Spring 개발자에게 업계를 선도하는 컨테이너 및 쿠버네티스 하이브리드 클라우드 플랫폼에서 규모에 따라 Spring 애플리케이션을 구축하고 관리하는 데 필요한 툴링, 프레임워크 및 네이티브 쿠버네티스 통합을 제공합니다.

Spring 개발자가 Red Hat OpenShift를 사용하면 유용한 점이 많습니다. 여기에는 다음이 포함됩니다.

OpenShift에서 Spring Boot를 사용하면 기존 및 신규 Spring 애플리케이션에 대해 자연스럽게 '쿠버네티스 기반 Spring Boot' 개발자 경험을 얻게 됩니다.

  • Spring 및 Spring Boot를 사용하여 클라우드 네이티브 애플리케이션 구축 지원
  • 기존의 독립 실행형 지원 서비스를 대체하는 쿠버네티스 기능 통합
    • 외부 구성: 쿠버네티스 ConfigMap 및 Spring Cloud Kubernetes와의 통합
    • 서비스 검색: 쿠버네티스 서비스
    • 부하 분산: 쿠버네티스 복제 컨트롤러
    • 자동 재시작: 쿠버네티스 상태 점검 및 Spring Actuator와의 통합
    • 메트릭: Prometheus, Grafana 및 Spring Cloud Sleuth와의 통합
    • 분산 추적: Istio 및 Jaeger 추적 툴 사용
  • Red Hat OpenShift를 통한 개발자 툴링 및 Red Hat CodeReady Studio 개발자 툴링을 사용하여 새로운 Spring 프로젝트를 신속하게 구축하고, 선호하는 IDE에서 익숙한 Spring API에 액세스하고, Red Hat OpenShift에 배포

익숙한 Spring API를 사용하고 Red Hat OpenShiftRed Hat Application Services에서 기본 쿠버네티스 플랫폼 및 서비스의 장점을 누릴 수 있습니다.

Spring 지식을 활용하면 최신 기술을 사용하여 현대적인 애플리케이션을 개발할 수 있습니다.

  • Camel-KKafka를 사용하는 서버리스 Spring 애플리케이션
  • 익숙한 Spring API를 사용하여 Quarkus로 컨테이너 네이티브 Java 애플리케이션 구축
  • Kogito를 사용하는 네이티브 쿠버네티스 비즈니스 프로세스
  • Halkyon을 통해 네이티브 쿠버네티스 API를 사용하여 자연스럽게 Spring 애플리케이션을 생성 및 연결할 수 있도록 쿠버네티스 오퍼레이터 사용

추가 자료

핸즈온

교육 시나리오

쿠버네티스 및 OpenShift에서 Spring 및 Spring Boot 애플리케이션 개발을 위한 핸즈온 교육

도큐멘테이션

표준 아키텍처

OpenShift에서 분산된 Spring 애플리케이션을 설계하는 방법을 알아봅니다.

커뮤니티

오픈소스

SnowDrop 프로젝트를 통해 Cloud Native Spring을 구축하고 지원하는 Red Hat의 개방형 접근 방식에 대해 자세히 알아보세요.

현대적인 애플리케이션 개발을 위한 쿠버네티스 기반

Red Hat OpenShift

Red Hat OpenShift

클라우드 네이티브 애플리케이션을 더 빠르게 배포할 수 있도록 지원하는 컨테이너 플랫폼입니다.

Red Hat OpenShift

Red Hat OpenShift Streams for Apache Kafka

애플리케이션 구축, 배포, 확장을 위한 관리형 클라우드 서비스입니다.

Red Hat Runtimes

Red Hat Runtimes

클라우드 네이티브 애플리케이션 개발에 적합한 다양한 런타임과 프레임워크입니다.

Red Hat OpenShift

Red Hat OpenShift Data Foundation

컨테이너를 위한 소프트웨어 정의 스토리지입니다.

Illustration - mail

유용한 콘텐츠 더 보기

Red Hat Shares 뉴스레터를 구독해 보세요(무료).