주:

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 서비스에 대해 자신을 인증할 수 있도록 해주는 임시 세션 토큰 및 보안 인증서로 구성됩니다.

참고:

목표

필요 조건

작업 1: 동적 그룹 설정

도메인으로 이동하여 동적 그룹을 누르고 다음 그룹을 생성합니다.

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

태스크 2: 정책 생성

정책으로 이동하여 다음 정책을 만듭니다.

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 컨테이너 레지스트리 생성

  1. 개발자 서비스로 이동하여 컨테이너 레지스트리를 누르고 Fn 이미지에 대한 전용 저장소를 생성합니다.

    이름: lab/fn-java-streaming.

    T3_1

  2. 저장소를 확인하고 이름 공간을 기록해 둡니다.

    T3_1

  3. OCI CLI 및 Docker가 설치된 터미널 셸을 열고 레지스트리에서 로그인을 계속합니다. 해당 지역의 올바른 URL을 확인하세요. 이 자습서에서는 레지스트리 URL이 gru.ocir.io브라질 동부(상파울로)를 사용합니다.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

작업 4: 메시지를 수신하고 OCI 스트리밍 항목에 게시할 Java OCI 함수를 생성합니다.

스트림 풀의 동일한 서브넷인 전용 서브넷을 선택해야 합니다.

  1. 개발자 서비스로 이동하여 함수에서 애플리케이션, 애플리케이션 생성 순으로 누릅니다.

    T9_1

  2. 몇 가지 구성을 생성하여 OCI Streaming 설정을 저장합니다.

    참고 이 구성 변수는 이 자습서 Java 샘플 코드 내에서 사용되어 스트림에 메시지를 생성할 수 있습니다. 환경에서 올바른 변수를 전달해야 합니다.

    암호 이름
    BOOTSTRAP_SERVERS 스트림 풀 부트스트랩 서버를 포트 9092에 붙여넣기
    STREAM_POOL_OCID 스트림 풀 OCID 붙여넣기
    STREAM_TOPIC_NAME 스트림 이름 붙여넣기

    T4_2

  3. 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레지스트리 위치를 변경해야 합니다.

  4. fn-java-streaming.zip에서 Java 함수 샘플 코드를 가져와서 배스천 콘솔 셸 시스템에 압축을 풉니다.

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-streaming.zip
    

    T9_1

    이 간단한 Java 코드 프로젝트는 스트림 풀에서 my-pvt-topic 항목으로 메시지를 생성합니다. 3단계에서 생성한 Fn 구성 값을 사용합니다.

    • HelloFunction.java.

      T9_1

    • KafkaProducerSingleton.java.

      T9_1

  5. 새 코드를 작성하고 함수를 배치합니다.

    cd fn-java-streaming
    ls -lrt
    fn deploy --app fn-lab
    

    T9_1

    T9_1

  6. 함수를 호출합니다.

    # Invoke the function to check if it is working as expected.
    echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
    

    T9_1

    : 첫번째 호출은 함수를 호출하는 데 최대 1분이 걸릴 수 있습니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.