개요
Red Hat® OpenShift®를 이용해 쿠버네티스 네이티브 Spring 및 Spring Boot 애플리케이션을 개발하고 실행할 수 있습니다.
Spring 개발자를 위한 쿠버네티스 지원
Spring 애플리케이션은 쿠버네티스와 쿠버네티스에 배포된 기능을 활용하여, 효율적인 쿠버네티스 기반 개발을 지원하는 데 필요한 클라우드 서비스를 제공할 수 있습니다. 여기에는 특히 메시지 큐, 데이터베이스, 퍼시스턴트 스토리지, 캐싱 등과 같은 서비스가 포함됩니다.
서비스 레지스트리
마이크로서비스 아키텍처는 호스트의 수와 주소를 항상 예측하거나 미리 정적으로 구성할 수는 없는 프라이빗, 하이브리드 또는 퍼블릭 클라우드에서 개별 서비스의 동적 확장을 의미하는 경우가 많습니다. 쿠버네티스에서 서비스 복제 및 확장은 핵심 기능입니다. 즉, 클라이언트가 캐시를 유지하고 서비스 레지스트리 자체의 장애를 설명할 필요가 없습니다. 예를 들어, Netflix Ribbon(종종 Spring 애플리케이션과 함께 사용)은 코드 변경 없이 서비스 레지스트리 대신 쿠버네티스를 사용하도록 선언적으로 구성할 수 있습니다.
부하 분산
Spring 애플리케이션에서 스테이트리스 서비스에 대한 클라이언트 호출의 경우 고가용성(HA)은 서비스 레지스트리에서 서비스 조회와, 사용 가능한 인스턴스 간 부하 분산이 필요함을 의미합니다. 쿠버네티스는 호출의 부하가 분산되고 적절한 인스턴스로 리디렉션되는 단일 서비스 주소를 제공합니다. 쿠버네티스 클러스터 내에서 서비스 이름은 이 클러스터 IP 주소로 확인되며 로드 밸런서에 연결하는 데 사용할 수 있습니다. 외부에서의 호출이나 라우터를 거치는 호출이 바람직하지 않은 경우 서비스에 대해 외부 IP 주소를 구성할 수 있습니다.
내결함성
고도로 분산된 마이크로서비스의 특성으로 인해 원격 호출의 수가 증가하는 데 따른 원격 호출의 실패 위험은 더 높습니다. 과거에 서킷 브레이커와 같은 내결함성 패턴을 구현하는 부담은 개발자의 몫이었습니다. 그러나 서비스 메쉬를 구현하는 Istio와 같은 프로젝트는 이러한 부담을 완화하고 클러스터에서 실행되는 Spring 서비스 운영을 더 강력히 제어할 수 있습니다.
외부 구성
외부 구성 관리 솔루션은 애플리케이션의 이식성을 높이고 외부 변경 사항에 대한 경직성을 낮추는 데 사용되는 구성 파일, 커맨드라인 인수, 환경 변수라는 일반적인 조합에 대한 대안을 제공할 수 있습니다. 쿠버네티스 ConfigMap은 개별 속성과 같은 세분화된 정보, 또는 전체 구성 파일이나 JSON Blob과 같은 개괄적인 정보를 저장하는 데 사용할 수 있습니다. @ConfigProperty와 같은 주석을 사용하여 별도의 구성을 유지하면서 Spring 애플리케이션에 액세스할 수 있도록 컨테이너에 구성 데이터를 주입하는 메커니즘을 제공합니다.
분산 추적 및 애플리케이션 메트릭
이러한 모든 장점에도 불구하고 마이크로서비스 아키텍처는 분석과 트러블슈팅이 어려울 수 있습니다. 각 비즈니스 요청은 다양한 레이어의 개별 서비스에 대한 호출 및 개별 서비스 간에 여러 호출을 생성합니다. 분산 추적은 모든 개별 서비스 호출을 하나로 묶고 생성된 고유 ID를 통해 비즈니스 요청과 연결합니다. 뿐만 아니라 메트릭을 통해 Spring 애플리케이션은 애플리케이션 수준 데이터를 노출하여 애플리케이션 상태를 세밀하게 검사할 수 있습니다. Jaeger와 같은 추적 툴은 Prometheus 및 Grafana를 포함하는 메트릭 스택과 결합되어 쿠버네티스에서 Spring 애플리케이션의 모니터링과 트러블슈팅을 위한 견고한 기반을 제공합니다.
쿠버네티스용 Spring 최적화
Spring 애플리케이션이 분산 서비스 컬렉션으로 진화함에 따라 이러한 서비스 간의 통신 및 보안 관리는 더욱 어려워집니다. Red Hat Runtimes와 결합된 Red Hat OpenShift는 Spring 개발자에게 업계를 선도하는 컨테이너 및 쿠버네티스 하이브리드 클라우드 플랫폼에서 규모에 따라 Spring 애플리케이션을 구축하고 관리하는 데 필요한 툴링, 프레임워크 및 네이티브 쿠버네티스 통합을 제공합니다.
Spring 개발자를 위한 Red Hat OpenShift의 장점
Spring 개발자가 Red Hat OpenShift를 사용하면 유용한 점이 많습니다. 여기에는 다음이 포함됩니다.
쿠버네티스 및 DevOps에 최적화
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 OpenShift 및 Red Hat Application Services에서 기본 쿠버네티스 플랫폼 및 서비스의 장점을 누릴 수 있습니다.
- 컨테이너 환경에서 Java 애플리케이션을 실행하는 데 최적화된 OpenJDK의 Red Hat 빌드
- Spring Cloud Kubernetes, Spring Security(Red Hat SSO 포함), Spring Caching(Red Hat Data Grid 포함), Spring Messaging(Red Hat AMQ 포함), Spring Web, Spring Data 등과 통합되는 Red Hat Application Services를 통한 쿠버네티스 네이티브 서비스
- Spring Boot 및 Red Hat Fuse(Apache Camel 기반)를 사용하는 애플리케이션 서비스 전반의 공통 엔터프라이즈 통합 패턴 구현