OCI Functions를 구현하여 OCI Object Storage에 업로드 시 Oracle NoSQL 테이블 업데이트

클라우드 네이티브, 이벤트 기반 및 서버리스 아키텍처는 클라우드 컴퓨팅 리소스와 서비스를 활용하여 확장성, 효율성 및 유연성을 극대화하는 애플리케이션을 구축하고 배포하는 접근 방식입니다.

This reference architecture demonstrates the seamless integration of Oracle Cloud Infrastructure Events and OCI Functions to automatically update Oracle NoSQL Database Cloud Service (Oracle NoSQL) tables when objects are created or modified in OCI Object Storage buckets. OCI Object Storage 버킷에서 파일을 추가하거나 수정할 때마다 Oracle NoSQL 테이블에서 데이터를 구문 분석하고 업데이트하는 일반적인 비즈니스 시나리오를 다룹니다.

OCI 이벤트는 다양한 클라우드 리소스의 상태 변경을 기반으로 작업을 자동화하는 강력한 솔루션을 제공합니다. OCI Streaming, OCI Functions(이벤트 데이터를 처리하고 다양한 작업을 실행하기 위해 다른 OCI 서비스와 통합하기 위한 유용한 도구 역할을 함) 및 OCI Notifications와 같은 특정 OCI 서비스에 이벤트를 전달하는 규칙을 생성할 수 있습니다.

또한 OCI FunctionsOCI Events에서 수신된 페이로드 데이터를 처리하고 특정 비즈니스 요구사항에 따라 Oracle NoSQL 테이블 업데이트를 적용하기 위한 코드를 통합할 수 있습니다.

이 참조 아키텍처는 OCI FunctionsOCI Events와 함께 활용하여 OCI Object Storage 버킷에서 객체를 생성하거나 수정할 때 Oracle NoSQL 테이블을 업데이트하는 방법에 대한 포괄적인 개요를 제공합니다.

구조

이 참조 아키텍처는 OCI FunctionsOCI Events를 활용하여 OCI Object Storage에서 파일을 만들거나 업데이트할 때마다 Oracle NoSQL 테이블을 업데이트하는 방법을 보여줍니다.

아키텍처 다이어그램은 지정된 OCI Object Storage 버킷에 대한 파일 업로드부터 데이터 플로우를 보여줍니다. 이벤트 서비스 트리거는 지정된 이벤트 규칙 조건에 따라 활성화되도록 구성됩니다. 방출된 이벤트는 다시 업로드된 파일에서 데이터를 추출하고 비즈니스 요구 사항에 따라 추가 처리를 수행하며 궁극적으로 처리된 데이터로 Oracle NoSQL 테이블을 업데이트할 수 있는 함수를 호출합니다. 이 접근 방식은 이벤트 기반 아키텍처를 활용하고 실시간 데이터 처리를 촉진하여 상당한 이점을 제공합니다. 대상 테이블을 갱신하기 전에 데이터를 선행 처리해야 하는 경우에 매우 중요하며 데이터 무결성을 확인하는 데 필요한 온전성 검사를 수행합니다.

OCI Object Storage 버킷에서 파일이 생성되거나 업데이트될 때마다 Oracle NoSQL 테이블에서 데이터를 구문 분석 및 업데이트해야 하는 비즈니스 사용 사례는 다음 접근 방식을 사용하여 수행할 수 있습니다.

  1. OCI Object Storage 버킷에서 객체가 생성되거나 업데이트될 때마다 OCI Functions를 트리거하도록 OCI Events에서 이벤트 규칙을 설정합니다.
  2. 이벤트 규칙에 의해 트리거된 이벤트를 수신하는 함수를 생성합니다. 이 함수는 Oracle NoSQL 테이블의 데이터 구문 분석 및 업데이트를 처리합니다.
  3. 함수 내에서 OCI Object Storage 버킷의 객체에서 데이터를 구문 분석하는 데 필요한 논리를 구현합니다.
  4. 적절한 OCI SDK 또는 API를 사용하여 Oracle NoSQL 서비스와 상호 작용하고 구문 분석된 데이터를 기반으로 Oracle NoSQL 테이블에 레코드를 삽입하거나 업데이트합니다.

OCI Events, OCI Functions 및 Oracle NoSQL 서비스를 결합함으로써 OCI Object Storage 버킷에서 파일이 생성되거나 업데이트될 때마다 Oracle NoSQL 테이블의 데이터 구문 분석 및 업데이트 프로세스를 자동화할 수 있습니다. 이 접근 방식은 OCI Object Storage와 Oracle NoSQL 간의 효율적이고 간소화된 데이터 처리 및 동기화를 지원합니다.

다음 다이어그램은 이 참조 아키텍처를 보여줍니다.



object-storage-function-nosql-diagram-oracle.zip

시작하기 전에

  1. OCI 콘솔을 사용하여 함수 애플리케이션을 설정하고 Oracle NoSQL 테이블을 생성합니다.
  2. 함수 응용 프로그램의 환경 변수를 구성하는 데 필요한 값을 수집합니다.
    • 사용자 ID

      인증할 사용자의 OCID입니다.

    • 테넌시 ID

      테넌시 OCID. 사용자 프로파일에서 찾을 수 있습니다.

    • 지문

      OCI API 인증에 사용됩니다.

    • 지역

      요청을 생성할 영역의 식별자입니다.

    • API 개인 키

      API 전용 키 파일 위치입니다.

    • 구획 OCID

      Oracle NoSQL 테이블이 생성된 구획 OCID입니다.

    • NoSQL 테이블

      샘플 테이블 개인 테이블입니다. 다음 속성으로 생성합니다.

기본 키 열 이름 유형 공유 키 널이 아닙니다.
ID INTEGER
아닙니다 이름 STRING 아닙니다 아닙니다
아닙니다 나이 INTEGER 아닙니다 아닙니다
아닙니다 성별 STRING 아닙니다 아닙니다

아키텍처에는 다음과 같은 구성 요소가 있습니다.

  • 테넌시

    테넌시는 Oracle Cloud Infrastructure에 등록할 때 Oracle이 Oracle Cloud 내에서 설정하는 격리된 보안 파티션입니다. 테넌시 내 Oracle Cloud에서 리소스를 생성, 구성 및 관리할 수 있습니다. 테넌시는 회사 또는 조직과 동의어입니다. 일반적으로 회사는 단일 테넌시를 갖고 해당 테넌시 내의 조직 구조를 반영합니다. 일반적으로 단일 테넌시는 단일 구독에 연결되며, 단일 구독에는 일반적으로 하나의 테넌시만 있습니다.

  • 지역

    Oracle Cloud Infrastructure 리전은 가용성 도메인이라는 하나 이상의 데이터 센터를 포함하는 지역화된 지리적 영역입니다. 지역은 다른 지역과 독립적이며 방대한 거리로 구분할 수 있습니다(국가 또는 대륙).

  • 구획

    구획은 Oracle Cloud Infrastructure 테넌시 내의 영역 간 논리적 파티션입니다. 구획을 사용하여 Oracle Cloud에서 리소스를 구성하고, 리소스에 대한 액세스를 제어하고, 사용 할당량을 설정할 수 있습니다. 지정된 구획의 리소스에 대한 액세스를 제어하기 위해 리소스에 액세스할 수 있는 사용자 및 수행할 수 있는 작업을 지정하는 정책을 정의합니다.

  • 가용성 도메인

    가용성 도메인은 한 지역 내의 독립형 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 다른 가용성 도메인의 리소스와 격리되어 내결함성을 제공합니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 특정 가용성 도메인에서 실패할 경우 해당 지역의 다른 가용성 도메인에 영향을 주지 않습니다.

  • 결함 도메인

    장애 도메인은 가용성 도메인 내 하드웨어와 인프라의 그룹입니다. 가용성 도메인마다 별도의 전원 및 하드웨어가 있는 장애 도메인 3개가 있습니다. 여러 장애 도메인에 리소스를 분배할 때 응용 프로그램은 물리적 서버 실패, 시스템 유지 관리 및 결함 도메인 내의 전원 실패를 허용할 수 있습니다.

  • VCN(가상 클라우드 네트워크) 및 서브넷

    VCN은 Oracle Cloud Infrastructure 지역에서 설정한 커스터마이징 가능한 소프트웨어 정의 네트워크입니다. 기존 데이터 센터 네트워크와 마찬가지로 VCN은 사용자가 네트워크 환경을 완전히 제어할 수 있도록 합니다. VCN에는 VCN을 생성한 후 변경할 수 있는 겹치지 않는 여러 CIDR 블록이 있을 수 있습니다. VCN을 서브넷으로 분할할 수 있습니다. 서브넷은 지역 또는 가용성 도메인으로 범위가 지정될 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속된 주소 범위로 구성됩니다. 서브넷 생성 후 서브넷의 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.

  • 보안 목록

    각 서브넷에 대해 서브넷에 들어오고 나가야 하는 트래픽의 소스, 대상 및 유형을 지정하는 보안 규칙을 생성할 수 있습니다.

  • 서비스 게이트웨이

    서비스 게이트웨이는 VCN에서 Oracle Cloud Infrastructure Object Storage와 같은 다른 서비스로의 액세스를 제공합니다. VCN에서 Oracle 서비스로의 트래픽은 Oracle 네트워크 패브릭을 통해 이동하며 인터넷을 경유하지 않습니다.

  • 객체 스토리지

    객체 스토리지를 사용하면 데이터베이스 백업, 분석 데이터, 이미지 및 비디오와 같은 리치 콘텐츠 등 모든 콘텐츠 유형의 대량의 구조적 및 비구조적 데이터에 빠르게 액세스할 수 있습니다. 인터넷 또는 클라우드 플랫폼 내에서 직접 안전하고 안전하게 데이터를 저장하고 검색할 수 있습니다. 성능 또는 서비스 안정성의 저하 없이 스토리지를 원활하게 확장할 수 있습니다. 빠르고 즉각적이며 자주 액세스하는 데 필요한 "핫" 스토리지에 표준 스토리지를 사용합니다. 장기간 보존하고 거의 액세스하지 않는 "콜드" 스토리지에 아카이브 스토리지를 사용합니다.

  • 이벤트

    Oracle Cloud Infrastructure 서비스는 리소스의 변경 사항을 설명하는 구조화된 메시지인 이벤트를 내보냅니다. 이벤트는 생성, 읽기, 업데이트 또는 삭제(CRUD) 작업, 리소스 수명 주기 상태 변경 및 클라우드 리소스에 영향을 주는 시스템 이벤트에 대해 내보내집니다.

  • 함수

    Oracle Cloud Infrastructure Functions는 전담 관리 멀티테넌트, 확장성이 뛰어난 온디맨드 Functions-as-a-Service(FaaS) 플랫폼입니다. Fn Project 오픈 소스 엔진에 의해 구동 됩니다. 함수를 사용하면 코드를 배치하고 직접 호출하거나 이벤트에 대한 응답으로 트리거할 수 있습니다. Oracle Functions는 Oracle Cloud Infrastructure Registry에서 호스팅되는 Docker 컨테이너를 사용합니다.

  • 로깅
    Logging은 확장성이 뛰어난 완전 관리형 서비스로, 클라우드의 리소스에서 다음 유형의 로그에 액세스할 수 있습니다.
    • 감사 로그: 감사 서비스에서 내보낸 이벤트와 관련된 로그입니다.
    • 서비스 로그: API 게이트웨이, 이벤트, 함수, 로드 밸런싱, 오브젝트 스토리지, VCN 플로우 로그와 같은 개별 서비스에서 발행하는 로그입니다.
    • 사용자정의 로그: 사용자정의 애플리케이션, 다른 클라우드 공급자 또는 온프레미스 환경의 진단 정보를 포함하는 로그입니다.
  • Oracle NoSQL

    Oracle NoSQL Database Cloud Service는 단순한 쿼리에 대해 10밀리초 미만의 예측 가능한 대기 시간 응답이 필요한 데이터베이스 운영을 위해 설계된 완전 관리형 데이터베이스 클라우드 서비스입니다. Oracle Cloud 계정에 대해 인증되면 Oracle NoSQL 테이블을 생성하고 테이블에 대한 처리량 및 스토리지 요구사항을 지정할 수 있습니다. Oracle은 요구 사항에 맞게 리소스를 예약 및 관리하고 용량을 프로비저닝합니다. 용량은 처리량에 대해 읽기 및 쓰기 단위, 스토리지 단위에 대해 GB를 사용하여 지정됩니다.

권장 사항

다음 권장 사항을 시작점으로 사용하십시오. 요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다.
  • VCN

    VCN을 생성할 때 필요한 CIDR 블록 수와 VCN의 서브넷에 연결하려는 리소스 수를 기반으로 각 블록의 크기를 결정합니다. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.

    전용 접속을 설정하려는 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자)와 겹치지 않는 CIDR 블록을 선택합니다.

    VCN을 생성한 후 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.

    서브넷을 설계할 때 트래픽 흐름 및 보안 요구 사항을 고려합니다. 특정 계층 또는 역할 내의 모든 리소스를 보안 경계로 사용할 수 있는 동일한 서브넷에 연결합니다.

  • 클라우드 가드

    사용자정의 감지기 및 응답기 레시피를 생성하기 위해 Oracle에서 제공하는 기본 레시피를 복제하고 사용자정의합니다. 이러한 레시피를 통해 경고를 발생시키는 보안 위반 유형과 이 유형에 대해 수행할 수 있는 작업을 지정할 수 있습니다. 예를 들어 가시성이 공용으로 설정된 오브젝트 스토리지 버킷을 감지할 수 있습니다.

    테넌시 레벨에서 Cloud Guard를 적용하여 가장 광범위한 범위를 다루고 여러 구성을 유지 관리하는 관리 부담을 줄이십시오.

    관리 목록 기능을 사용하여 특정 구성을 감지기에 적용할 수도 있습니다.

  • 함수

    이 아키텍처의 OCI 기능은 Python을 사용하여 개발되었습니다. OCI 함수는 여러 프로그래밍 언어를 지원하며 사용자가 선택한 언어를 사용하여 함수를 개발하여 배포할 수 있습니다.

  • Oracle NoSQL

    적절한 구획에 Oracle NoSQL 테이블을 생성하고 OCI Identity and Access Management(IAM) 정책을 사용하여 액세스를 관리해야 합니다. 테이블을 생성하기 전에 읽기 및 쓰기 용량을 정확하게 예측해야 합니다. 자세한 지침은 Oracle 설명서를 참조하고 권장 사항을 검토하십시오.

    이 솔루션에서는 "person"이라는 샘플 테이블이 예로 사용됩니다. 특정 요구 사항에 따라 함수 및 테이블 이름을 커스터마이즈해야 합니다.

  • OCI 객체 스토리지

    이 아키텍처는 표준 오브젝트 스토리지를 사용하여 파일을 업로드합니다. 이벤트 서비스를 트리거할 수 있도록 객체 이벤트 제출을 사용으로 설정해야 합니다. 또한 민감한 데이터에 전용 버킷을 사용하는 것이 좋습니다.

  • OCI 이벤트

    이 아키텍처에서 OCI Events 서비스는 "Object Create" 및 "Object Update" 이벤트에 대한 OCI Object Storage의 변경 사항을 수신하도록 구성됩니다. 객체가 OCI 함수에 업로드되고 처리할 함수를 호출하면 서비스가 호출됩니다.

고려 사항

이 참조 구조를 배치할 때는 다음 사항을 고려하십시오.

  • 성능

    OCI 이벤트, OCI Functions 및 Oracle NoSQL는 확장성이 뛰어난 관리형 서비스입니다. Oracle NoSQL 서비스는 온디맨드 처리량 및 스토리지 프로비저닝을 제공합니다.

    프로비저닝하기 전에 Oracle NoSQL Database Cloud Service의 처리량 및 스토리지 용량을 예측해야 합니다.

  • 보안

    정책을 사용하여 OCI 리소스에 액세스할 수 있는 사용자를 제한합니다.

    OCI Object Storage의 경우 암호화는 기본적으로 사용으로 설정되며 해제할 수 없습니다.

    암호 및 민감한 데이터를 OCI Vault에 저장하는 것이 좋습니다. OCI 서비스 권한 부여에 사용되는 API 키, DB 사용자 이름, 비밀번호 및 인증 토큰 저장에 OCI 함수 사용을 고려해 보십시오.

  • 가용성

    Oracle은 클라우드 네이티브 및 완전 관리형 OCI 이벤트, OCI Functions, Oracle NoSQL 및 OCI Logging의 고가용성을 보장합니다.

  • 비용

    함수가 실행 중인 동안 사용된 리소스에 대해서만 비용을 지불합니다.

배치

GitHub 저장소에는 이 참조 아키텍처를 구현하는 OCI Functions 코드가 포함되어 있습니다.

  1. GitHub으로 이동합니다.
  2. 저장소를 로컬 컴퓨터로 복제하거나 다운로드합니다.
  3. README 문서의 지침을 따릅니다.

추가 탐색

OCI 이벤트, OCI 함수 및 NoSQL 서비스에 대한 자세한 내용은 다음 리소스를 참조하십시오.

다음 추가 리소스를 검토하십시오.

수락

Authors: Shan Duraipandian

Contributors: John Sulyok