Slide 1

Slide 1 text

© 2024 Database Technology Inc. All Rights Reserved. 株式会社データベーステクノロジ OCI Functionsについて 2024年6月5日 (水) 下山 星夜

Slide 2

Slide 2 text

© 2024 Database Technology Inc. All Rights Reserved. 2 Agenda 1. OCI Functionsとは 2. FaaSとは 3. OCI Functionsの特徴について 4. OCI Functionsの開発環境について 5. ファンクションを呼び出すまでの流れ 6. アプリケーション作成について 7. ファンクション作成について 8. ファンクションデプロイについて 9. ファンクション呼び出しについて 10. まとめ

Slide 3

Slide 3 text

© 2024 Database Technology Inc. All Rights Reserved. 3 1. OCI Functionsとは

Slide 4

Slide 4 text

© 2024 Database Technology Inc. All Rights Reserved. 4 1-1:OCI Functionsとは OCI Functionsの概要 ⚫ FaaSのプラットフォーム(FaaSの説明はp.6へ) 有名なFaaSプラットフォームだと、AWS Lambda(2014/11リリース)がある 因みにOCI Functionsは2019/7リリース ⚫ 何が出来るか? ⚫ ファンクションの作成・管理(ファンクションの説明はp.7~8へ) ファンクションにより、低コストでOCIリソースの管理(自動化も可能) OCI Functions

Slide 5

Slide 5 text

© 2024 Database Technology Inc. All Rights Reserved. 5 2. FaaSとは

Slide 6

Slide 6 text

© 2024 Database Technology Inc. All Rights Reserved. 6 2-1:FaaSとは FaaS(Function as a Service) ⚫ ファンクションをサービスとして利用 ⚫ FaaSはサーバーレスコンピューティングの一種 ⚫ サーバを使わないコンピューティングではなく、ユーザがサーバを管理する必要がないということ ⚫ クラウドサービスプロバイダ(オラクル社やAWS社など)がサーバを用意・管理する ⚫ OSのアップグレードやパッチ適用も、クラウドサービスプロバイダが行う サーバーレスコンピューティング =ユーザによるサーバの管理が不要

Slide 7

Slide 7 text

© 2024 Database Technology Inc. All Rights Reserved. 7 2-2:ファンクションとは ファンクション ⚫ コード実行部分 ⚫ 小規模のコードブロック(通常は1つの単純な処理を実行) ⚫ PaaS(Platform as a Service)と違い、OSは常時稼働していない ⚫ FaaSの場合は、OSの起動・停止をユーザが行う必要はない(サーバーレスなので) ・ファンクションが実行される時だけ、OSが起動する ・ファンクションが終了すると、OSはまた停止する FaaSの利点

Slide 8

Slide 8 text

© 2024 Database Technology Inc. All Rights Reserved. 8 2-3:ファンクションはどうやって実行する? ファンクションの実行 ⚫ ファンクションを呼び出すトリガーが必要(トリガーの説明はp.48~52へ) ⚫ トリガーでファンクションを呼び出し、コードを実行 OCI Functions トリガー コード

Slide 9

Slide 9 text

© 2024 Database Technology Inc. All Rights Reserved. 9 2-4:FaaSのメリット コストが削減できる ⚫ ファンクションが呼び出された時だけOSが稼働する ⚫ リクエスト数やファンクションの実行時間で課金される サーバ管理が不要 ⚫ ユーザはサーバ管理を気にする必要がない ⚫ オートスケーリング (自動でサーバを増やしたり減らしたりしてくれる)

Slide 10

Slide 10 text

© 2024 Database Technology Inc. All Rights Reserved. 10 2-5:FaaSのデメリット 導入のハードルが高い ⚫ クラウドサービスプロバイダ依存によるベンダーロックイン (設定の違いなどにより、別のクラウドサービスプロバイダへの変更が大変) ⚫ クラウド内で複数のサービスの連携が必要 (ファンクションを呼び出すために、クラウドサービス内の他のサービスを利用する場合もある) 様々な制約あり ⚫ どのランタイム言語がサポートされているか(ランタイム言語の説明はp.15へ) ⚫ コールドスタートによる初期プロビジョニング遅延 (ファンクション呼び出し後にOSが起動するので、すぐにコードが実行される訳ではない)

Slide 11

Slide 11 text

© 2024 Database Technology Inc. All Rights Reserved. 11 2-6:FaaSは便利だが大変 サーバ管理不要 は魅力的 色々な制約 がある…… コストも安い 別のクラウドへ の移行が厳しい

Slide 12

Slide 12 text

© 2024 Database Technology Inc. All Rights Reserved. 12 3. OCI Functionsの特徴について

Slide 13

Slide 13 text

© 2024 Database Technology Inc. All Rights Reserved. 13 3-1:OCI Functionsの特徴について① ベンダーロックイン対策 ⚫ プラットフォームをFn Projectとする ⚫ FaaSを構築するためのオープンソースなプラットフォーム(リンクは以下のURLから) https://fnproject.io/ ⚫ Fn Projectはオープンソースなので、様々な環境で稼働する可能性が高い コールドスタート対策 ⚫ 初期プロビジョニングを同時に実行する “ホットスタート” が利用可能 ただし、同時実行はその分お金がかかる ⚫ Oracle Cloud World 2023でGraalOSの計画が発表された(リリース待ち) 数秒で起動、従来に比べて最大50%のメモリ減少が可能

Slide 14

Slide 14 text

© 2024 Database Technology Inc. All Rights Reserved. 14 3-2:OCI Functionsの特徴について② パラメータの制限 ⚫ ファンクションのメモリしきい値:128MB、256MB、512MB、1024MB、2048MB ⚫ ファンクションのタイムアウト:5秒 ~ 300秒 ⚫ リクエストペイロード(ファンクションへの送信)とレスポンスペイロード(ファンク ションからの応答)のデータ量は最大6MB ファンクションは大規模コードを書くものではない

Slide 15

Slide 15 text

© 2024 Database Technology Inc. All Rights Reserved. 15 3-3:OCI Functionsの特徴について③ 他のOCIリソースを管理することが可能 ⚫ OCIリソース管理の自動化も可能 毎月の無料枠が豊富 ⚫ 毎月、200万回の呼び出し、40万GB*秒の実行時間まで無料 ⚫ 40万GB*秒は、ファンクションのメモリと実行時間の掛け算となる ⚫ 例)128 MBで実行に3秒かかるファンクションの場合:約100万回の呼び出しまで無料 豊富なランタイム言語のサポート ⚫ Fn ProjectのFDK(Function Development Kit)を使用し、go、java、node、python、ruby、kotlinおよび dotnet (C#)をサポート ⚫ 独自のDockerfile(Dockerイメージ作成時の設定ファイル)を使用する事も可能 (Dockerイメージの説明はp.33で)

Slide 16

Slide 16 text

© 2024 Database Technology Inc. All Rights Reserved. 16 3-4:OCI Functionsの特徴について④ 作成できるリソースの数の制限 ⚫ リージョン単位で、作成出来るリソースの数に制限がある ⚫ ただし上限引き上げのリクエストを行なうことも可能 足りないなら上限 引き上げを! リソース スコープ ユニバーサルクレジット Pay As You Go またはトライアル アプリケーション リージョン単位 20個まで作成可能 10個まで作成可能 ファンクション リージョン単位 500個まで作成可能 50個まで作成可能 アプリケーションの 説明はp.26~31へ

Slide 17

Slide 17 text

© 2024 Database Technology Inc. All Rights Reserved. 17 4. OCI Functionsの開発環境 について

Slide 18

Slide 18 text

© 2024 Database Technology Inc. All Rights Reserved. 18 4-1:OCI Functionsの開発環境について 開発環境は3種類! ① ローカルホスト ② OCIのコンピュートインスタンス ③ OCIのクラウドシェル(コンソールベースのターミナル)

Slide 19

Slide 19 text

© 2024 Database Technology Inc. All Rights Reserved. 19 4-1-①:ローカルホストで開発 OCI Region:ap-tokyo-1 Availability Domain 1 Subnet A 10.1.0.0/27 OCI Functions VCN IAM Oracle Services Network Service Gateway On-Premises Container Registry OCI Functions Dockerやレジストリ の説明はp.33で Dockerインストール、起動 Fn Project CLI インストール Fn Project CLIコンテキスト設定 レジストリへの接続 APIキー、OCIプロファイル設定

Slide 20

Slide 20 text

© 2024 Database Technology Inc. All Rights Reserved. 20 4-1-②:OCIのコンピュートインスタンスで開発 OCI Region:ap-tokyo-1 Availability Domain 1 Subnet A 10.1.0.0/27 OCI Functions Compute Instance VCN Oracle Services Network Service Gateway Container Registry IAM OCI Functions Virtual Machine Dockerインストール、起動 Fn Project CLI インストール Fn Project CLIコンテキスト設定 レジストリへの接続

Slide 21

Slide 21 text

© 2024 Database Technology Inc. All Rights Reserved. 21 4-1-③:OCIのクラウドシェルで開発 OCI Region:ap-tokyo-1 Availability Domain 1 Subnet A 10.1.0.0/27 OCI Functions VCN Oracle Services Network Service Gateway Container Registry IAM OCI Functions Cloud Shell Fn Project CLIコンテキスト設定 レジストリへの接続

Slide 22

Slide 22 text

© 2024 Database Technology Inc. All Rights Reserved. 22 4-2:開発環境の違いのまとめ① ①ローカルホスト ②OCIのコンピュート インスタンス ③OCIのクラウド シェル Dockerインストール、起動 必要 必要 不要 Fn Project CLIインストール 必要 必要 不要 Fn Project CLIコンテキスト設定 必要 必要 必要 レジストリへの接続 必要 必要 必要 APIキー、OCIプロファイル設定 必要 不要 不要

Slide 23

Slide 23 text

© 2024 Database Technology Inc. All Rights Reserved. 23 4-3:開発環境の違いのまとめ② ① ローカルホスト ⚫ 手元の環境で開発できる ⚫ 必要な設定が多い ② OCIのコンピュートインスタンス ⚫ ファンクション開発中はコンピュートインスタンスを稼働 ⚫ コンピュートインスタンスの追加コストがかかる ③ OCIのクラウドシェル(コンソールベースのターミナル) ⚫ ストレージは5GB ⚫ 半年アクセスがないと更に2か月後にストレージが削除されてしまう

Slide 24

Slide 24 text

© 2024 Database Technology Inc. All Rights Reserved. 24 5. ファンクションを呼び出す までの流れ

Slide 25

Slide 25 text

© 2024 Database Technology Inc. All Rights Reserved. 25 5-1:ファンクションを呼び出すまでの流れ ① アプリケーション作成 ② ファンクション作成 ③ ファンクションデプロイ ④ ファンクション呼び出し この流れはどの開発環境でも変わらない

Slide 26

Slide 26 text

© 2024 Database Technology Inc. All Rights Reserved. 26 6. アプリケーション作成について

Slide 27

Slide 27 text

© 2024 Database Technology Inc. All Rights Reserved. 27 6-1:アプリケーション作成について アプリケーションとは? ⚫ OCI Functionsにおける、ファンクションの論理グループ ⚫ ファンクション作成の前にアプリケーションの作成が必要 ⚫ アプリケーション単位でシェイプを決定(x86・Arm) ⚫ OCIコンソール画面で簡単に作成可能!

Slide 28

Slide 28 text

© 2024 Database Technology Inc. All Rights Reserved. 28 6-2:アプリケーションの作成① アプリケーションを選択

Slide 29

Slide 29 text

© 2024 Database Technology Inc. All Rights Reserved. 29 6-3:アプリケーションの作成② アプリケーションの作成を選択

Slide 30

Slide 30 text

© 2024 Database Technology Inc. All Rights Reserved. 30 6-4:アプリケーションの作成③ シェイプを決定

Slide 31

Slide 31 text

© 2024 Database Technology Inc. All Rights Reserved. 31 6-5:アプリケーションの作成④ ファンクションはここに表示される (アプリケーション作成時は何もない)

Slide 32

Slide 32 text

© 2024 Database Technology Inc. All Rights Reserved. 32 7. ファンクション作成について

Slide 33

Slide 33 text

© 2024 Database Technology Inc. All Rights Reserved. 33 Tips:用語解説 Docker ⚫ コンテナの作成や実行のためのプラットフォーム コンテナ ⚫ 仮想マシンと同じく、仮想化技術 ⚫ 仮想化により、1つのサーバ上で複数のサーバ環境を実行 ⚫ 仮想マシンは複数の異なるOSを実行出来るが、コンテナのOSは元OSに依存 ⚫ コンテナイメージ(アプリケーションファイルやライブラリ)からコンテナ作成 レジストリ ⚫ コンテナイメージの格納場所で、リポジトリ毎に分けられる ⚫ リポジトリは、名前は同じでタグが違うコンテナイメージ(バージョン1、2、3など)

Slide 34

Slide 34 text

© 2024 Database Technology Inc. All Rights Reserved. 34 7-1:ファンクション作成について 作成方法は3種類! ① Fn Project CLI ② コードエディタ(コンソールベースのコード編集ツール) ③ 事前構築済みファンクション 多様な作成方法があるのもOCI Functionsの魅力

Slide 35

Slide 35 text

© 2024 Database Technology Inc. All Rights Reserved. 35 7-1-①:Fn Project CLIで作成 インストールされたFn Project CLIを使用 ⚫ 以下の開発環境で作成可能 ⚫ ローカルホスト ⚫ OCIのコンピュートインスタンス ⚫ OCIのクラウドシェル ⚫ コマンドを実行して作成 ⚫ fn init --runtime <ランタイム言語> <ファンクション名> ⚫ FDKによるランタイム言語のサポート ⚫ 『Hello World!』を返す基礎的なファンクションが作成される (OCIリソースを管理したい場合は、コードの編集が必要)

Slide 36

Slide 36 text

© 2024 Database Technology Inc. All Rights Reserved. 36 7-1-②:コードエディタで作成 OCIのコードエディタを使用 ⚫ コンソールベースのコード編集ツール ⚫ ターミナルウィンドウもついており、コマンド実行可能 ⚫ リモートGitリポジトリ(GitHubなど)が必要 ローカルGitリポジトリにコミットしてから、リモートGitリポジトリにプッシュ ⚫ 作成方法は3種類! A) テンプレート B) サンプル C) コードリポジトリ Code Editor

Slide 37

Slide 37 text

© 2024 Database Technology Inc. All Rights Reserved. 37 コードエディタ上で作成 ⚫ Go、java、node、python、ruby、kotlinからランタイム言語を選択 ⚫ 『Hello World!』を返す基礎的なファンクションが作成される (OCIリソースを管理したい場合は、コードの編集が必要) 7-1-②-A:テンプレートの使用

Slide 38

Slide 38 text

© 2024 Database Technology Inc. All Rights Reserved. 38 コードエディタ上で作成 ⚫ Oracleで用意されているサンプルファンクションから選択(一覧は以下のURLから) ⚫ https://github.com/oracle-samples/oracle-functions-samples ⚫ サンプルなのでコードは書かれているが、状況に合わせてコードの編集も可能 7-1-②-B:サンプルの使用

Slide 39

Slide 39 text

© 2024 Database Technology Inc. All Rights Reserved. 39 コードエディタ上で作成 ⚫ URLや個人アクセストークンを入力して、リモートGitリポジトリに接続 ⚫ リモートGitリポジトリにあるファンクションコードに基づいて、ファンクション作成 ⚫ 予めリモートGitリポジトリに、ファンクションコードを置いておく必要がある 7-1-②-C:コードリポジトリの使用

Slide 40

Slide 40 text

© 2024 Database Technology Inc. All Rights Reserved. 40 7-1-③:事前構築済みファンクションで作成 Oracleによって予め構築されたファンクションを使用 ⚫ 構築済みなので開発環境はない(当然コードの編集も出来ない) ⚫ OCIコンソール画面で作成しそのまま使用可能だが、使用用途は限られる

Slide 41

Slide 41 text

© 2024 Database Technology Inc. All Rights Reserved. 41 8. ファンクションデプロイについて

Slide 42

Slide 42 text

© 2024 Database Technology Inc. All Rights Reserved. 42 8-1:ファンクションデプロイについて① ⚫ 作成したファンクションを呼び出せるように、適切な場所へ配置 ⚫ Dockerレジストリへのプッシュ ⚫ ファンクションはDockerイメージとしてDockerレジストリにプッシュ 基本的にはOCIレジストリを利用 (使用したイメージがオブジェクトストレージレートで課金されるが、毎月10 GBまでは無料) ⚫ ファンクションのコードを変更した際もプッシュが必要 ⚫ OCI Functionsへのデプロイ ⚫ Dockerレジストリへのプッシュ後に、OCI Functionsへのデプロイも必要 ⚫ ファンクションのコードを変更した際もデプロイが必要

Slide 43

Slide 43 text

© 2024 Database Technology Inc. All Rights Reserved. 43 8-2:ファンクションデプロイについて② ⚫ インストールされたFn Project CLIを使用 ⚫ 以下の開発環境でデプロイ可能 ⚫ ローカルホスト ⚫ OCIのコンピュートインスタンス ⚫ OCIのクラウドシェル ⚫ コマンドを実行してデプロイ ⚫ fn -v deploy --app<アプリケーション名> ⚫ 上記コマンドで、デプロイ前のOCIレジストリへのプッシュも行ってくれる ⚫ 指定したアプリケーションにデプロイ

Slide 44

Slide 44 text

© 2024 Database Technology Inc. All Rights Reserved. 44 8-3:ファンクションデプロイの流れ ファンク ション ①ファンクションをDocker レジストリにプッシュして、 Dockerイメージとして保存 Docker レジストリ アプリケー ション ②ファンクションをOCI Functionsにデプロイして、 アプリケーション毎に管理 プッシュの方を 先に行う

Slide 45

Slide 45 text

© 2024 Database Technology Inc. All Rights Reserved. 45 8-4:レジストリとリポジトリを確認① コンテナレジストリを選択

Slide 46

Slide 46 text

© 2024 Database Technology Inc. All Rights Reserved. 46 8-5:レジストリとリポジトリを確認② リポジトリ毎にDockerイメージが管理されている

Slide 47

Slide 47 text

© 2024 Database Technology Inc. All Rights Reserved. 47 8-6:アプリケーションを確認 アプリケーションの詳細を開くと、 ファンクションが追加されている

Slide 48

Slide 48 text

© 2024 Database Technology Inc. All Rights Reserved. 48 9. ファンクション呼び出しについて

Slide 49

Slide 49 text

© 2024 Database Technology Inc. All Rights Reserved. 49 9-1:ファンクション呼び出しについて トリガーによって呼び出される 1. 直接呼び出し 2. OCIサービスからの呼び出し ファンクションが呼び出されると、Dockerイメージからコンテナが作られる ⚫ コンテナの稼働時間は、ファンクションで設定したタイムアウトに依る ⚫ コストを最小に抑えるために、必要な時間に近いタイムアウトの設定を

Slide 50

Slide 50 text

© 2024 Database Technology Inc. All Rights Reserved. 50 9-2:ファンクションの直接呼び出しの一例 ファンクションのエンドポイント を使ってコマンド実行 (他にも直接呼び出し方法はある)

Slide 51

Slide 51 text

© 2024 Database Technology Inc. All Rights Reserved. 51 9-3:ファンクションのOCIサービスからの呼び出しの一例 イベントサービスのアクションの利用 (他にもOCIサービスからの呼び出し方法はある)

Slide 52

Slide 52 text

© 2024 Database Technology Inc. All Rights Reserved. 52 9-4:ファンクションの呼び出しの流れ トリガー ファンク ション コード ファンクション 呼び出しにより、 Dockerレジスト リからDockerイ メージをプル コード 実行 Docker レジストリ Dockerイメージから OS作成 (Dockerコンテナ) OS ファンクション実行

Slide 53

Slide 53 text

© 2024 Database Technology Inc. All Rights Reserved. 53 10. まとめ

Slide 54

Slide 54 text

© 2024 Database Technology Inc. All Rights Reserved. 54 10-1:ファンクションの使用例 OCIサービスからの呼び出しにより、状況に合わせて自動でOCIリソース管理! 自動OCIリソース管理の例 ⚫ コンピュートインスタンスのヘルスチェックが失敗したら、自動で再起動する ⚫ コンピュートインスタンスやデータベースを、 Cron式で自動で起動・停止する (Always Freeのコンピュートインスタンスを常時稼働してジョブを実行しても良いが、 その場合はサーバの管理が必要) サーバの管理が不要なのはファンクションの強み

Slide 55

Slide 55 text

© 2024 Database Technology Inc. All Rights Reserved. 55 10-2:まとめ OCI Funtionsは慣れれば便利 ⚫ GraalOSの様に、新しい機能が追加される可能性がある ⚫ プラットフォームはオープンソースのFn Project ⚫ 毎月の無料枠も豊富 使いどころを考えて ⚫ 常時稼働するようなアプリケーションには向かない ⚫ コンテナ作成によるコールドスタートがある

Slide 56

Slide 56 text

© 2024 Database Technology Inc. All Rights Reserved. 56 お問い合わせ OCIに関するお困りごとは,ぜひ弊社までご相談ください。 お電話でのお問い合わせ 075-231-6131 受付時間:平日 10:00~17:00 メールでのお問い合わせ inquiry@db-tec.com ※お手数ですが、御社名、ご氏名、 お問い合わせ内容を本文中にご記載ください。 https://www.db-tec.com/ 弊社ホームページからも、お問い合わせを承っております。 Oracleは、オラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。