컨버지드 데이터베이스 및 Helidon을 사용하여 마이크로서비스 배포
구조
이 아키텍처는 클라우드 인프라와 함께 마이크로서비스를 사용하는 데 필요한 리소스와 토폴로지를 보여주며 통합된 Oracle Database 및 Helidon입니다.
융합된 Oracle Database는 현대적 데이터 유형, 주요 데이터 센터 구성요소 및 최신 개발 패러다임을 기본적으로 지원하는 최적화된 데이터베이스입니다. 예를 들어 융합된 데이터베이스는 위치 인식용 공간 데이터, 문서 저장소용 JSON, 장치 통합용 IoT, 실시간 분석을 위한 인메모리 기술 및 기존 관계형 데이터를 지원합니다. 컨버지드 데이터베이스는 이러한 모든 데이터 유형에 대한 지원을 제공함으로써 IoT에서 블록체인, 분석 및 머신 러닝까지 모든 유형의 워크로드를 실행할 수 있습니다. 마이크로서비스를 비롯한 모든 개발 패러다임도 처리할 수 있습니다.
마이크로서비스 아키텍처에는 엔터프라이즈 애플리케이션에 민첩성, 수평 확장, 견고성을 제공하는 메시징 계층, 애플리케이션 계층 및 데이터베이스 계층이 세 가지로 있습니다. 이 참조 아키텍처는 Oracle Gen 2 Cloud에서 이용할 수 있는 표준 기반 구성요소를 활용하여 지속성 레이어로 Oracle Database를 사용하는 강력한 마이크로서비스를 구축합니다.
메시징 계층은 데이터베이스, 트랜잭션 이벤트 대기열(TEQ) 또는 Oracle Cloud Infrastructure 스트리밍 서비스와 같은 Kafka 기반 전송 방식에 내장된 JMS(Java Message Service) 트랜잭션 메시징입니다.
- 이벤트 모니터링 및 알림: Grafana와 Prometheus
- 관찰 및 추적: Kiali와 Jaeger
- 기존 애플리케이션: Java Enterprise Edition 및 Oracle Weblogic
- Java 마이크로 서비스: Java, helidon.io 및 Oracle GraalVM Enterprise
- 다중 언어 마이크로서비스: node.js 및 python
- Oracle Container Engine for Kubernetes의 서비스 메시: Istio, Kubernetes 및 Docker
데이터베이스 계층은 두 개의 Autonomous Transaction Processing 인스턴스(ATP-1 및 ATP-2)로 구성됩니다. 이 아키텍처는 마이크로서비스를 위해 데이터베이스에 관계형 데이터, 공간 데이터, 문서, 텍스트 및 JSON 데이터를 사용하며 포함된 트랜잭션 메시징을 사용하여 워크플로우를 간소화합니다.
다음 다이어그램은 온라인 모바일 식음료 애플리케이션을 위한 마이크로서비스 아키텍처의 예입니다.

그림 helidon_microservices_db_architecture.png에 대한 설명
구조에는 다음과 같은 구성 요소가 있습니다.
- 로드 밸런서
Oracle Cloud Infrastructure Load Balancing 서비스는 단일 시작점에서 백엔드의 여러 서버로 자동화된 트래픽 분배를 제공합니다.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes는 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있는 확장성이 뛰어난 완전 관리형 서비스입니다. 애플리케이션에 필요한 컴퓨트 리소스를 지정하면 Container Engine for Kubernetes가 기존 테넌시의 Oracle Cloud Infrastructure에 이를 프로비저닝합니다. Container Engine for Kubernetes는 Kubernetes를 사용하여 호스트 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.
- Service Connector for Kubernetes
OCI Service Broker for Kubernetes를 사용하여 Oracle Autonomous Transaction Processing 데이터베이스를 Oracle Container Engine for Kubernetes에 연결합니다.
OCI Service Broker for Kubernetes는 Open Service Broker API를 구현한 것입니다. OCI Service Broker for Kubernetes는 특히 Kubernetes 클러스터의 Oracle Cloud Infrastructure 서비스와 상호 작용하기 위한 것입니다. 오브젝트 스토리지, 자율 트랜잭션 처리, Autonomous Data Warehouse, Oracle Streaming Service 등 다음 Oracle Cloud Infrastructure 서비스에 바인딩할 수 있는 세 가지 서비스 브로커 어댑터가 포함되어 있습니다.
Oracle Cloud Infrastructure Container Engine for Kubernetes를 사용하여 생성한 클러스터에 OCI Service Broker for Kubernetes를 추가하여 위에 나열된 Oracle Cloud Infrastructure 서비스와 상호 작용할 수 있습니다. 클러스터에 OCI Service Broker for Kubernetes를 추가할 때 클러스터에 애플리케이션을 배치 또는 배치 해제할 때마다 Oracle Cloud Infrastructure 서비스를 수동으로 프로비전하고 프로비저닝 해제할 필요가 없습니다. 대신kubectl
를 사용하여 Oracle Cloud Infrastructure 서비스와 상호 작용하므로 OCI Service Broker for Kubernetes가 구현하는 오픈 서비스 브로커 API를 호출할 수 있습니다. - 레지스트리
Oracle Cloud Infrastructure Registry는 개발-운영 워크플로우를 간소화할 수 있는 Oracle 관리 레지스트리입니다. 레지스트리를 사용하면 Docker 이미지와 같은 개발 아티팩트를 쉽게 저장, 공유 및 관리할 수 있습니다. Oracle Cloud Infrastructure의 고가용성 확장형 아키텍처는 애플리케이션을 안정적으로 배포하고 관리할 수 있도록 보장합니다.
- 객체 스토리지
오브젝트 스토리지를 사용하면 데이터베이스 백업, 분석 데이터, 이미지 및 비디오와 같은 리치 컨텐츠를 비롯한 모든 컨텐츠 유형의 대규모 정형 및 비정형 데이터에 빠르게 접근할 수 있습니다. 빠르고 즉시 자주 액세스해야 하는 "핫" 스토리지에 대해 표준 스토리지를 사용합니다. 오래 보존되고 거의 액세스되지 않는 "콜드" 스토리지에 대해 아카이브 스토리지를 사용합니다.
- 마이크로 서비스
Kiali에서 시각화된 추적 정보를 제공하려면 Istio Service Mesh를 사용하여 마이크로 서비스를 프록시와 연결합니다.
추적에는 Jaeger를 사용하고 Istio 메시의 관찰을 위해서는 Kiali를 사용합니다.
- Helidon
Helidon MicroProfile 주석을 사용하여 마이크로서비스 상태 및 속도를 모니터링합니다.
- 자율 트랜잭션 처리
Oracle Autonomous Transaction Processing is a self-driving, self-securing, self-repairing database service that is optimized for transaction processing workloads. You do not need to configure or manage any hardware, or install any software. Oracle Cloud Infrastructure handles creating the database, as well as backing up, patching, upgrading, and tuning the database.
다음 다이어그램은 온라인 모바일 식음료 애플리케이션의 마이크로서비스 아키텍처 워크플로우 예입니다.

그림 microservices_converged_db.png에 대한 설명
이 구조에는 다음 단계가 나타납니다.
- 고객은 온라인 검토를 검색하고 주문을 수행합니다. 주문 서비스 마이크로서비스에는 검색 검토 기능이 있습니다. 검색 검토 요청과 주문은 로드 밸런서를 통해 주문 서비스 마이크로서비스로 전송됩니다. Order Service는 데이터베이스와 통신합니다.
- 텍스트 및 JSON 데이터 검색 및 감성 분석이 검색 검토 기능으로 전송됩니다.
- 주문 서비스 및 수표 재고 서비스 마이크로서비스는 트랜잭션 메시징을 사용하여 서로 통신합니다.
- 주문 서비스는 납품 요청에 대한 주문을 전달 서비스 마이크로 서비스로 전송합니다.
- 단일 또는 다중 전달에 대한 공간 계산은 데이터베이스에서 전달 서비스의 경로 매핑 기능으로 전송됩니다.
- 로우 코드 운영 분석은 데이터베이스에서 분석 대시보드로 전송됩니다.
권장 사항
요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다. 다음 권장 사항을 시작점으로 사용합니다.
- 단순성
이 아키텍처는 Oracle 통합 데이터베이스를 통해 마이크로서비스용 지속성 계층을 설계할 때 단순화에 대한 필요성을 줄여줍니다. 데이터베이스 보안 모델은 인증 및 권한 부여 보안을 얻기 위한 좋은 시작점입니다. 또한 데이터베이스의 백업과 고가용성을 사용하면 마이크로서비스 개발을 간편하게 수행할 수 있습니다.
애플리케이션을 이해하면 제한된 컨텍스트에서의 설계로 각 마이크로서비스에 대한 데이터 접근이 촉진되고 이러한 서비스의 여러 종류 내에서 커플링이 손실됩니다. 스키마 레벨 분리부터 시작합니다.
마이크로서비스의 크기 조정은 데이터 종속성을 보다 쉽게 관리할 수 있도록 하는 데 중요합니다.
컨버지드 데이터베이스 내에 구축된 이벤트 기반 트랜잭션 메시징은 마이크로서비스 간 완벽히 커플링을 보장하는 동시에 메시징을 한 번만 보존하여 마이크로서비스 전반에 걸쳐 최종적으로 일관된 트랜잭션을 효율적으로 구현할 수 있도록 합니다(사가스라고 함).
- 관찰 및 관리 용이성
Helidon annotation을 통한 관찰 및 관리 용이성 및 추적 툴을 사용하면 마이크로서비스 기반 애플리케이션을 대규모로 운영하는 자동화가 가능합니다. 특히 마이크로서비스에 대한 로드가 증가하고 확장성 있는 성능 및 가용성을 위해 조정이 필요한 경우 애플리케이션 계층 및 데이터베이스 계층에서 이러한 기능을 제대로 설계해야 합니다.
- 확장성
Oracle Cloud Infrastructure Container Engine for Kubernetes가 관리하는 마이크로 서비스의 컨테이너화를 통해 애플리케이션 계층을 확장할 수 있습니다. 각 마이크로서비스에 자체 데이터베이스가 있는 것은 항상 권장되지는 않지만, 통합 데이터베이스의 아키텍처에서는 확실히 사용할 수 있습니다. 마이크로서비스 간 스키마 레벨 격리를 통해 불필요한 데이터 종속성과 철저하게 격리하는 경우가 많습니다.
- 보안
융합된 데이터베이스는 응용 프로그램이 사용자 레벨 롤, 인증, 권한 부여 및 데이터 암호화를 제공하는 데 사용할 수 있는 높은 레벨의 보안을 제공합니다. 오라클의 마이크로서비스에 대한 보안 액세스는 지속성 계층의 보안과 함께 Helidon에 의해 제공됩니다.
- 소수점 이하 자릿수
이 아키텍처는 Oracle Container Engine for Kubernetes를 사용하여 마이크로서비스 인스턴스를 관리하고, 로드 밸런서가 각 서비스에 대해 여러 인스턴스를 원활하게 사용할 수 있도록 해줍니다. 가용성 및 확장은 마이크로서비스용 이 패러다임을 사용하여 처리됩니다. 데이터베이스는 대부분의 애플리케이션에서 작동할 수 있는 특정 레벨(데이터베이스 시스템당 2~48개의 OCPU)로 간단한 자율운영 확장을 제공합니다.
고려 사항
이 참조 아키텍처를 배포할 때는 다음 사항을 고려하십시오.
- 성능
마이크로서비스에 필요한 인스턴스를 더 추가하고 Kubernetes를 사용하여 애플리케이션 성능을 수평적으로 확장합니다.
Oracle Autonomous Transaction Processing 성능 콘솔에서 데이터베이스 로드를 관찰하고 ATP 공유에서 OCPU 수를 늘려 데이터베이스 성능을 확장하십시오.
- 보안
마이크로서비스 보안은 Helidon 마이크로서비스 및 Oracle Database 보안 모델(인증, 권한 부여, 리소스 액세스 제어)에서 제공하는 보안을 따릅니다. Oracle은 응용 프로그램이 데이터베이스의 보안 적용 방식을 최대한 사용할 것을 권장합니다.
- 가용성
고가용성은 응용 프로그램 계층과 데이터 계층이라는 두 부분으로 구성됩니다.
애플리케이션 가용성은 Stateless 컨테이너를 보유하거나 Kubernetes로 재생성하며, Middle tier 메타데이터 또는 데이터베이스에서 상태를 복구합니다.
Oracle Cloud 가용성 도메인 또는 영역 간 PDB에 대한 물리적 대기는 고가용성 아키텍처를 위해 권장됩니다. 다른 권장 사항은 Oracle Database 고가용성 매개변수를 검토하십시오.
- 비용
클라우드 경제성은 이 마이크로서비스 참조 아키텍처에 적용됩니다. 모든 구성요소는 Oracle Cloud Infrastructure에서 관리형 서비스로 사용할 수 있으며, 하드웨어 프로비저닝 비용을 지불하는 대신 사용한 만큼 비용을 지불합니다.
배치
이 참조 아키텍처에 대한 Terraform 코드는 GitHub에서 제공됩니다. GitHub에서 코드를 컴퓨터로 다운로드하고, 코드를 사용자 정의하고, Terraform CLI를 사용하여 아키텍처를 배포할 수 있습니다.
- GitHub에서 Terraform 코드를 사용하여 배포합니다.
- GitHub로 이동합니다.
- 저장소를 로컬 컴퓨터에 복제하거나 다운로드합니다.
README
문서의 지침을 따릅니다.
- Deploy using Oracle LiveLabs Building Microservices with Oracle Converged Database Workshop.