기술 문서

Oracle 및 개발자 커뮤니티에서 친구의 기술 문서입니다.

Topics
                Topics

                서버리스 함수

                소개

                서버리스 기능은 클라우드 컴퓨팅의 발전 과정의 일부로서 인프라 및 리소스 관리의 많은 제약에서 자유 조직이 누릴 수 있도록 지원합니다. 개발자는 기본 플랫폼 관리에 대한 걱정 없이 다양한 트리거에 응답하는 이벤트 기반 애플리케이션의 코드를 작성하는 데 집중할 수 있습니다.

                과거에는 애플리케이션 아키텍처가 단일의 포괄적인 애플리케이션을 형성하는 일체형의 긴밀하게 통합된 시스템이었습니다. 그러나 이러한 시스템은 비용이 많이 들고 유지 관리가 어려워 개발, 재배치 및 재통합에 많은 주기가 소요되었습니다. 기업은 민첩성을 유지하고 고객과 업계의 요구를 적시에 충족시켜야 합니다. 이러한 우려 사항을 해결하기 위해 개발자들은 일체형 애플리케이션 구축에서 컨테이너 및 마이크로서비스 사용으로 점진적으로 전환하고 있습니다. 마이크로 서비스는 단일 애플리케이션을 구성하기 위해 함께 작동하는 코드 블록 제품군을 사용하여 개발 시 격리 및 모듈성을 창출하도록 도입되었습니다.

                그림 1. 물리적, 가상화, 클라우드 컴퓨팅, 컨테이너, 서버리스

                그림 1. 물리적, 가상화, 클라우드 컴퓨팅, 컨테이너, 서버리스

                또한 클라우드 제공업체는 이러한 애플리케이션을 직접 호스팅할 필요 없이 회사를 자유롭게 할 수 있는 방법을 제공했습니다. 이러한 서버리스 아키텍처는 조직에서 자체 물리적 서버 또는 가상 서버를 관리하는 부담과 응용 프로그램을 실행하는 데 필요한 다른 플랫폼 구성 요소를 제거했습니다. 이를 통해 기업은 고객의 요구에 신속하게 대응하고 개발자가 자신의 코드에 집중할 수 있는 수단을 제공했습니다.

                서버리스 기능은 무엇입니까?

                서버리스 기능은 서버리스 컴퓨팅의 고유 기능 중 하나입니다. 이러한 기능은 사전 구성된 이벤트에 의해 트리거될 때와 필요할 때만 실행되는 전용 온디맨드 및 단일 용도 애플리케이션 기능을 제공합니다. 즉, 데이터베이스 서버와 같은 시스템의 상시 운영 제품 모델과 달리 기능 실행 시 사용한 리소스 만큼만 비용을 지불하면 됩니다.

                그림 2. Serverless Functions의 작동 방식

                그림 2. Serverless Functions의 작동 방식

                개발자는 서버리스 응용 프로그램에 대한 코드를 생성합니다. 그러면 서버 미사용 함수 코드가 컨테이너 레지스트리로 푸시됩니다. 이벤트 또는 트리거는 서버 미사용 함수를 호출하는 데 사용됩니다. 함수에 대해 구성된 이벤트가 발생하면 서버 미사용 함수 이미지가 컨테이너로 실행되고 코드가 실행됩니다. 이 함수는 호출될 때만 실행되며 응용 프로그램에서 사용하는 리소스 및 호출 시간에 대해서만 비용을 지불합니다.

                또한 이러한 서버리스 기능은 대개 클라우드 제공업체가 호스팅하기 때문에 배포 또는 확장 관리에 대해 걱정할 필요가 없습니다. 또한 자체 포함되고 유지 관리가 간편한 코드는 제품 출시 시간을 단축할 수 있음을 의미하므로 개발자는 추가 오버헤드 없이도 애플리케이션을 구축하고 유지 관리하는 데 집중할 수 있습니다. 결국, 필요할 때 필요한 리소스에 대해서만 비용을 지불하므로 비용이 크게 절감됩니다.

                서버리스 기능의 활용 사례

                서버리스 기술은 클라우드 컴퓨팅의 다른 기술과 마찬가지로 획일적인 접근 방식이 아닙니다. 사용 방법과 조직에 적합한지 여부를 항상 고려해야 합니다.

                일반적으로 다음 중 하나로 작업 로드를 설명할 수 있는 경우 서버리스 접근 방식을 사용할 수 있습니다.

                • 비동기식 및 동시 작업을 위한 간편한 모듈화
                • 리소스 및 인프라에 대한 확장 요구사항의 잠재적인 불확실성을 지닌 온디맨드 활용도
                • Stateless, 임시 레벨 및 즉시 시작 시간이 필요하지 않습니다.
                • 빠른 개발 및 배포 주기가 필요한 비즈니스 요구사항

                특히 Cloud Native Computing Foundation(CNCF) 백서에 따르면 서버를 사용하지 않는 주요 사용 사례는 다음과 같습니다.

                1. 멀티미디어 처리: 파일에서 작동하는 함수
                  자주 실행되지 않고 요구에 따라 확장할 수 있는 별도의 병렬화 가능한 작업입니다.

                  예:

                  • 사용자가 파일을 업로드하면 다른 장치에 대한 비디오 트랜스코딩 또는 이미지 크기 조정과 같이 해당 업로드에 대한 응답으로 원하는 프로세스를 실행할 수 있습니다.
                  • 응용 프로그램은 이미지를 입력으로 받아들이고 문서 확인, 이미지로 검색 또는 지불 방법과 같은 이미지 인식을 구현합니다.
                2. 데이터베이스 변경 또는 데이터 변경 캡처: 데이터베이스에서 데이터를 삽입, 수정 또는 삭제할 때 호출되는 함수입니다.

                  빈도 및 복잡성에 따라 달라질 수 있는 태스크입니다.

                  여기서는 이러한 함수가 기존 SQL 트리거와 같은 방식으로 수행될 수 있습니다. 단, 외부 서비스 호출(예: 전자 메일 보내기) 또는 추가 데이터베이스 갱신과 같은 데이터베이스 자체 외부의 다양한 병렬 기능을 수행할 수도 있습니다.


                  예:

                  • 제안된 데이터베이스 변경 사항이 수용 가능한 품질 임계값 또는 기타 요구 사항을 충족하는지 확인합니다.
                  • 수신된 데이터를 다른 언어로 자동 변환합니다.
                3. IoT 센서 입력 메시지: 네트워크 연결 장치의 메시지에 응답하는 함수입니다.

                  갑작스럽고 급격한 로드 증가로부터 다운스트림 서비스를 보호할 수 있는 확장 가능한 작업


                  예:

                  • 보고 장치에서 MQTT(MQ Telemetry Transport) 메시지를 효율적으로 필터링, 관리 및 관리하고 이에 대응하여 확장합니다.
                4. 대규모 스트림 처리: 잠재적으로 제한되지 않은 메시지 스트림 내에서 데이터를 처리하는 함수

                  고성능, 확장성 및 계산 집중 처리가 필요하지만 비트랜잭션, 비요청/응답 작업 로드의 일부인 작업입니다.

                  여기서 함수는 이벤트 스트림에서 메시지를 읽고 처리합니다. 대부분의 경우 e.g, NoSQL 또는 in-mem DB의 컨텍스트 객체 집합과 데이터를 비교하거나 객체 또는 데이터베이스 시스템에 집계 및 저장해야 합니다.


                  예:

                5. 챗봇: 최대 수요에 맞게 자동으로 확장하면서 고객 참여 및 쿼리 응답을 제공하는 기능

                  0이 아닌 콜드 스타트업 시간으로 인해 겪지 않는 확장 가능한 작업.

                  일반적으로 사람들은 대화에 참여할 때 약간의 지연을 예상하므로 처리 시간 또는 서비스 시작으로 인한 일부 대기 시간은 고객 인식에 부정적인 영향을 주지 않습니다.


                  예:

                  • 조직 서비스에 연결된 지원 및 영업 봇은 제품 쿼리, 지원 요청 또는 기타 서비스 관련 기능에 대한 상황 인식 응답을 제공할 수 있습니다.
                6. 일정이 잡힌 일괄 처리 작업/일정이 잡힌 작업: 한 번에 짧은 기간 동안만 강렬한 병렬 계산, IO 또는 네트워크 액세스가 필요한 확장 가능한 작업

                  예:

                  • 야간 백업 작업(e.g., cron 작업)과 같은 예약된 작업입니다.
                  • 대량의 전자메일을 병렬로 전송하는 작업입니다.
                7. HTTP REST API 및 웹 앱: 기존 요청 및 응답 워크로드를 수행하는 기능

                  예:

                  • 개별 REST 호출(GET, POST, UPDATE 및 DELETE)을 제공하는 애플리케이션은 공통 데이터 백엔드를 공유하더라도 개별적으로 확장되고 요금이 청구될 수 있습니다.
                  • 이벤트 기반 샌드박스 환경에서 연습 코드를 실행하고 예상 결과 집합과 비교하여 사용자 피드백을 제공하는 온라인 교육 서비스(자습서, 테스트, 교육 등)입니다. 사이트에 액세스하는 각 사용자에 대해 인스턴스를 만들 수 있으므로 액세스에 대해 개별적으로 시스템을 확장하고 요금을 부과할 수 있습니다.
                8. 모바일 백엔드: Banking as a Service(BaaS) API 위에 REST API 백엔드 워크로드를 구축하는 기능입니다.

                  시장 출시 시간이 중요한 경우 주문형 서비스 및/또는 신속한 개발 주기를 제공하는 확장 가능한 작업입니다.

                  이 사용 사례는 서버 미사용 기능의 핵심 이점에 대해 클라우드 제공자가 백엔드 작업을 관리할 수 있도록 하는 동시에 개발자는 고객 및 조직 모두에 필요한 서비스를 제공하는 데 집중할 수 있습니다.


                  예:

                  • 성능을 최적화하고 경기가 나선 적중이 될 때 인프라 확장/프로비저닝에 투자할 걱정이 없습니다.
                  • 제품/시장 적합성을 찾기 위해 또는 시장 출시 시간이 중요한 경우 빠른 반복이 필요한 소비자 비즈니스 애플리케이션
                  • 구매 또는 마이크로 트랜잭션과 같이 BaaS에 대한 이벤트 기반 액세스를 사용하는 모바일 앱입니다.
                  • 날짜와 시간에 따라 사용량이 크게 달라질 수 있는 대규모 회의용 스케줄링 앱과 같은 "Throwaway" 또는 단기 사용 모바일 응용 프로그램.
                9. 비즈니스 논리: 비즈니스 프로세스에서 일련의 단계를 실행하는 마이크로 서비스 작업 로드를 조정하는 함수입니다.

                  예:

                  • 주식 시장 거래를 처리하고 클라이언트 또는 사전 구성된 알림/트리거를 기반으로 거래 주문 및 확인을 처리하는 거래 데스크입니다.
                  • 클라이언트 포털의 이벤트 요청은 조정 기능으로 관리되며 적절한 서버 미사용 기능으로 전달됩니다.
                10. CI(지속적 통합) 파이프라인: 미리 프로비저닝된 호스트의 필요성을 제거하는 기능을 제공하는 함수입니다.

                  예:

                  • 코드 커밋 또는 병합된 PR로 트리거된 빌드 작업입니다. 이 인스턴스에 대해 특별히 빌드 및 배치를 실행하기 위해 함수 호출이 호출됩니다.

                Functions as a Service(FaaS)

                Functions as a Service(FaaS)는 고객이 서버 미사용 기능을 신속하게 구축 및 배포할 수 있는 클라우드 서비스 플랫폼입니다. FaaS를 사용하면 개발자가 이미지 업로드 또는 인앱 이벤트와 같은 개별 이벤트에 응답하여 실행되는 자체 포함 함수로 코드를 작성할 수 있습니다. FaaS 모델의 장점과 유틸리티는 이러한 기본 기능이 임시 이벤트로 트리거되고, 필요에 따라 자연스럽게 확장되며, 동시에 필요한 만큼의 리소스만 사용되므로 상당한 비용 절감 효과를 제공합니다. FaaS 플랫폼은 대부분의 클라우드 제공업체가 제공하므로 개발자들이 복잡성을 줄이고 개발 속도를 높이기 위해 도입되고 있습니다. Oracle Functions, AWS Lambda 및 Microsoft Azure Functions는 개발자가 서버 미사용 기능을 구축하는 데 일반적으로 사용하는 FaaS 오퍼링 중 일부입니다.

                개발자 기능

                • 개발자가 인프라를 관리할 필요가 없음
                • 신규 및 숙련된 개발자를 위한 생산성 향상
                • 다양한 프로그래밍 언어 지원
                • 개방형 표준(Fn Project, OpenWhisk, Docker, CloudEvents)을 기반으로 합니다.

                Oracle Functions

                Oracle은 Oracle Cloud Infrastructure(OCI), Oracle Functions 서비스를 통해 손쉽게 서버 미사용 애플리케이션을 개발 및 배포할 수 있는 강력한 플랫폼을 제공합니다. Oracle Functions는 완전 관리형 다중 테넌트이며 확장성이 뛰어나며 온디맨드 방식 FaaS 플랫폼입니다. 즉, 필요할 때 필요한 서비스와 리소스를 얻을 수 있습니다.

                핵심 기능인 Oracle Functions는 기업급 Oracle Cloud Infrastructure를 기반으로 구축되어 Fn Project, Docker 및 CloudEvents를 기반으로 합니다. Fn Project는 Apache 2.0 라이센스가 부여된 오픈 소스 엔진입니다. Fn Project는 매우 유연합니다. 컨테이너 전용 서버리스 플랫폼으로 클라우드와 온프레미스 중 어디에서나 실행할 수 있습니다. Fn Project를 사용하면 로컬에서 함수를 개발하고 테스트한 다음 준비가 되었을 때 직접 Oracle Functions에 배치할 수 있습니다.

                Oracle Functions의 이점

                Oracle Functions에서 사용하는 아키텍처는 서버리스 및 확장성이 모두므로 걱정할 필요가 없는 인프라 또는 소프트웨어 관리가 있다는 것을 의미합니다. Oracle Functions는 단순히 앱이 고가용성과 확장성, 보안 및 모니터링이 가능하도록 보장하여 최상의 경험을 제공하는 데 집중할 수 있습니다. 또한 Oracle Functions를 통해 거의 모든 언어(Java, Python, Node, Go, Ruby 또는 C#)로 개발할 수 있어 애플리케이션에 가장 적합한 언어를 선택할 수 있습니다. 고급 사용 사례의 경우 자신의 Dockerfile을 가져올 수도 있습니다. 그리고 케이크에 대한 발행은 코드를 배포한 후 직접 호출하거나 특정 이벤트에 대한 응답으로 트리거하면 실행 시 사용하는 리소스에 대해서만 비용이 청구됩니다.

                Oracle Functions의 이러한 모든 기능을 통해 고객과 개발자 모두의 경험을 향상시킬 수 있는 이상적인 방법이 될 수 있습니다. 새 코드 배포를 보다 빠르고 쉽게 자동화할 수 있을 뿐만 아니라 배포 중 다운타임 가능성을 크게 줄이고 서비스를 사용자 요구에 맞게 즉시 적용할 수 있습니다.

                Oracle Functions 시작하기

                첫 번째 기능 개발은 그 어느 때보다 쉬워졌습니다. 오라클은 시작하는 데 필요한 여러 툴 경로를 제공합니다. 콘솔, CLI 또는 REST API를 통해 Oracle Functions에 액세스할 수 있습니다. 또한 CLI를 사용하거나 서명된 HTTP 요청을 작성하여 배치한 기능에 액세스할 수 있습니다.

                보안이 그 어느 때보다 중요해지고 Oracle Functions가 OCI ID 및 접근 관리(IAM)와 통합되어 기본 Oracle Cloud Infrastructure ID 기능을 통해 간편하게 인증할 수 있음을 알게 되었습니다.

                Oracle Functions를 신속하게 시작하고 실행하려면 함수 QuickStart 설명서 및 아래 나열된 리소스를 참조하십시오.

                리소스

                Latest content

                Explore and discover our latest tutorials

                서버리스 함수

                서버 미사용 기능은 인프라 및 리소스 관리에 대한 많은 제약 조건에서 조직을 해방시키는 데 도움이 된 클라우드 컴퓨팅의 발전의 일부입니다.

                블록체인이란 무엇입니까?

                일반적으로 블록체인은 노드 분산 피어 투 피어(p2p) 네트워크 내에서 유지 관리되는 변경 불가능한 트랜잭션 원장입니다. 본질적으로 블록체인은 정보를 저장하는 분산된 방식으로 사용됩니다.

                OCI CLI

                CLI는 Oracle Cloud Infrastructure 작업을 완료하기 위해 자체적으로 또는 콘솔에서 사용할 수 있는 작은 점유 공간 툴입니다. CLI는 콘솔과 동일한 핵심 기능과 추가 명령을 제공합니다.