Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OCI Functionsについて

OCI Functionsについて

Database Technology Inc.

June 05, 2024
Tweet

More Decks by Database Technology Inc.

Other Decks in Technology

Transcript

  1. © 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. まとめ
  2. © 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
  3. © 2024 Database Technology Inc. All Rights Reserved. 6 2-1:FaaSとは

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

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

    ファンクションの実行 ⚫ ファンクションを呼び出すトリガーが必要(トリガーの説明はp.48~52へ) ⚫ トリガーでファンクションを呼び出し、コードを実行 OCI Functions トリガー コード
  6. © 2024 Database Technology Inc. All Rights Reserved. 9 2-4:FaaSのメリット

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

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

    サーバ管理不要 は魅力的 色々な制約 がある…… コストも安い 別のクラウドへ の移行が厳しい
  9. © 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%のメモリ減少が可能
  10. © 2024 Database Technology Inc. All Rights Reserved. 14 3-2:OCI

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

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

    OCI Functionsの開発環境 について
  14. © 2024 Database Technology Inc. All Rights Reserved. 18 4-1:OCI

    Functionsの開発環境について 開発環境は3種類! ① ローカルホスト ② OCIのコンピュートインスタンス ③ OCIのクラウドシェル(コンソールベースのターミナル)
  15. © 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プロファイル設定
  16. © 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コンテキスト設定 レジストリへの接続
  17. © 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コンテキスト設定 レジストリへの接続
  18. © 2024 Database Technology Inc. All Rights Reserved. 22 4-2:開発環境の違いのまとめ①

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

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

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

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

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

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

    ファンクションはここに表示される (アプリケーション作成時は何もない)
  25. © 2024 Database Technology Inc. All Rights Reserved. 32 7.

    ファンクション作成について
  26. © 2024 Database Technology Inc. All Rights Reserved. 33 Tips:用語解説

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

    作成方法は3種類! ① Fn Project CLI ② コードエディタ(コンソールベースのコード編集ツール) ③ 事前構築済みファンクション 多様な作成方法があるのもOCI Functionsの魅力
  28. © 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リソースを管理したい場合は、コードの編集が必要)
  29. © 2024 Database Technology Inc. All Rights Reserved. 36 7-1-②:コードエディタで作成

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

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

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

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

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

    ファンクションデプロイについて
  35. © 2024 Database Technology Inc. All Rights Reserved. 42 8-1:ファンクションデプロイについて①

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

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

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

    アプリケーションの詳細を開くと、 ファンクションが追加されている
  39. © 2024 Database Technology Inc. All Rights Reserved. 48 9.

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

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

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

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

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

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

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

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