GraphQL 및 NoSQL를 사용하여 컨테이너화된 비디오 애플리케이션 배포

주문형 비디오 스트리밍 애플리케이션을 고려해 보십시오. 그것은 전 세계 고객을 보여주는 다양한 스트림 시계. 쇼는 여러 시즌을 가질 수 있으며, 한 시즌은 여러 에피소드를 가질 수 있습니다. 이 고객 활동을 추적하려면 최신 영구 메타데이터 저장소가 필요합니다.

일반적으로 고객은 자신이 보는 에피소드, 에피소드당 시계 시간, 시청한 시즌의 총 수 등과 같은 내용을 추적하는 데 관심이 있습니다. 고객은 또한 스트리밍 애플리케이션이 시청을 중단한 곳에서 스트리밍을 시작하기를 원합니다. 결국 누가 처음부터 다시 시작하기를 원합니까?

이 아키텍처는 다양한 Oracle Cloud Infrastructure 서비스를 사용하는 여러 마이크로서비스로 구성된 주문형 비디오 스트리밍 애플리케이션을 안내합니다. 이 아키텍처에서는 활동 추적 마이크로서비스에 중점을 둡니다. 스트리밍 애플리케이션의 백엔드는 데이터를 수집하여 가장 인기 있는 쇼 및 쇼당 평균 시청 시간과 같은 보고서를 생성합니다.



구조

이 응용 프로그램은 응용 프로그램의 두뇌를 나타내는 3계층 구조를 사용합니다. 이러한 서비스의 기능을 통해 가용성이 높고 확장 가능하며 안전한 서버리스 운영 애플리케이션을 구축할 수 있습니다. 애플리케이션은 수천 대의 서버를 사용할 수 있지만 서버리스 패러다임을 활용하여 단일 서버를 관리할 필요는 없습니다.

최근에는 REST가 웹 API 설계의 표준이 되었습니다. REST 아키텍처 스타일은 Stateless 서버에서 실행할 수 있으며 리소스에 대한 구조적 액세스를 제공합니다. 그러나 REST API는 모바일 사용량 증가, 저전력 장치 및 느슨한 네트워크 등 빠르게 변화하는 클라이언트에 대한 요구사항을 충족할 때 유연성이 떨어지는 것으로 나타났습니다.

이러한 애플리케이션의 경우 네트워크를 통해 전송되는 데이터를 최소화하고 사용자가 API를 직접 사용하여 데이터를 쉽게 쿼리할 수 있는 솔루션을 찾았습니다.

GraphQL는 다양한 언어로 코딩할 수 있는 API에 대한 오픈 소스 데이터 쿼리 및 조작 언어입니다. GraphQL는 API의 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하는 동시에 기존 데이터로 쿼리를 이행할 수 있는 런타임 기능을 제공합니다. GraphQL는 데이터베이스 기술과 혼동되는 경우가 많지만 GraphQL는 특정 데이터베이스 또는 스토리지 엔진에 연결되지 않고 대신 기존 데이터에 의해 지원됩니다.

모던 애플리케이션 개발자는 데이터 조각을 보관할 시기와 방법을 결정할 때 다양한 옵션을 선택할 수 있습니다. 최근 몇 년 동안 NoSQL 데이터베이스는 점점 더 인기를 얻고 있으며 이제 모든 애플리케이션 개발자가 사용할 수있는 필수 도구 중 하나로 간주됩니다. '시도되고 진정한' 관계형 데이터베이스는 데이터 정규화, 엄격한 일관성 및 데이터 액세스를 위한 임의의 복잡한 쿼리와 같은 일반적인 애플리케이션 문제를 해결하는 데 큰 도움이 되지만, NoSQL 데이터베이스는 다른 접근 방식을 사용합니다.

컨테이너화된 애플리케이션을 실행하려면 가상 머신 인스턴스화, 컨테이너 이미지 실행을 위한 구성요소 설치(및 소프트웨어 및 운영체제 업데이트를 포함한 모든 지원 종속성) 및 최적으로 실행되고 사용 가능하며 손상되지 않았는지 확인하기 위한 애플리케이션 모니터링에서 상당한 오버헤드가 필요할 수 있습니다.

개발자는 여러 언어로 제공되는 NoSQL SDK를 사용하여 Oracle NoSQL Database Cloud Service에 연결하고 NoSQL 테이블로 작업할 수 있습니다. Oracle Cloud Infrastructure Container Service는 전담 관리 서비스로, GraphQL 애플리케이션 배포를 위해 Kubernetes와 같은 컨테이너 통합관리 플랫폼이 필요하지 않은 컨테이너화된 워크로드에 적합합니다. 개발 팀이 클라우드 전용 애플리케이션을 안정적으로 구축, 배포 및 관리하려는 경우 OCI Kubernetes Engine(OKE)을 사용합니다.

Oracle Cloud Infrastructure API Gateway를 사용하면 네트워크 내에서 액세스할 수 있는 전용 엔드포인트가 있는 API를 게시할 수 있습니다. 인터넷 트래픽을 허용하려면 공용 IP 주소로 API를 노출시킬 수 있습니다. 끝점은 API 검증, 요청 및 응답 변환, CORS, 인증/권한 부여 및 요청 제한을 지원합니다.

이 모든 기능은 고객이 인프라를 배포 및 관리하는 대신 애플리케이션에 가치를 더하는 데 집중할 수 있는 서버리스 환경을 제공합니다.

Oracle NoSQL Database Cloud Service의 몇 가지 이점은 다음과 같습니다.

  • 데이터 모델링: Oracle NoSQL Database Cloud Service는 스키마 기반 모델링과 스키마리스(JSON) 모델링을 모두 지원합니다. GraphQL 기반 애플리케이션을 개발하는 직관적인 방법을 제공합니다. GraphQL 스키마는 중첩된 데이터 구조를 사용하여 설계되었으며 NoSQL 데이터 모델링을 수행할 때 개발자가 사용할 항목과 일치합니다. Native 선택
  • 빠른 개발 수명 주기: 개발자가 애플리케이션을 작성합니다. Oracle은 데이터베이스 관리, 스토리지 관리, 고가용성 및 확장성을 수행하여 개발자가 고성능 애플리케이션 제공에 집중할 수 있도록 지원합니다. 개발자는 GraphQL 마이크로서비스용 클러스터 또는 데이터베이스가 아닌 테이블 또는 테이블 계층을 배포하고 관리합니다.
  • ID 액세스 및 관리: Oracle NoSQL Database Cloud ServiceOracle Cloud Infrastructure Identity and Access Management를 사용하여 Oracle Cloud에 대한 보안 액세스를 제공합니다. Oracle Cloud Infrastructure Identity and Access Management에서는 동적 그룹을 생성하고 Oracle NoSQL Database Cloud Service 테이블을 검사, 읽기, 사용 또는 관리할 수 있는 권한을 부여할 수 있습니다.
  • 중복성의 데이터 안전: Oracle NoSQL Database Cloud Service는 단일 AD 리전에 여러 AD(가용성 도메인) 또는 FD(결함 도메인)의 데이터를 저장합니다. AD 또는 FD를 사용할 수 없게 되면 다른 AD 또는 FD에서 사용자 데이터에 계속 액세스할 수 있습니다. 영역 끝점에 대한 요청은 AD/FD에만 국한되지 않으므로 AD/FD를 사용할 수 없는 것은 투명합니다.
  • 고성능 및 예측 가능성: Oracle NoSQL Database Cloud Service는 고성능을 대규모로 제공함으로써 Oracle Cloud Infrastructure의 최신 구성요소 기술을 활용합니다. 개발자는 처리량 및 스토리지 요구 사항이 증가하더라도 애플리케이션이 예측 가능한 대기 시간으로 데이터를 반환한다는 것을 알고 있습니다.
  • 무제한 관리: 개발자는 데이터 서버나 기본 인프라 및 보안을 관리할 필요가 없습니다. Oracle은 개발자가 애플리케이션 구축에 집중할 수 있도록 하드웨어와 소프트웨어를 유지 관리합니다.
  • 온디맨드 처리량 및 스토리지 프로비저닝: Oracle NoSQL Database Cloud Service는 낮은 대기 시간과 예측 가능한 대기 시간으로 애플리케이션 처리량 성능 요구사항을 충족하도록 확장됩니다. 정기적인 비즈니스 변동에 따라 워크로드가 증가함에 따라 애플리케이션은 프로비저닝된 처리량을 늘려 일관된 사용자 경험을 유지할 수 있습니다. 워크로드가 감소함에 따라 동일한 애플리케이션이 프로비저닝된 처리량을 줄여 운영 비용을 절감할 수 있습니다. 온디맨드 용량을 사용하면 각 테이블에 대해 읽기 또는 쓰기 용량을 프로비저닝할 필요가 없습니다. 실제로 소비된 읽기 및 쓰기 단위에 대해서만 비용을 지불합니다.

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



컨테이너화-비디오-app-graphql-nosql-architecture.zip

구조에는 다음과 같은 구성 요소가 있습니다.

  • Tenancy

    테넌시는 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 NoSQL Database Cloud Service와 같은 다른 서비스로의 접근 권한을 제공합니다. VCN에서 Oracle 서비스로의 트래픽은 Oracle 네트워크 패브릭을 통해 이동하며 인터넷을 통과하지 않습니다.

  • 인터넷 게이트웨이

    인터넷 게이트웨이는 VCN의 공용 서브넷과 공용 인터넷 간의 트래픽을 허용합니다.

  • API 게이트웨이

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

  • IAM(ID 및 액세스 관리)

    Oracle Cloud Infrastructure Identity and Access Management(IAM)는 Oracle Cloud Infrastructure(OCI) 및 Oracle Cloud Applications의 액세스 제어 플레인입니다. IAM API 및 사용자 인터페이스를 통해 ID 도메인 및 ID 도메인 내의 리소스를 관리할 수 있습니다. 각 OCI IAM ID 도메인은 독립형 ID 및 액세스 관리 솔루션 또는 다른 사용자 모집단을 나타냅니다.

  • 정책

    Oracle Cloud Infrastructure Identity and Access Management 정책은 누가 어떤 리소스에 액세스할 수 있는지, 어떻게 액세스할 수 있는지 지정합니다. 그룹 및 구획 레벨에서 액세스가 부여됩니다. 즉, 특정 구획 내에서 또는 테넌시에 특정 유형의 액세스 권한을 그룹에 제공하는 정책을 작성할 수 있습니다.

  • NoSQL 데이터베이스

    Oracle NoSQL Database Cloud Service를 사용하면 개발자가 문서, 열 및 키-값 데이터베이스 모델을 사용하여 애플리케이션을 쉽게 구축할 수 있으므로 고가용성을 위해 데이터 복제를 통해 10밀리초 미만의 예측 가능한 응답 시간을 제공할 수 있습니다. 이 서비스는 온프레미스 Oracle NoSQL Database와의 100% 호환성을 포함하여 온디맨드 및 프로비저닝된 용량 모드 모두에 대해 ACID 트랜잭션, 서버리스 확장, 포괄적인 보안 및 낮은 사용량 기준 가격 정책을 제공합니다.

  • Oracle Cloud Infrastructure 컨테이너 서비스

    Oracle Cloud Infrastructure 컨테이너 서비스는 서버 관리 없이 즉시 컨테이너를 실행할 수 있게 해주는 서버 미사용 컴퓨트 서비스입니다.

  • OCI Kubernetes 엔진

    Oracle Cloud Infrastructure Kubernetes Engine(Kubernetes Engine 또는 OKE)는 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있는 확장 가능한 고가용성 완전 관리형 서비스입니다. 애플리케이션에 필요한 컴퓨트 리소스를 지정하면 Kubernetes Engine이 기존 테넌시의 Oracle Cloud Infrastructure에서 프로비저닝합니다. OKE는 Kubernetes를 사용하여 호스트 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.

권장사항

다음 권장 사항을 시작점으로 사용하십시오. 요구 사항은 여기에 설명된 구조와 다를 수 있습니다.
  • API 게이트웨이

    API Gateway는 다음과 같은 초기 수준의 심사 및 사용 제어를 제공하는 데 사용할 수 있습니다.

    • 서비스 인증 및 권한 부여
    • 비율 제한과 같은 서비스 제어
    • 서비스 사용 분석 캡처

    API 게이트웨이(방화벽 또는 로드 밸런서 아님)는 솔루션 인식 라우팅을 수행하여 GraphQL 기능으로 충족되지 않는 모든 엔드포인트를 올바른 위치로 지정할 수 있습니다. 백엔드 솔루션에서 지원하는 최대 성능 기능과 한 서비스 사용자의 최대 사용 권한을 기반으로 합리적인 요금 한도를 고려해야 합니다.

고려사항

이 참조 아키텍처를 배치할 때 다음 사항을 고려하십시오.

  • 보안

    API Gateway에서 애플리케이션 레벨 보안을 처리해야 합니다. @auth과 같은 GraphQL 지시어를 활용하여 세분화된 GraphQL 특정 보안(예: 속성 레벨 액세스)을 처리할 수 있습니다.

배치

이 아키텍처를 배치하려면 이 라이브 랩에서 활동 추적 앱 배치 지침을 따르십시오.

추가 탐색

GraphQL 및 Oracle NoSQL Database Cloud Service를 사용하여 컨테이너화된 비디오 애플리케이션을 배포하는 방법에 대해 자세히 알아보십시오.

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

Oracle Cloud Infrastructure 관련 자료:

확인

Authors:

  • 다리오 베가
  • 마이클 브레이