서버를 사용하지 않는 함수를 사용하여 IoT 데이터를 Autonomous Database로 스트리밍

Internet of Things(IoT) 장치를 활용하는 워크로드는 실시간으로 효율적으로 확장해야 합니다. 더 많은 장치와 센서를 배포함에 따라 대량의 스트리밍 데이터와 다양한 데이터 증가가 가능합니다. Oracle Cloud에서 서버 미사용 함수 및 자율운영 데이터베이스를 사용하여 스트리밍된 IoT 데이터의 처리를 자동화하고 스케일을 조정합니다.

구조

이 구조에서 IoT 장치의 데이터는 API 게이트웨이를 통해 서버리스 기능으로 흐르며 스트리밍 서비스를 사용하여 Oracle Cloud의 자율운영 데이터베이스로 데이터를 업로드합니다. 클라우드 외부의 사용자는 Oracle Cloud Infrastructure 컴퓨트 인스턴스에서 실행되는 Flask를 기반으로 하는 웹 서버를 통해 데이터에 액세스할 수 있습니다.

다음 다이어그램은 이 구조를 보여 줍니다.



oci-arch-iot-streaming-oracle.zip

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

  • 지역

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

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

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

    이 구조에서 자율운영 데이터베이스 및 데이터베이스 설정 기능은 전용 서브넷에 연결됩니다. 웹 서버를 호스트하는 컴퓨트 인스턴스와 스트림을 처리하는 기능이 공용 서브넷에 배치됩니다.

  • NSG(네트워크 보안 그룹)

    NSG는 클라우드 리소스에 대한 가상 방화벽 역할을 합니다. Oracle Cloud Infrastructure의 제로 트러스트 보안 모델을 사용하면 모든 트래픽이 거부되며 VCN 내의 네트워크 트래픽을 제어할 수 있습니다. NSG는 단일 VCN의 지정된 VNIC 세트에만 적용되는 수신 및 송신 보안 규칙 세트로 구성됩니다.

    이 아키텍처의 데이터베이스 및 웹 서버에 대한 액세스는 별도의 NSG를 통해 제어됩니다.

  • API 게이트웨이

    Oracle API Gateway를 사용하면 네트워크 내에서 접근할 수 있는 전용 엔드포인트를 사용하여 API를 게시할 수 있으며, 필요한 경우 공용 인터넷에 노출할 수 있습니다. 엔드포인트는 API 검증, 요청 및 응답 변환, CORS, 인증 및 권한 부여, 요청 제한을 지원합니다.

  • 스트리밍

    Oracle Cloud Infrastructure Streaming은 실시간으로 소비하고 처리할 수 있는 대용량의 연속 데이터 스트림을 수집할 수 있도록 완전하게 관리되고 확장 가능하며 내구성이 뛰어난 저장 영역 솔루션을 제공합니다. 스트리밍 을 사용하여 애플리케이션 로그, 운영 원격 측정, 웹 클릭-스트림 데이터 등의 대용량 데이터를 수집하거나 게시-구독 메시징 모델에서 데이터가 지속적으로 순차적으로 생성 및 처리되는 기타 사용 사례에 사용할 수 있습니다.

  • 함수

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

  • 자율운영 데이터베이스

    이 구조는 전용 끝점과 함께 자율운영 데이터베이스(Oracle Autonomous Data Warehouse 또는 Oracle Autonomous Transaction Processing) 를 사용합니다.

    Oracle Autonomous Data Warehouse는 데이터 웨어하우징 작업 로드에 최적화된 자율 구동, 자율 보안, 자율 복구 데이터베이스 서비스입니다. 하드웨어를 구성 또는 관리하거나 소프트웨어를 설치할 필요가 없습니다. Oracle Cloud Infrastructure는 데이터베이스 생성뿐만 아니라 데이터베이스 백업, 패치 적용, 업그레이드 및 튜닝도 처리합니다.

    Oracle Autonomous Transaction Processing는 트랜잭션 처리 작업 로드에 최적화된 자율 구동, 자율 보안, 자율 복구 데이터베이스 서비스입니다. 하드웨어를 구성 또는 관리하거나 소프트웨어를 설치할 필요가 없습니다. Oracle Cloud Infrastructure는 데이터베이스 생성뿐만 아니라 데이터베이스 백업, 패치 적용, 업그레이드 및 튜닝도 처리합니다.

  • 웹 서버

    이 아키텍처에서는 Flask 마이크로 프레임 끝점이 컴퓨트 인스턴스에 배치됩니다. Flask를 기반으로 하는 응용 프로그램은 자율운영 데이터베이스의 데이터를 동적 웹 컨텐츠로 표시할 수 있습니다.

권장 사항

다음 권장 사항을 시작점으로 사용하십시오. 요구 사항이 다를 수 있습니다.

  • VCN 크기 조정

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

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

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

  • 컴퓨트 구성

    이 구조에서 Oracle Linux 7 . 8이미지 및 VM.Standard2.1 구성은 플래시 기반 웹 서버에 사용됩니다. 응용 프로그램의 리소스 요구에 적합한 구성을 선택합니다.

  • API 게이트웨이 기능

    API 게이트웨이 끝점은 API 검증, 요청 및 응답 변환, CORS, 인증 및 권한 부여, 요청 제한을 지원합니다. 비즈니스 및 IT 요구 사항에 맞는 기능을 선택하십시오.

  • 스트림 분할

    스트리밍 서비스는 분할된 추가 전용 메시지 로그(스트림) 를 제공합니다. 분할 영역은 스트림의 섹션입니다. 분할 영역을 사용하면 여러 노드에 걸쳐 메시지를 분할하여 스트림을 분배할 수 있습니다. 여러 소비자가 스트림에서 병렬로 읽을 수 있도록 각 분할영역을 별도의 시스템에 배치할 수 있습니다. 계산 집약적인 대형 작업 로드의 경우 분할 영역 수를 늘리는 것이 좋습니다.

  • 자율운영 데이터베이스 버전

    자율운영 데이터베이스에 사용 가능한 최신 버전을 사용합니다.

고려 사항

이 구조를 구현할 때 다음 매개변수에 대한 요구 사항을 고려하십시오:

  • 요청 스로틀

    API 게이트웨이를 생성하고 하나 이상의 API를 배치한 후 프론트 엔드 클라이언트가 백엔드 서비스로 요청을 전송할 수 있는 속도를 제한할 수 있습니다. 백엔드 리소스가 너무 많은 요청에 의해 과도하게 발생하지 않도록 보호하여 고가용성 및 공정한 사용을 유지 관리하기 위한 요구 사항에 따라 요청률 제한을 결정합니다. DoS(서비스 거부) 공격을 방지하거나 리소스 소비를 제어하고 제한해야 할 수도 있습니다. 궁극적으로 API 배치 사양의 모든 경로에 전역적으로 비율 제한을 적용합니다.

  • 서비스 제한

    구조를 설계할 때는 스트리밍 및 함수 서비스에 대한 서비스 제한을 고려하십시오. 자세히 알아보기 섹션에 나열된 서비스 제한 문서를 참조하십시오.

  • 확장성
    • 데이터베이스

      언제든지 데이터베이스의 CPU 코어 수를 수동으로 확장 또는 축소할 수 있습니다. 자율운영 데이터베이스의 자동 크기 조정 기능을 통해 데이터베이스는 언제든지 현재 기본 CPU 코어 수의 최대 3배를 사용할 수 있습니다. 수요가 증가함에 따라 자동 스케일링은 사용 중인 코어 수를 자동으로 늘립니다. 자율운영 데이터베이스를 사용하면 가용성이나 성능에 영향을 주지 않고 언제든지 스토리지 용량을 확장할 수 있습니다.

    • 응용 프로그램

      인스턴스 풀과 자동 크기 조정 기능을 사용하여 Flask 응용 프로그램의 크기를 조정할 수 있습니다.

      인스턴스 풀을 사용하면 동일한 영역 내에서 동일한 구성을 기반으로 여러 컴퓨트 인스턴스를 프로비전하고 생성할 수 있습니다.

      자동 크기 조정을 사용하여 CPU 활용률과 같은 성능 측정 단위를 기반으로 인스턴스 풀의 컴퓨트 인스턴스 수를 자동으로 조정할 수 있습니다. 자동 스케일링을 사용하면 수요가 높은 기간 동안 사용자에게 일관된 성능을 제공하고 수요가 낮을 때 비용을 줄일 수 있습니다.

    • 함수

      Oracle Functions는 요청 로드에 따라 함수 컨테이너를 자동으로 생성하고 제거합니다. 함수가 호출될 때와 함수가 실행되는 기간에 대해서만 지불합니다.

  • 애플리케이션 가용성

    결함 도메인은 가용성 도메인 내에서 최상의 복원성을 제공합니다. 고가용성이 필요한 경우 가능하면 여러 가용성 도메인 또는 여러 영역을 사용하는 것이 좋습니다.

  • 백업
    • 데이터베이스

      Oracle Cloud Infrastructure는 자율운영 데이터베이스를 자동으로 백업하고 백업을 60일 동안 보존합니다. 보존 기간 동안 원하는 시점으로 데이터베이스를 복원 및 복구할 수 있습니다. 수동 백업을 생성하여 자동 백업을 보완할 수도 있습니다. 수동 백업은 생성한 Oracle Cloud Infrastructure Object Storage 버킷에 저장되며 60일 동안 보존됩니다.

    • 응용 프로그램

      Oracle Cloud Infrastructure Block Volumes 서비스를 사용하면 블록 볼륨에 데이터의 적시 백업을 생성할 수 있습니다. 언제든지 이러한 백업을 새 볼륨으로 복원할 수 있습니다.

      서비스를 사용하여 응용 프로그램 중단 또는 작동 중지 시간 없이 부트 볼륨의 적시, 장애 발생 시 정합성이 보장되는 백업을 만들 수도 있습니다. 부트 볼륨과 블록 볼륨은 동일한 백업 기능을 갖습니다.

  • 보안
    • 액세스 제어

      정책을 사용하여 클라우드의 리소스에 액세스할 수 있는 사용자 및 수행할 수 있는 작업을 제한할 수 있습니다.

    • 네트워크 보안

      네트워킹 서비스는 보안 규칙을 사용하여 패킷 레벨에서 트래픽을 제어하는 두 가지 가상 방화벽 기능인 보안 목록과 NSG(네트워크 보안 그룹) 를 제공합니다. NSG는 단일 VCN에서 선택한 VNIC 세트에만 적용되는 수신 및 송신 보안 규칙 세트로 구성됩니다. 예를 들어, VCN에 있는 다계층 응용 프로그램의 웹 계층에서 웹 서버로 작동하는 모든 컴퓨트 인스턴스를 선택할 수 있습니다.

      NSG 보안 규칙은 보안 목록 규칙과 동일하게 작동합니다. 그러나 NSG 보안 규칙의 소스 또는 대상의 경우 CIDR 블록 대신 NSG를 지정할 수 있습니다. 따라서 동일한 VCN의 두 NSG 간 트래픽 또는 단일 NSG 내의 트래픽 간 트래픽을 제어하는 보안 규칙을 쉽게 작성할 수 있습니다. 데이터베이스 시스템을 생성할 때 NSG를 하나 이상 지정할 수 있습니다. 하나 이상의 NSG를 사용하도록 기존 데이터베이스 시스템을 업데이트할 수도 있습니다.

배치

이 참조 구조에 대한 Terraform 코드는 GitHub에서 사용할 수 있습니다. 한 번의 클릭으로 코드를 Oracle Cloud Infrastructure Resource Manager로 가져와서 스택을 생성하고 배치할 수 있습니다. 또는 Terraform CLI를 사용하여 GitHub에서 컴퓨터로 코드를 다운로드하고, 코드를 사용자정의하고, 구조를 배치합니다.

  • Oracle Cloud Infrastructure Resource Manager를 사용하여 배치:
    1. Oracle Cloud에 배치누릅니다.

      아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.

    2. 조건 및 조항을 검토하고 수락합니다.
    3. 스택을 배치할 영역을 선택합니다.
    4. 화면의 프롬프트 및 지침에 따라 스택을 만듭니다.
    5. 스택을 생성한 후 Terraform 작업 을 누르고 계획 을 선택합니다.
    6. 작업이 완료될 때까지 기다린 후 계획을 검토합니다.

      변경하려면 스택 세부정보 페이지로 돌아가서 스택 편집 을 누르고 필요한 사항을 변경합니다. 그런 다음 계획 작업을 다시 실행합니다.

    7. 추가 변경이 필요하지 않은 경우 스택 세부 정보 페이지로 돌아가서 Terraform 작업 을 누르고 적용 을 선택합니다.
  • Terraform CLI를 사용하여 배치:
    1. GitHub로 이동합니다.
    2. 코드를 로컬 컴퓨터에 다운로드하거나 복제합니다.
    3. README의 지침을 따릅니다.

자세히 살펴보기

클라우드에서 워크로드에 서버를 사용하지 않는 기능을 사용하는 방법에 대해 자세히 알아보십시오.

변경 로그

이 로그에는 중요한 변경사항만 나열됩니다: