Jump to section

Red Hat OpenShift를 활용한 쿠버네티스 기반 Spring

URL 복사

Red Hat® OpenShift®를 이용해 쿠버네티스 네이티브 Spring 및 Spring Boot 애플리케이션을 개발하고 실행할 수 있습니다.

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를 통한 개발자 툴링을 사용하여 새로운 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 애플리케이션을 생성 및 연결할 수 있도록 쿠버네티스 오퍼레이터 사용

추가 자료

문서

Red Hat OpenShift Operator란?

Red Hat OpenShift Operators automate the creation, configuration, and management of instances of Kubernetes-native applications.

문서

Red Hat OpenShift의 AI/ML

OpenShift에는 AI/ML 워크플로우를 가속화하고 AI 기반 지능형 애플리케이션을 제공하기 위한 주요 기능이 포함되어 있습니다.

문서

Red Hat OpenShift으로 엣지 컴퓨팅 활용

OpenShift의 엣지 컴퓨팅 기능을 사용하여 원격 위치에서 애플리케이션 서비스를 확장하고 실시간으로 데이터 입력을 분석하세요.

OpenShift에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

신속하게 모델과 AI 기반 애플리케이션을 개발, 훈련, 서비스하고 모니터링하는 툴을 제공하는 AI 플랫폼입니다.

컨테이너를 추가 또는 축소하더라도 환경 전반에서 영구적으로 데이터를 저장할 수 있는 소프트웨어 정의 스토리지입니다.

빌트인 보안 정책을 갖춘 단일 콘솔로 쿠버네티스 클러스터와 애플리케이션을 관리합니다.

리소스

교육

무료 교육 과정

Running Containers with Red Hat Technical Overview

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures

무료 교육 과정

Containers, Kubernetes and Red Hat OpenShift Technical Overview