주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
확장 가능한 클라우드 전용 플로우로 Oracle Cloud Infrastructure Object Storage에서 파일 처리
소개
응용 프로그램에서는 대용량 파일을 처리해야 하는 경우가 많습니다. 과거에는 일괄 처리 형태로 수행되었지만, 새로운 기술과 클라우드의 출현으로 많은 직렬 프로세스를 병렬 프로세스로 변환할 수 있게 되었습니다. 메시지 대기열, Kubernetes 클러스터 및 이벤트 기반 아키텍처의 사용은 대용량 프로세싱을 최대한 활용하는 데 널리 사용되는 기술 및 아키텍처 중 일부입니다.
Oracle Cloud Infrastructure(OCI)에는 확장성과 비용 절감을 지원하는 리소스가 있습니다. 클라우드 네이티브 서비스를 살펴보겠습니다.
-
OCI Object Storage를 통해 고객은 모든 유형의 데이터를 기본 형식으로 안전하게 저장할 수 있습니다. 중복성이 내장된 OCI Object Storage는 분석, 백업 또는 아카이브 목적으로 여러 데이터 소스를 통합하는 데 사용할 수 있으므로 확장성과 유연성이 필요한 최신 애플리케이션을 구축하는 데 이상적입니다.
-
OCI Streaming 서비스는 개발자 및 데이터 과학자를 위한 Apache Kafka 호환 서버리스 실시간 이벤트 스트리밍 플랫폼입니다. Streaming은 OCI, Database, GoldenGate 및 Integration Cloud와 완벽하게 통합됩니다. 또한 이 서비스는 DevOps, 데이터베이스, 빅데이터 및 SaaS 애플리케이션과 같은 범주에서 수백 개의 타사 제품에 대한 즉각적인 통합을 제공합니다.
-
OCI 이벤트 서비스는 Cloud Native Computing Foundation(CNCF) 클라우드 이벤트 표준을 준수하는 이벤트를 사용하여 리소스에 대한 변경 사항을 추적합니다. 개발자는 OCI Functions로 코드를 트리거하거나, OCI Streaming에 기록하거나, OCI Notifications를 사용하여 경고를 전송하여 실시간으로 변경된 변화에 대응할 수 있습니다.
-
OCI Functions는 개발자가 인프라를 관리하지 않고도 애플리케이션을 구축, 실행 및 확장할 수 있게 해주는 서버리스 컴퓨팅 서비스입니다. OCI Functions는 다른 OCI 서비스 및 SaaS 애플리케이션과 기본 통합되어 있습니다. OCI 함수는 오픈 소스 Fn 프로젝트를 기반으로 하므로 개발자는 다른 클라우드 및 온프레미스 환경으로 쉽게 이식할 수 있는 애플리케이션을 생성할 수 있습니다. 함수 기반 코드는 일반적으로 짧은 기간 동안 실행되며 Stateless이며 단일 논리 용도로 실행됩니다. 고객은 사용한 리소스에 대해서만 비용을 지불하면 됩니다.
-
Oracle Cloud Infrastructure Container Engine for Kubernetes(OKE)는 대규모 엔터프라이즈급 Kubernetes 운영을 간소화하는 관리형 Kubernetes 서비스입니다. 복잡한 Kubernetes 인프라 관리에 필요한 시간, 비용 및 노력을 줄여줍니다. OKE를 사용하면 Kubernetes 클러스터를 배포하여 자동 확장, 업데이트 및 보안 패치를 통해 제어 평면 및 작업자 노드에서 안정적인 작업을 수행할 수 있습니다. 또한 OKE는 가상 노드에 대한 완전한 서버리스 Kubernetes 환경을 제공합니다.
이 자습서에서는 애플리케이션이 OCI Object Storage의 버킷에 파일을 배치할 수 있는 대량의 파일을 처리하는 매우 일반적인 방법을 볼 수 있으며, 이러한 파일이 배치되면 함수가 이 파일의 URL을 OCI Streaming에 쓰도록 트리거할 수 있는 이벤트가 생성됩니다.
참고: 이 솔루션은 일부 소스 애플리케이션에서만 OCI Streaming에 파일 콘텐츠를 저장하는 반면 애플리케이션에서는 이 콘텐츠를 읽지만 Kakfa 대기열 내에서 대용량 데이터를 전송하는 것은 바람직하지 않습니다. 이를 위해 접근 방법은 클레임 확인이라는 패턴을 사용합니다. 이 패턴은 메시지 대기열을 통해 파일을 전송하는 대신 제안과 똑같이 수행됩니다. 이 파일에 대한 참조가 전송됩니다. 파일 처리를 담당할 애플리케이션에 파일 읽기를 위임합니다.
이 사용지침서에는 OCI Object Storage, Events Service, Functions, Streaming 등의 구성요소가 포함되어 있습니다.
이 체인이 끝나면 스트리밍 대기열을 사용하는 응용 프로그램이 있지만 파일이 처리되는 방법에 대해서는 설명하지 않습니다.
목표
- OCI Object Storage, Events Service, Functions 및 Streaming을 사용하여 다수의 파일을 처리할 수 있는 확장 가능한 이벤트 아키텍처를 구현합니다.
필요 조건
-
버킷, 기능 및 스트리밍에 대해 구성된 VNC, 서브넷 및 모든 보안 설정입니다.
-
버킷, 이벤트 서비스, 기능 및 스트리밍을 관리하도록 구성된 OCI IAM(Oracle Cloud Infrastructure Identity and Access Management) 사용자입니다.
작업 1: OCI 스트리밍 인스턴스 생성
OCI Streaming은 관리형 스트리밍 서비스와 같은 Kafka 서비스입니다. Kafka API 및 일반 SDK를 사용하여 애플리케이션을 개발할 수 있습니다. 이 작업에서는 OCI Streaming 인스턴스를 생성하고 두 애플리케이션에서 모두 실행되도록 구성하여 대량의 데이터를 게시하고 소비합니다.
-
OCI 콘솔에 로그인하여 분석 및 AI 및 스트림을 누릅니다.
-
구획을 선택하고 스트림 생성을 누릅니다.
-
스트림 인스턴스의 스트림 이름을 입력하고 다른 매개변수를 기본값으로 유지합니다. 생성을 눌러 인스턴스를 초기화하고 활성 상태가 될 때까지 기다립니다.
참고:
-
스트리밍 생성 프로세스에서 기본 스트림 풀 자동 생성을 선택하여 기본 풀이 자동으로 생성됩니다.
-
전용 서브넷에 스트림 인스턴스를 생성할 수 있습니다. 이 경우 작업 4의 함수는 동일한 전용 서브넷에 있거나 전용 서브넷 스트림 인스턴스에 액세스할 수 있는 서브넷에 있어야 합니다. VCN, 서브넷, 보안 목록, 서비스 게이트웨이 또는 기타 보안 구성요소를 확인합니다. 함수가 OCI Streaming 인스턴스에 액세스할 수 있는지 확인합니다.
-
-
DefaultPool 링크를 누릅니다.
-
Kafka 접속 설정을 누르고 접속 설정을 확인합니다. 다음 작업에서 필요한 정보를 기록해 둡니다.
작업 2: OCI 오브젝트 스토리지 버킷 생성
버킷을 생성해야 합니다. 버킷은 오브젝트 저장을 위한 논리적 컨테이너이므로 이 데모에 사용된 모든 파일은 이 버킷에 저장됩니다.
-
OCI 콘솔을 열고 스토리지, 버킷으로 이동합니다. 버킷 섹션에서 구획을 선택합니다. 구획은 태스크 1에서 생성된 OCI 스트리밍 인스턴스와 동일합니다.
-
버킷 생성을 누르고 버킷 이름을 입력합니다. 다른 매개변수를 기본값으로 유지하고 생성을 누릅니다.
생성된 버킷을 확인할 수 있습니다.
주: 버킷에 대한 OCI IAM 정책을 검토하십시오. 데모 애플리케이션에서 이러한 버킷을 사용하려면 정책을 설정해야 합니다. 자세한 내용은 Object Storage 개요 및 OCI IAM 정책을 참조하십시오.
작업 3: OCI 이벤트 서비스에 대한 OCI 오브젝트 스토리지 버킷 활성화
버킷에서 이벤트를 내보내도록 설정해야 합니다. 따라서 버킷 세부정보를 누르고 객체 이벤트 편집 제출 링크를 검색하여 활성화합니다.
작업 4: OCI 함수 생성
다음 작업을 실행하려면 OCI_Streaming_Claim_Check.zip에서 코드를 다운로드합니다.
-
코드 이해
기본 코드
HelloFunction.java
및 OCI 스트리밍 생산자 코드Producer.java
의 두 가지 코드 파일이 있습니다.-
HelloFunction.java
.이 코드 부분에서는 OCI Events Services에서 가져온 데이터를 캡처해야 하므로 3개의 소스가 있습니다.
- 컨텍스트: 이 속성은 RuntimeContext의 cmes이며
REGION
변수를 사용합니다. - 이벤트 데이터: OCI Events Services는 데이터를
resourceName
로 생성합니다. - 추가 이벤트 세부 정보 데이터: OCI Object Storage용 OCI 이벤트 서비스는 데이터를
namespace
및bucketName
로 생성합니다.
OCI Object Storage 파일 URL을 마운트할 수 있습니다.
또한 기본 코드는 URL을 OCI Streaming 생산자에게 전달할 수 있습니다.
- 컨텍스트: 이 속성은 RuntimeContext의 cmes이며
-
Producer.java
.Claim-check 패턴에 대한 Kafka 정보를 생성하는
Message
클래스 구조입니다. 단지key
및value
.그리고 이것은 스트리밍에 생산하는 기본 코드입니다.
-
-
OCI 함수 작성 및 배치
이 단계에서는 OCI CLI를 사용하여 OCI 함수를 생성하고 코드를 OCI 테넌시에 배치해야 합니다. OCI 함수를 생성하려면 함수: CLI를 사용하여 시작하기를 참조하고 단계를 따라 Java 옵션을 검색합니다. 다음 정보를 사용하여 함수를 생성해야 합니다.
Application: ocistreaming-app (follow the link Functions: Get Started using CLI) fn create app ocistreaming-app --annotation oracle.com/oci/subnetIds='["<the same OCID of your streaming subnet>"]' Context Variable: REGION=<your streaming region name, ex: us-ashburn-1> fn config app ocistreaming-app REGION=us-ashburn-1
함수를 배치한 구획을 기억하십시오. OCI 이벤트 서비스를 구성하려면 이 정보가 필요합니다.
작업 5: OCI 이벤트 구성
이벤트 규칙을 구성하여 버킷 정보를 가져오는 함수를 트리거하고 OCI Streaming으로 전송합니다.
-
규칙에 대해 동일한 구획을 선택하고 규칙 생성을 누릅니다.
-
다음 정보를 입력합니다.
-
규칙 조건 섹션에서
- 조건:
Event Type
. - 서비스 이름:
Object Storage
. - 이벤트 유형:
Object-Create, Object-Delete, Object-Update
.
- 조건:
-
작업 섹션에서 다음을 수행합니다.
- 작업 유형:
Functions
. - 함수 구획:
<your function compartment name>
. - 함수 애플리케이션:
<your function app, in this example ocistreaming-app>
. - 함수:
fn_stream
.
- 작업 유형:
-
작업 6: 이벤트 회로 테스트
참고: 전용 네트워크의 경우 OCI Streaming의 동일한 전용 서브넷에 연결된 배스천에서 테스트 코드를 실행해야 합니다.
OCI_Streaming_Claim_Check.zip 소스 코드 패키지에서 monitoring
이라는 폴더와 consume.py
라는 파일을 찾을 수 있습니다. 이 코드를 사용하여 솔루션이 제대로 작동하는지 모니터링하고 테스트할 수 있습니다.
코드를 구성해야 합니다.
스트림 매개변수를 구성한 후 코드를 실행하고 회로(버킷, 이벤트, 함수 및 스트리밍)를 확인할 수 있습니다.
관련 링크
확인
- 작성자 - Cristiano Hoshikawa(Oracle LAD A-Team 솔루션 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Process Files on Oracle Cloud Infrastructure Object Storage with a Scalable Cloud Native Flow
F94114-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.