주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
OCI 함수를 사용하여 리소스 주체 인증을 사용하여 Kafka 스트림에 메시지 게시
소개
실시간 데이터 파이프라인 통합관리에서 Oracle Cloud Infrastructure(OCI) Functions와 OCI Streaming의 원활한 시너지 효과를 확인해 보세요. 이 자습서에서는 Oracle 리소스 주체 인증 방법과 싱글톤 설계 패턴을 활용하여 메시지 생성에 대한 안전하고 효율적인 접근 방식을 살펴봅니다. 리소스 주체 인증이 OCI Streaming 서비스를 통해 서버리스 기능을 원활하게 인증함으로써 보안 관리를 간소화하는 동시에 싱글톤 패턴이 리소스 활용도를 최적화하고 메시지 생산 효율성을 향상시키는 방법을 알아봅니다. 우리는 OCI Functions와 OCI Streaming의 융합을 탐구하여 개발자가 강력하고 확장 가능한 이벤트 기반 솔루션을 쉽게 설계할 수 있도록 지원합니다.
OCI Streaming: OCI에는 클라우드에서 데이터를 처리하기 위한 다양한 도구가 있으며, OCI Streaming은 높은 처리량의 실시간 데이터 스트림에 맞게 조정된 서비스 중 하나입니다. 개발자는 OCI Streaming을 활용하여 데이터 스트림을 효율적으로 수집, 처리 및 배포하는 확장 가능하고 신뢰할 수 있는 데이터 파이프라인을 구축할 수 있습니다.
OCI Functions: OCI Functions는 확장성이 뛰어난 완전 관리형 다중 테넌트, 온디맨드 FaaS(Functions-as-a-Service) 플랫폼입니다. 엔터프라이즈급 OCI를 기반으로 구축되었으며 Fn Project 오픈 소스 엔진에 의해 구동됩니다. 비즈니스 요구사항을 충족하기 위해 코드를 작성하는 데 집중하려면 OCI Functions(Functions라고도 부르기도 하고, Oracle Functions라고도 부르기도 함)를 사용하십시오.
리소스 주체 인증: 리소스 주체를 사용하여 OCI 리소스를 인증하고 액세스할 수 있습니다. 리소스 주체는 OCI 함수가 OCI Streaming과 같은 다른 OCI 서비스에 대해 자신을 인증할 수 있도록 해주는 임시 세션 토큰 및 보안 인증서로 구성됩니다.
참고:
- 이 튜토리얼은 교육 및 학습 목적으로만 설계되었습니다. 그것은 학습자가 실험하고 제어 된 환경에서 실제 경험을 얻을 수있는 환경을 제공합니다. 이 자습서에 사용된 보안 구성 및 연습은 실제 시나리오에 적합하지 않을 수 있습니다.
- 실제 응용 프로그램에 대한 보안 고려 사항은 훨씬 더 복잡하고 동적입니다. 따라서 여기 프로덕션 환경에서 시연된 기술이나 구성을 구현하기 전에 포괄적인 보안 평가 및 검토를 수행하는 것이 필수적입니다. 이 검토에는 액세스 제어, 암호화, 모니터링 및 규정 준수를 포함한 보안의 모든 측면이 포함되어 시스템이 조직의 보안 정책 및 표준에 부합하도록 해야 합니다.
- 랩 환경에서 실제 배포로 전환할 때 보안은 항상 최우선 순위가 되어야 합니다.
목표
- OCI Functions를 사용하여 OCI 스트림 풀 내의 스트리밍 토픽으로 메시지를 원활하게 생성합니다. Oracle 리소스 주체 인증 방법을 활용하고 Java에서 싱글톤 설계 패턴을 구현함으로써 Kafka API로 서버리스 기능을 안전하게 인증하고 효율적인 메시지 생성을 위해 리소스 활용도를 최적화하는 프로세스를 안내합니다.
필요 조건
-
Oracle Cloud Infrastructure
-
관리자 레벨 액세스 권한이 있는 Oracle 계정입니다.
-
리소스를 생성할 구획입니다.
주: 구획 이름 및 구획 ID를 기록해 둡니다.
-
전용 서브넷이 있는 VCN입니다. 자세한 내용은 가상 클라우드 네트워크 생성을 참조하십시오.
-
VCN에서 전용 서브넷의 스트림 풀입니다. 자세한 내용은 스트림 풀 생성을 참조하십시오.
-
위 스트림 풀에 생성된
my-pvt-topic
라는 스트림입니다. 자세한 내용은 스트림 생성을 참조하십시오.
-
-
로컬 시스템 환경
-
전용 서브넷의 Oracle Linux 컴퓨트 인스턴스입니다. 이는 이 자습서 중에 배포될 OCI Streaming 및 Functions와 같은 전용 서브넷의 리소스에 액세스하는 데 중요합니다.
-
Oracle Linux 컴퓨트 인스턴스에 접속하고 자습서 작업을 수행하기 위한 OCI 배스천 호스트입니다. 자세한 내용은 Bastion Overview를 참조하십시오.
-
로컬 Oracle Cloud Infrastructure 명령행 인터페이스(OCI CLI) 설정입니다. 자세한 내용은 Installing the CLI를 참조하십시오.
-
Oracle Linux를 사용하는 경우 이미지를 빌드할 수 있는 로컬 Docker는 Docker: Install Docker on Oracle Linux 8 (OL8)를 참조하십시오.
-
OCI에 함수를 배포할 수 있는 로컬 FN CLI: Installing the Fn Project CLI
-
작업 1: 동적 그룹 설정
도메인으로 이동하여 동적 그룹을 누르고 다음 그룹을 생성합니다.
- 그룹 이름:
MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
태스크 2: 정책 생성
정책으로 이동하여 다음 정책을 만듭니다.
- 정책 이름:
FunctionsPolicies
.
Allow dynamic-group MyFunctions to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
작업 3: OCI 컨테이너 레지스트리 생성
-
개발자 서비스로 이동하여 컨테이너 레지스트리를 누르고 Fn 이미지에 대한 전용 저장소를 생성합니다.
이름:
lab/fn-java-streaming
. -
저장소를 확인하고 이름 공간을 기록해 둡니다.
-
OCI CLI 및 Docker가 설치된 터미널 셸을 열고 레지스트리에서 로그인을 계속합니다. 해당 지역의 올바른 URL을 확인하세요. 이 자습서에서는 레지스트리 URL이
gru.ocir.io
인 브라질 동부(상파울로)를 사용합니다.docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
작업 4: 메시지를 수신하고 OCI 스트리밍 항목에 게시할 Java OCI 함수를 생성합니다.
주 스트림 풀의 동일한 서브넷인 전용 서브넷을 선택해야 합니다.
-
개발자 서비스로 이동하여 함수에서 애플리케이션, 애플리케이션 생성 순으로 누릅니다.
-
몇 가지 구성을 생성하여 OCI Streaming 설정을 저장합니다.
참고 이 구성 변수는 이 자습서 Java 샘플 코드 내에서 사용되어 스트림에 메시지를 생성할 수 있습니다. 환경에서 올바른 변수를 전달해야 합니다.
암호 이름 값 BOOTSTRAP_SERVERS 스트림 풀 부트스트랩 서버를 포트 9092에 붙여넣기 STREAM_POOL_OCID 스트림 풀 OCID 붙여넣기 STREAM_TOPIC_NAME 스트림 이름 붙여넣기 -
Docker, OCI CLI, Fn Project CLI가 설치된 터미널 셸로 이동하고 다음 명령을 실행하여 기능을 초기화합니다.
주: 작업을 수행한 경우 현재 Docker 로그인 명령이 이미 실행되어 있는 경우 작업 3의 Docker 로그인 단계를 진행하십시오.
fn create context oci-cloud --provider oracle fn use context oci-cloud fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
참고: 이 자습서에서는 브라질 동부(상파울로) 지역을 사용하고 있습니다. 다른 지역을 사용 중인 경우 api-url 및 레지스트리 위치를 변경해야 합니다.
-
fn-java-streaming.zip에서 Java 함수 샘플 코드를 가져와서 배스천 콘솔 셸 시스템에 압축을 풉니다.
# check your file is there ls -lrt # unzip the file unzip fn-java-streaming.zip
이 간단한 Java 코드 프로젝트는 스트림 풀에서
my-pvt-topic
항목으로 메시지를 생성합니다. 3단계에서 생성한 Fn 구성 값을 사용합니다.-
HelloFunction.java
. -
KafkaProducerSingleton.java
.
-
-
새 코드를 작성하고 함수를 배치합니다.
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
함수를 호출합니다.
# Invoke the function to check if it is working as expected. echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
주: 첫번째 호출은 함수를 호출하는 데 최대 1분이 걸릴 수 있습니다.
관련 링크
확인
- 작성자 - Joao Tarla(Oracle LAD A-Team 솔루션 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93778-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.