참조 아키텍처는 모던 앱 개발의 핵심 요구 사항을 충족하기 위해 특정한 디자인 원칙을 적용합니다. 이와 같은 원칙은 개발자가 AI/ML, 데이터 기반 분석, 메시징 플랫폼을 통합한 웹/모바일 앱을 구축할 수 있게 해 줍니다. 이벤트 기반 아키텍처는 이벤트에 실시간으로 반응할 수 있습니다. 이 아키텍처 패턴은 재무, 소매 유통, 헬스케어, 에너지, 제조 분야에서 커스텀 앱 개발을 가속화하고, 패키지화된 Oracle Application을 확장하는 데에도 도움이 됩니다. 대부분의 엔터프라이즈 애플리케이션은 데이터 중심 애플리케이션이며, 컨버지드 데이터베이스 환경에서 가장 효율적으로 개발됩니다. 이 아키텍처 패턴은 Java, Python, Javascript, Go 등 인기 언어를 사용한 프로그래밍 역시 효과적으로 지원합니다. 로코드 앱 개발은 필요한 기술 계층을 압축하며, 이는 일부 애플리케이션에는 훌륭한 옵션입니다. Kubernetes가 관리하는 앱 및 데이터베이스 컨테이너는 이후 Oracle Cloud Infrastructure(OCI), 독립형 환경 및 기타 주요 퍼블릭 클라우드에 배포될 수 있습니다.
일반적으로 웹 및 모바일 애플리케이션에는 사용자게 표시되는 부분인 프론트 엔드, 쿼리 생성기, 데이터 계산을 수행하고 프론트엔드를 보조하는 백엔드 등이 포함됩니다. 웹 애플리케이션은 사용자 또는 API 요청에 응답하기 위해 요청을 전송한 API 또는 데이터베이스에 저장된 영구 데이터와 상호 작용합니다. 애플리케이션은 반드시 브라우저 및 모바일 기기와 같은 여러 클라이언트를 지원해야 하고, API 및 이벤트를 사용하여 다른 시스템 및 앱과 상호 작용해야 합니다. 백엔드는 반드시 보안성을 갖추고, 필요한 만큼 확장될 수 있어야 합니다.
다수의 애플리케이션 팀들이 각자 독립적으로 테스트, 배포, 소유할 수 있는 마이크로서비스들의 모음과 같은 웹 애플리케이션을 구축합니다. 서비스를 REST API 형식으로 노출시키고, 이벤트 및 메시지용 내장 이벤트 메시, 또는 마이크로 서비스별로 생성된 API를 사용하여 다른 마이크로서비스와 통신합니다. 데이터베이스의 REST 끝점을 통해 지능형 앱의 머신러닝 기능을 ML 모델들과 통합합니다.
웹 및 모바일 앱은 수요 급증을 처리하고, 고부하 환경에서도 저지연성을 유지하기 위한 확장성을 갖추어야 합니다. 또한 연중무휴로 이용 가능해야 하고, 요청이 있을 시 언제든 데이터를 작성할 수 있는 탄력성을 갖추어야 하고, 저장된 정보를 유실하는 일은 절대로 없어야 합니다.
모바일 앱은 React Native 또는 SwiftUI와 같은 종단간 프레임워크로 구축되어 모든 데이터 서비스 및 데이터 보강 서비스 이용과 관련하여 백엔드와 상호 작용할 수 있는 사용자 인터페이스를 생성합니다. 개발자는 워크플로 및 애플리케이션 로직에만 집중할 수 있으며, 탄력적이고, 안전하고, 자율적으로 확장되는 잘 정의된 API를 통해 백엔드에 접근할 수 있습니다.
인터넷상에 노출된 웹 앱의 보안은 극히 중요합니다. 데이터 암호화, TLS, DDoS 보호, 방화벽, 세분화된 사용자 및 데이터 액세스 관리 등이 필수적입니다. 데이터베이스 보안 및 애플리케이션 보안은 모두 중요하며, Oracle Database Wallet, OCI Vault 서비스를 통해 액세스 가능한 암호 및 키를 이용하여 처리됩니다.
Javascript(React) 또는 SwiftUI를 통해 모바일 및 웹 프론트엔드를 구축합니다. 백엔드 데이터 및 앱 서비스의 경우 다언어 지원(Python, Node.js, Java, PL/SQL, Go 등)을 통해 해당하는 언어들로 작성된 사용 사례 및 마이크로 서비스를 지원합니다. 데이터 처리는 데이터가 저장되는 곳과 가까운 위치에서 수행합니다.
웹 또는 모바일 애플리케이션은 조직 외부의 다른 비즈니스 시스템 및 서비스와 접속하는 경우가 많습니다. 웹 애플리케이션에 포함된 서비스는 잘 정의된 API를 통해 외부와의 상호 작용 및 협업을 진행해야 합니다. Oracle REST Data Services(ORDS) 를 사용하여 데이터 API를 사용하거나, 신규 API를 개발할 수 있습니다. OML 서비스 및 OML4Py가 내장된 Python 실행 모델을 통해 사전 구축된 REST 끝점으로 머신러닝을 활용합니다. Oracle Cloud에서 사용 가능한 API 게이트웨이를 모든 클라이언트용 단일 시작점으로 사용하고, 각 API 요청 건을 해당하는 서비스로 라우팅합니다. 마이크로 서비스 간 API 통신 보안을 위해 로드 밸런서 서비스 및 수신 컨트롤러를 구성합니다.
웹 또는 모바일 애플리케이션 인프라의 유지관리를 위해서는 현재의 셋업을 배포, 업그레이드, 패치 적용, 확장, 보호하기 위한 작업들이 요구됩니다. Oracle Autonomous Database 등의 관리형 서비스 및 Oracle Cloud에서 구동되는 다른 여러 관리형 서비스들을 사용하여 가용성 및 확장성을 극대화하고, 변화하는 웹 및 모바일 앱 관련 요구사항에 대응할 수 있습니다. 관리형 서비스는 애플리케이션의 연중무휴, 24시간 가용성을 보장하고, 관련 인프라가 호스팅되고 있는 데이터 센터에서의 장애 발생시 앱 데이터를 보호해야 합니다. 자가 관리형 서비스는 공급업체 관리형 서비스를 사용할 수 없는 경우에 한하여 사용합니다.
애플리케이션의 중간 계층 구성 요소를 무상태(stateless)로 유지합니다. 애플리케이션 상태를 저장해야 하는 경우, Oracle Autonomous Database를 사용하여 애플리케이션 데이터 및 상태를 저장함으로써 애플리케이션의 일관성, 내구성 및 빠른 복구 가능성을 확보할 수 있습니다. 단일 데이터베이스에 전체 상태를 저장하는 것이 애플리케이션 복구에 있어 보다 간단하고 효율적입니다.
웹 및 모바일 애플리케이션은 서로 다른 데이터 포맷을 사용하고, 데이터 저장소를 활용하여 데이터를 저장, 검색, 처리합니다. 앱이 작성하는 데이터의 성격으로는 테이블형(관계형), 비구조적, XML 및 JSON 형식 포맷, 공간, 또는 그래프 등이 있습니다. 과거에는 이러한 데이터 다양성을 관계형 데이터를 위한 관계형 데이터베이스, 구조화되지 않은 데이터를 위한 문서 데이터베이스, 계층적 링크 데이터를 위한 그래프 데이터베이스 등의 다양한 데이터베이스를 이용해 해결했습니다. 하지만 여러 데이터베이스의 사용은 운영상의 복잡성 및 데이터 비일관성을 야기합니다. 그와 같은 문제를 해결하고자 개발된 컨버지드 Oracle Autonomous Database를 활용하여 여러 유형의 데이터를 저장하고, 인덱스화하고, 저장된 데이터를 검색할 수 있는 방법을 제공하고, 모든 형식의 데이터를 활용하는 통합 분석을 수행할 수 있습니다.
하나의 웹 또는 모바일 애플리케이션에는 다수의 애플리케이션 및 비즈니스 팀이 소유한 수백 개의 서비스들이 포함될 수 있습니다. 개방형 도구 인터페이스를 사용한 통합 관측 기능은 그와 같이 분산되어 있는 시스템 내부 동작 파악에 있어 중요한 역할을 합니다. 메트릭, 로그를 사용하여 관측 가능성 솔루션을 중앙화하고, 애플리케이션 및 데이터 레이어의 모든 계층으로부터 내보낸 데이터를 추적합니다. 이러한 서비스들은 프론트엔드부터 백엔드까지의 전체 스택을 모니터링하여 애플리케이션의 문제를 빠르게 파악 및 수정하고, 지속적인 성능 튜닝을 위한 플랫폼 역할을 합니다.
웹 및 모바일 애플리케이션은 반드시 탄력성 및 장애 복구, 다운타임 최소화, 데이터 손실 방지 등을 위한 기능들을 갖추어야 합니다. 다중화는 단일 장애 지점 최소화에 기여합니다. Kubernetes를 사용하여 데이터베이스 컨테이너 및 앱 컨테이너의 복원성을 관리할 수 있습니다. Oracle Database Kubernetes 오퍼레이터는 해당 작업을 위해 설계되었으며, 데이터 계층을 포함하는 CI/CD 파이프라인을 사용합니다. Kubernetes 클러스터 내에 최소 3개의 노드로 이루어진 노드 풀을 설정합니다. 각 노드는 OCI의 다중 가용성 도메인 영역 내의 개별 가용성 도메인에 존재합니다. OCI의 단일 가용성 도메인 영역 내에서 각각 별도의 결함 도메인 내의 노드들로 이루어진 Kubernetes 노드 풀을 설정합니다. Kubernetes의 데이터 중복성 확보를 위해 단일 퍼블릭 로드 밸런서 및 다수의 수신 컨트롤러를 갖춘 다중 프라이빗 로드 밸런서를 사용합니다.
운영 다운타임 및 데이터 손실을 최소화할 수 있는 Autonomous Data Guard를 사용하여 Autonomous Database를 설정함으로써 가용성을 최대화합니다.
최소 권한의 원칙에 따라 각 사용자 및 서비스 계정에 각자의 작업을 수행하기 위한 필요 최소한의 권한만이 부여되었는지 여부를 확인합니다. Cloud Identity and Access Management(IAM)를 사용하여 데이터베이스 및 각종 웹 애플리케이션 구성요소에 접근할 수 있는 사용자 권한을 제어합니다. 관리자는 IAM의 강력한 다중 인증 기능을 통해 애플리케이션 구성요소 및 데이터베이스에 대한 액세스를 제어할 수 있습니다.
이러한 웹 또는 모바일 애플리케이션용 컨버지드 데이터 아키텍처 패턴은 단일 종단간 서비스 및 Oracle Autonomous Database의 다양한 앱 및 데이터 서비스를 활용하여 구축된 다수의 마이크로서비스 및 백엔드로 구성됩니다. 선택적으로, 데이터베이스에 저장되지 않은 서비스의 경우 컨테이너화된 마이크로서비스들을 단일 Kubernetes 클러스터를 활용하여 관리합니다.
아래의 도표는 설명드린 바와 같은 참조 아키텍처를 시각화한 것입니다.
본 아키텍처의 구성요소들은 다음과 같습니다(각 구성요소는 Oracle Cloud Infrastructure(OCI)의 완전 관리형 서비스, 또는 다른 배포 환경의 동급 서비스입니다. 예를 들어, Oracle Autonomous Database는 OCI를 통해 제공되는 관리형 서비스이고, Oracle Database의 구동 환경은 다릅니다).
본 사용 사례는 GrabDish라는 이름의 모바일 식품 배달 애플리케이션 샘플을 활용하여 작성되었습니다. 해당 앱은 Autonomous Database의 Microservices 아키텍처 및 각 서비스별로 컨테이너화된 데이터베이스(Container Database 내의 Pluggable Database)를 활용하였습니다. 내장된 메시징 플랫폼인 Transactional Event Queues(TEQ)를 사용하여 개발자용 공통 마이크로서비스 패턴을 간소화합니다. GrabDish에는 AI/ML 서비스 및 다양한 데이터 유형이 사용되었으며, 여러 언어를 통해 프로그래밍되었습니다. 자세한 내용은 Livelabs on GrabDish(http://bit.ly/simplifymicroservices)를 참조해 주세요.
관련 리소스들을 자세히 살펴보세요.
메시징 솔루션은 온프레미스 시스템에 저장된 것들을 비롯한 각종 애플리케이션 구성요소를 클라우드 솔루션과 연결합니다. 메시지 페이로드란 애플리케이션이 생성한 이벤트, 사용자 입력, 데이터 변경 내역, 또는 장치가 생성한 이벤트 등을 비롯한 각종 이벤트를 의미합니다. 메시징 솔루션을 통해 이벤트 및 데이터 전송을 잘 정의된 분산 처리 파이프라인의 일부로 활용하거나, 데이터를 처리, 강화, 분석하는 여러 독립 다운스트림 시스템에 메시지 및 이벤트를 게시할 수 있습니다. 마이크로서비스로 구축된 대부분의 현대적 앱은 이벤트 기반 아키텍처에 의존합니다. 이벤트 메시를 통해 시스템에서 생성된 모든 이벤트를 분산 시스템 내의 다른 모든 위치에서 안전하게 활용할 수 있으며, 해당 과정에는 하나 또는 그 이상의 이벤트 브로커가 사용됩니다. 이벤트 프로세싱이 완료되면 해당 데이터(페이로드)는 데이터 레이크하우스에 저장되어 분석 및 AI/ML 모델 학습에 사용됩니다.
가용성, 신뢰성, 유연성이 뛰어난 메시징 솔루션을 구축합니다. Oracle의 컨버지드 데이터베이스 플랫폼, 클라우드 서비스, 모범 사례를 활용하여 다양한 비즈니스 니즈에 대응하기 위한 메시징 및 이벤트 기반 솔루션들을 제공합니다. 이상의 권장 사항들을 활용하여 개발 통합 작업, 배포 오버헤드, 장기적 관리에 따른 부담 등을 최소화할 수 있습니다.
메시징 솔루션은 온프레미스 시스템에 저장된 것들을 비롯한 각종 애플리케이션 구성요소를 클라우드 솔루션과 연결합니다. 메시징 솔루션을 통해 데이터 전송을 잘 정의된 분산 및 융합 처리 파이프라인의 일부로 활용하거나, 독립적으로 운용 및 개발되는 여러 다운스트림 시스템에 메시지 및 이벤트를 게시할 수 있습니다.
또한 해당 솔루션은 데이터를 버퍼링하고 동적으로 프로세스 리소스를 조정하여 예상치 못한 사용량 급증이 발생하더라도 메시지 로드에 투명하게 반영해야 합니다. 과거에는 기업이 그와 같은 목표를 충족하고 신뢰할 수 있는 메시징 솔루션을 배포 및 관리하기란 어려운 일이었습니다. 많은 비용 및 복잡성이 야기되었기 때문입니다. 그러나 이제는 클라우드의 확장성 및 성능을 바탕으로 설계된 강력한 메시징 서비스를 간편하게 구현할 수 있게 되었습니다.
다음과 같은 설계 원칙들을 기반으로 컨버지드 데이터 아키텍처를 활용하여 메시징 애플리케이션 또는 플랫폼을 구축합니다.
Oracle Transactional Event Queues와의 메시징에는 JMS 또는 Kafka API를 사용합니다. 표준 API를 활용하여 애플리케이션 이식성을 확보하고, 하이브리드 및 멀티클라우드 메시징 애플리케이션을 원활하게 구축할 수 있습니다.
내장된 인프라 유지보수 및 보안 패치 적용 기능을 갖춘 완전 관리형 서비스를 사용하여 애플리케이션을 구동합니다. 사용량 변화에 대응하기 위해 확장 자동화 기능을 활용할 수 있습니다. OCI에서 구동되는 완전 관리형 Oracle Database 서비스인 Oracle Autonomous Database를 사용합니다. Oracle Transactional Event Queues는 OCI 리전을 통해 사용할 수 있는 모든 데이터베이스에 내장된 기능입니다.
JSON, 관계형, 그래프, 공간 및 기타 다양한 데이터 유형들을 기본적으로 지원하는 Oracle Autonomous Database를 사용합니다. 데이터베이스 기능을 사용하여 애플리케이션 로직을 단순화합니다. 예를 들어, 쿼리, 조인, 분석에는 SQL을 사용합니다. 트랜잭션을 사용하여 데이터의 일관성 및 상호 격리를 보장하고, 내장된 머신러닝 알고리즘 및 분석 기능을 사용하여 불필요한 데이터 전송을 방지합니다. 데이터베이스의 보안 및 액세스 제어 기능을 통해 중요 데이터를 보호하고, 복제 기능을 활용하여 앱의 가용성, 확장성, 탄력성을 향상시킵니다.
하나의 메시징 애플리케이션에는 다양한 애플리케이션 및 비즈니스 팀이 소유한 수백 개의 서비스들이 포함될 수 있습니다. 이러한 복잡한 분산 시스템의 동작을 파악하는 데에는 개방형 도구 인터페이스를 사용한 통합 관측 가능성 기능이 중요한 역할을 합니다. 각 팀이 자체 솔루션을 구축하는 대신, 애플리케이션의 모든 계층에서 익스포트된 메트릭, 로그, 트레이싱을 중앙화합니다. 디버깅 및 성능 튜닝 워크플로용 Grafana 대시보드를 지원하기 위해 Prometheus로 TEQ 메트릭을 익스포트할 수 있습니다.
수평 확장을 통해 단일 장애 지점을 제거하고, 장애 복구를 자동화합니다.
TEQ는 Oracle Autonomous Database에 포함되어 있으므로, 추가 작업 없이도 애플리케이션에 High Availability 및 리전 간 Disaster Recovery 기능을 활용할 수 있습니다.
또한 TEQ의 트랜잭션 메시징은 외부 장애로 인한 복구 과정을 단순화해 줍니다.
Identity and Access Control(IAM) 정책을 구현하여 승인된 사용자만 스트림에서 데이터를 생성, 전송 또는 수신할 수 있도록 합니다. 끝점에 최소 접근성의 원칙을 적용하기 위해 인터넷으로부터의 접근을 제한하는 mTLS 및 서비스 게이트웨이를 사용하여 메시징 끝점에 대한 접근을 보호합니다. 저장 및 전송 중인 데이터를 암호화하여 데이터 기밀성을 확보합니다. Database Wallet을 사용하여 데이터베이스 연결에 사용되는 인증서를 보호합니다.
컨버지드 데이터베이스 아키텍처는 모던 애플리케이션에서 메시징 패턴을 구현하기 위한 설계를 제공합니다. 해당 패턴은 Oracle Autonomous Database에 내장된 Transactional Event Queues(TEQ)를 사용합니다.
해당 아키텍처는 외부 스트리밍 또는 대기열 서비스를 활용할 필요를 없애고, 공통 마이크로서비스 패턴을 단순화하는 트랜잭션 메시징 기능을 제공함으로써 메시징을 단순화해 줍니다.
애플리케이션 설계자는 컨버지드 데이터베이스 아키텍처의 확장성, 성능, 단순성을 고려해야 합니다.
FedEx는 1,500만 건의 일간 택배물 발송 관련 미수금 관리를 위해 Oracle E-Business Suite 및 Oracle TEQ로 구축된 비즈니스 이벤트 관리자를 사용하고 있습니다.
Oracle Transactional Event Queues를 통해 일회용 패스워드(OTP)를 사용하는 다양한 2단계 인증(2-FA) 시나리오를 적용할 수 있습니다.
관련 리소스들을 자세히 살펴보세요.
로 코드 플랫폼은 비즈니스 관계자와의 협업을 통한 신속한 기회 포착용 애플리케이션 구축, 데이터 보고 및 분석 앱 구축, SaaS 앱 확장, 레거시 애플리케이션 현대화등의 작업에 적합합니다. 모든 코딩에는 작성, 유지 관리, 디버깅, 업그레이드, 보안 관련 비용이 발생합니다. 개발자는 Oracle Application Express(APEX)가 제공하는 직관적 그래픽 기반 개발 경험을 통해 고급 구성요소와 공통 설계 패턴을 활용함으로써 비용 발생을 방지할 수 있습니다.
로 코드 플랫폼을 사용하면 기존 수동 코딩 방식보다 빠르게 기업용 앱을 구축할 수 있습니다. 로 코드 플랫폼은 비즈니스 관계자와의 협업을 통한 신속한 기회 포착용 애플리케이션 구축, 데이터 보고 및 분석 앱 구축, SaaS 앱 확장, 레거시 애플리케이션 현대화등의 작업에 적합합니다.
로 코드 플랫폼을 사용하면 웹 애플리케이션 개발의 복잡성과 씨름하는 대신, 비즈니스 문제 해결에 집중할 수 있습니다. 개발을 복잡하게 만드는 요인들로는 보안, 접근성, 효율적 데이터 액세스, 성능, 세계화 등이 있습니다. 로 코드 플랫폼은 유지 관리해야 하는 코드 양을 획기적으로 줄임으로써 그러한 복잡성을 해소합니다.
개발자는 Oracle Application Express(APEX)가 제공하는 직관적 그래픽 기반 개발 경험을 통해 고급 구성요소와 공통 설계 패턴을 활용함으로써 기존의 앱 개발 방식에 따른 비용 발생을 방지할 수 있습니다.
Oracle Cloud Infrastructure(OCI)는 가장 까다로운 애플리케이션 구동에 필요한 안전하고, 안정적이고, 확장 가능한 고성능 인프라를 제공합니다. OCI에서 구동되는 애플리케이션은 OCI의 확장성을 이용하여 소규모 작업 그룹으로부터 수백만 명의 최종 사용자에 이르기까지 모든 규모의 사용자들을 지원할 수 있습니다. 본 지침은 로 코드 애플리케이션 설계를 위한 원칙 및 최적의 구현 경로에 대한 설명을 제공합니다.
로 코드 패턴 구현 시에는 다음과 같은 Modern App Development 설계 원칙을 적용합니다.
앱 개발 시 메타데이터 기반의 로 코드 접근 방식을 채택합니다. 가능한 경우 선언형 애플리케이션 로직을 사용하고, 필요한 경우에만 코드를 작성합니다. 데이터베이스 내의 데이터와 SQL을 사용하여 직접 상호 작용합니다. 가용성 및 확장성을 극대화함으로써 로 코드 앱 관련 요구 사항 변화 내역을 처리할 수 있는 Oracle Autonomous Database 및 Oracle APEX Application Development(APEX Service)와 같은 완전 관리형 서비스를 사용합니다. 또한 Oracle Real Application Clusters(RAC) 및 Oracle Data Guard와 같은 데이터베이스 기능을 통해 로 코드 앱을 연중무휴로 사용 가능하도록 보장하고, 관련 인프라를 호스팅하는 데이터 센터에서의 문제 발생시 데이터 복구를 수행합니다.
OCI Resource Manager를 사용하여 Oracle Autonomous Databases 및 APEX 환경의 프로비저닝을 자동화합니다. Oracle SQL Developer Command Line(SQLcl)을 Liquibase와 함께 사용하여 데이터 모델 변경 사항의 배포를 자동화합니다. APEX 원클릭 애플리케이션 배포 기능을 통해 변경 사항을 서로 다른 환경에 수동으로 배포할 수 있습니다.
Oracle APEX는 무상태(stateless)이자 서버리스이고, 런타임 애플리케이션 상태는 테이블에 저장되므로 다수의 사용자들이 연결을 재사용할 수 있습니다. 결과적으로 연결 수가 훨씬 줄어들고, 높은 사용자 동시성을 지원할 수 있게 됩니다.
로 코드 애플리케이션은 일반적으로 구조적(관계형), 비구조적(XML/JSON 문서), 공간 및 기타 다양한 형식의 데이터를 사용해야 합니다. APEX는 Autonomous Database에 포함되어 있으므로, 사용자는 SQL, PL/SQL 및 서버 측의 JavaScript 등을 통해 모든 데이터 형식을 이용한 작업을 수행할 수 있습니다. 또한 지연 시간이 없는 데이터 액세스를 가능케 하는 APEX의 고유한 아키텍처는 앱 사용을 위한 최적의 성능을 제공합니다.
사용자 단위의 자세한 추적 및 디버깅 정보가 포함된 내장 Activity Monitoring 기능을 통해 APEX 애플리케이션 작업을 모니터링 및 추적합니다. APEX Administration Services에서 작업 영역 단위 및 인스턴스 단위 작업을 검토합니다. Performance Hub를 사용하여 데이터베이스 작업을 모니터링하고, Automatic Workload Repository(AWR) 보고서를 검토하여 최상위 리소스 소비자를 식별하고, 튜닝 권장 사항을 파악할 수 있습니다.
Oracle Autonomous Database에 포함된 APEX는 데이터 계층(Exadata 및 RAC)과 중간 계층(중복 Oracle REST Data Services 노드)을 포괄하는 고가용성 아키텍처를 사용하여 배포됩니다. Autonomous Data Guard를 사용하여 앱의 가용성을 한층 강화함으로써 가용성 도메인 장애로부터 보호합니다.
APEX 애플리케이션의 권한 부여 체계로는 OCI Identity and Access Management(IAM)를 사용합니다. APEX 앱 및 앱 구성요소에 권한 부여 체계를 지정하여 사용자 역할 또는 권한을 기준으로 하는 액세스 제어를 적용합니다. APEX의 내장된 선언형 기능을 사용하여 Session State Protection(SSP) 및 항목 레벨 암호화를 처리함으로써 앱 및 데이터를 보호합니다. SQL 쿼리에 바인드 변수를 사용하여 SQL 주입 공격을 방지합니다. 시간 초과(timeouts)를 적절히 구성하여 비활성 세션이 자동으로 종료되도록 합니다. 내장된 APEX Advisor를 실행하여 보호되지 않는 페이지, 항목, 버튼 등의 잠재적 보안 문제를 감지합니다. 선언적 이스케이핑 및 프로그래밍 방식의 이스케이핑 API를 사용하여 교차 사이트 스크립팅(XSS)으로부터의 보호 체계를 구축합니다.
본 아키텍처는 Oracle APEX Application Development(APEX Service) 및 모든 Oracle Autonomous Database 서비스를 사용하는 로 코드 앱 개발 및 배포를 위한 것입니다. 해당하는 서비스들을 배포하면 전체 스택에 필요한 모든 구성요소들 또한 자동으로 프로비저닝되고, 완전히 관리됩니다. 해당하는 구성요소에는 게이트웨이, 로드 밸런서, Oracle REST Data Services 등이 있습니다.
본 이미지는 Oracle APEX Application Development 및 모든 Oracle Autonomous Database 서비스를 사용하는 로 코드 앱 개발 및 배포용 기반 아키텍처입니다. 퍼블릭 서브넷 및 프라이빗 서브넷이 포함된 완전 관리형 환경을 보여줍니다. 완전 관리형 환경 바깥에는 APEX Applications, Oracle REST Data Services API, External REST API가 표시되어 있습니다. 해당 서비스들은 인터넷 게이트웨이 또는 NAT 게이트웨이를 통해 완전 관리형 환경에 접근합니다.
퍼블릭 서브넷에는 로드 밸런서가 포함되어 있으며, 프라이빗 서브넷에는 Oracle REST Data Services 인스턴스 및 Oracle Autonomous Database 인스턴스가 포함되어 있습니다. Autonomous Database의 경우 해당 데이터베이스에서 구동되는 Oracle APEX 인스턴스도 포함됩니다.
APEX Applications 및 Oracle REST Data Services API로부터의 트래픽은 인터넷 게이트웨이를 통해 로드 밸런서로 라우팅되며, 로드 밸런서는 해당 트래픽을 프라이빗 서브넷의 Oracle REST Data Services(ORDS) 인스턴스로 양방향 전송합니다. ORDS 서비스는 Oracle Autonomous Database와 양방향으로 통신합니다. Autonomous Database 인스턴스에서 구동되는 Oracle APEX로부터의 트래픽은 NAT 게이트웨이를 통해 외부 REST API로 직접 라우팅됩니다.
모든 애플리케이션 아티팩트들은 데이터베이스 계층에 배치됩니다. 애플리케이션과 데이터베이스 계층 간의 네트워크 트래픽이 필요하지 않으므로, 지연 시간이 없는 데이터 액세스를 제공할 수 있습니다.
로 코드 패턴을 구현할 때는 다음과 같은 사항을 고려해야 합니다.
본 패턴에 설명된 아키텍처의 대안을 고려하고, 안티패턴을 구현하지 않도록 주의합니다.
로 코드 패턴의 효율성에 대한 몇 가지 사례들은 다음과 같습니다.
관련 리소스들을 자세히 살펴보세요.
빅 데이터는 데이터베이스, 비디오, 양식, 문서, 로그 파일, 웹 페이지 또는 이미지와 같은 소스에서 제공되는 모든 데이터 유형(구조화되지 않은, 반구조화된/구조적)을 관리, 수집, 저장, 준비, 처리 및 분석할 수 있는 일련의 기능과 패턴입니다. 또한 머신러닝 플랫폼은 완전 관리형으로 제공되어야 하고, 데이터 엔지니어 및 데이터 과학자가 모델 개발 수명 주기 전반에 걸쳐 필요한 모든 단계들을 수행할 수 있도록 지원해야 합니다.
Oracle은 다양한 서비스 및 도구를 통해 빅 데이터 기능을 제공하므로, 각 사용자는 보유한 기술 및 선호도에 기반한 빅 데이터 여정을 시작할 수 있습니다. 컨버지드 Oracle 데이터베이스를 사용하면 다양한 데이터들을 저장하고, 수PB 단위의 볼륨으로 확장하고, 데이터 및 이벤트를 신속하게 수집하고(Transactional Event Queues 활용), 내장된 보안 기능으로 모든 데이터를 보호할 수 있습니다. 컨버지드 데이터 아키텍처는 Oracle Autonomous Database의 컨버지드 데이터베이스 플랫폼을 활용하여 데이터의 볼륨, 다양성, 속도, 정확성을 확보합니다.
데이터 과학자 및 머신러닝 엔지니어가 직접 인프라 프로비저닝, 업그레이드, 패치 적용, 보안 관련 작업을 수행하지 않아도 됩니다. 관리 작업 대신 비즈니스에 활용 가능한 모델을 구축, 학습, 배포하는 데 집중할 수 있습니다. 머신러닝 플랫폼은 완전 관리형으로 제공되어야 하고 모델 개발 수명 주기의 모든 단계를 지원해야 합니다(개발, 학습, 배포, 모니터링). 머신러닝에 사용되는 데이터는 출처로부터의 영향을 받지 않아야 하고, 데이터 과학자의 모델 구축, 학습, 배포 과정 전반에 걸쳐 그 일관성 및 신뢰성을 유지해야 합니다.
대부분의 최신 머신러닝 툴킷은 오픈 소스 기반이며 Python으로 작성됩니다. 따라서 머신러닝 플랫폼은 오픈 소스 프레임워크 및 Python을 기본적으로 지원해야 합니다. 또한 자체 라이브러리를 설치하거나, 이미 설치된 라이브러리를 업그레이드하여 머신러닝 환경을 커스터마이징할 수 있는 기능 또한 갖추어야 합니다. 머신러닝 플랫폼은 데이터 과학자가 다수의 컴퓨팅 리소스를 활용하여 추출, 변환, 로드(ETL) 프로세스 또는 모델 학습 단계를 수직 또는 수평적으로 확장하고, 구조적, 비구조적 또는 반구조적 데이터로 모델을 학습시킬 수 있도록 지원해야 합니다.
마지막으로, 머신러닝 플랫폼은 머신러닝 모델의 실시간 활용을 위한 배포 과정에서의 마찰을 최소화함으로써 간단한 배포를 보장하고(간단한 REST 호출 방식이 이상적), 배포된 모델 내역을 보존하여 감사 및 재현할 수 있도록 해야 합니다.
빅 데이터 및 분석 패턴을 구현하기 위해서는 다음과 같은 모던 앱 개발용 설계 원칙을 적용해야 합니다.
데이터의 가치는 그 사용자의 데이터 활용 능력과 비례합니다. 현재 오픈 소스 커뮤니티에서 널리 사용되는 다양한 빅 데이터 도구들이 있으며, 최신 데이터베이스들 또한 그와 거의 동일한 기능을 제공합니다. 개중에서도 특히 데이터 웨어하우징, 분석, AI/ML 모델 학습 및 배포와 관련된 유사한 기능들을 제공하고 있습니다. 컨버지드 Oracle Database는 그러한 빅데이터 플랫폼 중 하나입니다.
Oracle Autonomous Data Warehouse 외부 테이블 및 SQL과 같은 Oracle만의 강력한 기능들을 통해 Oracle 데이터베이스 및 OCI 객체 저장소 기반 데이터 레이크하우스를 사용하여 페타바이트 단위의 데이터를 실시간으로 저장 및 분석할 수 있습니다.
DataOps는 빅 데이터 파이프라인으로부터 최대한의 가치를 창출함에 있어 중요한 역할을 합니다. Oracle Cloud Infrastructure Data Integration 서비스를 사용하여 데이터를 수집하고, ETL 프로세싱 및 ELT 푸시다운을 구현하고, 다수의 작업들을 일정한 순서로 또는 동시에 프로세싱하기 위한 파이프라인을 생성할 수 있습니다. 해당 파이프라인에는 Oracle Cloud 내외부의 널리 사용되고 다양한 데이터 출처들이 포함될 수 있습니다. Data Integration의 스케줄링 기능을 사용하여 각 작업을 실행할 시기 및 빈도를 정의합니다. Oracle Database Cloud Service Management를 사용하여 일정에 따라 특정 데이터베이스 집합을 대상으로 실행하는 데이터베이스 작업을 정의합니다. 앱 개발자용 CI/CD 파이프라인 및 통합 관측 가능성 기능을 통해 자동화 과정을 개선합니다.
비즈니스 가치 극대화를 위해 데이터 통합 과정을 단순화, 자동화, 가속화해 주는 최고의 도구를 사용합니다. 데이터 웨어하우스, 부서별 데이터 마트, 구조화된 데이터로 구성된 계층 제공 및 프리젠테이션 등을 위해서는 해당 시나리오들에 최적화된 Autonomous Database를 사용합니다. Autonomous Data Warehouse 기능은 Oracle Analytics Cloud와 같은 분석, 비즈니스 인텔리전스, 보고용 도구들에 대한 연결성 또한 갖추고 있습니다.
데이터 보안을 위한 계획을 수립해야 합니다. 데이터 레이크에서 수행되는 모든 데이터 불러오기 및 내보내기 작업을 추적하고, 데이터 계보 메타데이터를 보관하고, 지속적으로 최신 액세스 제어 정책을 적용합니다.
최소 권한의 원칙에 따라 각 사용자 및 서비스 계정에 각자의 작업을 수행하기 위한 필요 최소한의 권한만이 부여되었는지 여부를 확인합니다. Oracle Cloud Infrastructure Identity and Access Management를 활용하여 데이터 플랫폼 구성요소에 접근할 수 있는 사용자 권한을 제어합니다. Oracle Cloud Infrastructure Identity and Access Management의 다중 인증 기능을 사용하여 강력한 관리자용 인증 체계를 구축합니다. Oracle Datasafe의 데이터베이스 보안기능을 통해 모든 데이터, 사용자, 액세스 패턴 관련 보안 상태를 파악할 수 있습니다. 암호 및 인증 토큰과 같은 중요한 정보들을 Oracle Vault 서비스에 저장합니다.
기업 운영을 위해 데이터를 생성하고 모든 유형의 데이터를 저장 및 분석하는, 확장 가능한 컨버지드 데이터베이스(트랜잭션 처리 및 데이터 웨어하우스)를 사용합니다. 본 아키텍처는 데이터 통합 서비스(Oracle GoldenGate) 및 Oracle Transactional Event Queues를 활용하여 다양한 데이터 소스(최종 사용자, 장치, 이벤트, 센서, 애플리케이션 등)의 데이터들을 데이터베이스에 저장합니다. 데이터들은 Oracle Autonomous Database(Oracle Autonomous Transaction Processing 및 Oracle Autonomous Data Warehouse)에 저장되고, 일부 데이터의 경우 외부 테이블에 SQL을 사용하는 빅데이터용 OCI 객체 저장소를 함께 사용합니다. 머신러닝 모델 구축 및 배포에는 Oracle Machine Learning을 사용하고, 데이터를 활용한 인사이트 확보에는 Oracle Analytics Cloud를 사용합니다.
데이터 탐색 및 준비, 머신러닝 모델 구축, 평가, 배포에는 Oracle Autonomous Database에서 구동되는 Oracle Machine Learning(OML Notebooks, OML AutoML UI, OML Services, OML4Py)을 사용합니다.
모델 학습용 데이터가 데이터베이스에 저장되고, 저장된 곳과 가까운 위치에서 해당 데이터를 프로세싱하는 경우 본 아키텍처 패턴의 강력한 기능을 활용할 수 있습니다. 본 패턴은 OML 학습용 데이터 탐색에 활용할 수 있는 다양한 데이터 소스 및 이벤트를 갖추고 있으며, OML의 OML4Py기능을 통해 SQL, Python을 사용하거나, 노 코드 AutoML 기능을 사용하여 모델을 구축, 학습, 배포합니다. OCI Data Science(예: Tensorflow 또는 PyTorch) 및 기타 다른 서비스를 통해 학습시킨 모델을 ONNX 모델 포맷을 활용하여 OML 서비스로 가져옵니다.
본 패턴은 '알고리즘을 데이터로 이동'시키는 접근법을 사용합니다. 모든 데이터는 외부 테이블을 사용하여 소스로부터 액세스 또는 수집되고, ML 모델 학습을 위한 처리를 거쳐 컨버지드 데이터베이스에 저장됩니다. 데이터베이스에서의 모델 학습이 완료되면 SQL 쿼리를 사용하여 직접 배포하거나(PREDICTION 연산자 사용), OML4Py API를 사용하여 배포할 수 있습니다. 외부에서 학습시킨 모델은 OML 서비스를 사용하여 배포할 수 있습니다. 또한 Autonomous Database를 통해 텍스트, 공간, 그래프 분석 머신러닝도 수행 가능합니다.
본 아키텍처는 다음과 같은 구성 요소들을 사용합니다.
다음과 같은 데이터 소스를 지원합니다.
본 아키텍처는 VCN 내에 다음과 같은 구성요소를 갖추고 있습니다.
빅 데이터 및 분석 관련 고려 사항은 다음과 같습니다.
머신러닝 및 인공 지능을 구현하는 경우 다음과 같은 옵션을 고려합니다.
안티패턴
구현 방식을 설계할 때는 다음 사항을 고려합니다.
본 패턴에 설명된 아키텍처의 대안을 고려하고, 안티패턴을 구현하지 않도록 주의합니다.
다음은 Oracle Cloud Infrastructure(OCI) 데이터 및 분석 서비스를 사용하여 빅 데이터를 수집, 저장, 카탈로그화, 준비, 처리, 분석하는 구현 사례입니다.
Oracle Autonomous Data Warehouse를 Oracle Analytics Cloud용 데이터 웨어하우스 또는 데이터 마트로 사용합니다.
Autonomous Data Warehouse에서 데이터를 관리하고, Oracle Analytics Cloud를 사용하여 데이터를 시각화합니다.
관련 리소스들을 자세히 살펴보세요.