Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OCI Functionsについて
Search
Database Technology Inc.
June 05, 2024
Technology
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OCI Functionsについて
Database Technology Inc.
June 05, 2024
More Decks by Database Technology Inc.
See All by Database Technology Inc.
【2026年4月~2026年5月】OCI新機能のまとめ
dbtec
0
14
OCI監視機能深掘り 第1回
dbtec
1
56
【2026年2月~2026年3月】OCI新機能のまとめ
dbtec
0
45
【2025年12月~2026年1月】OCI新機能のまとめ
dbtec
0
52
OCI Vaultについて<応用とまとめ>
dbtec
0
42
【2025年10月~11月】OCI新機能のまとめ
dbtec
0
120
OCI Vaultについて<シークレットについて>
dbtec
0
250
OCI Vaultについて<マスター暗号化キー>
dbtec
0
76
OCI Vaultについて<概要>
dbtec
0
86
Other Decks in Technology
See All in Technology
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
270
Claude Code 珍プレー好プレー
shinyasaita
0
290
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
4.2k
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
410
product engineering with qa
nealle
0
150
金融の未来を考える / Thinking About the Future of Finance
ks91
PRO
0
180
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
3.1k
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
200
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
560
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
150
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
2.5k
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
0
1.8k
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Visualization
eitanlees
152
17k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
180
エンジニアに許された特別な時間の終わり
watany
107
250k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Become a Pro
speakerdeck
PRO
31
6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.9k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
The Cult of Friendly URLs
andyhume
79
6.9k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Ethics towards AI in product and experience design
skipperchong
2
320
Transcript
© 2024 Database Technology Inc. All Rights Reserved. 株式会社データベーステクノロジ OCI
Functionsについて 2024年6月5日 (水) 下山 星夜
© 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. まとめ
© 2024 Database Technology Inc. All Rights Reserved. 3 1.
OCI Functionsとは
© 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
© 2024 Database Technology Inc. All Rights Reserved. 5 2.
FaaSとは
© 2024 Database Technology Inc. All Rights Reserved. 6 2-1:FaaSとは
FaaS(Function as a Service) ⚫ ファンクションをサービスとして利用 ⚫ FaaSはサーバーレスコンピューティングの一種 ⚫ サーバを使わないコンピューティングではなく、ユーザがサーバを管理する必要がないということ ⚫ クラウドサービスプロバイダ(オラクル社やAWS社など)がサーバを用意・管理する ⚫ OSのアップグレードやパッチ適用も、クラウドサービスプロバイダが行う サーバーレスコンピューティング =ユーザによるサーバの管理が不要
© 2024 Database Technology Inc. All Rights Reserved. 7 2-2:ファンクションとは
ファンクション ⚫ コード実行部分 ⚫ 小規模のコードブロック(通常は1つの単純な処理を実行) ⚫ PaaS(Platform as a Service)と違い、OSは常時稼働していない ⚫ FaaSの場合は、OSの起動・停止をユーザが行う必要はない(サーバーレスなので) ・ファンクションが実行される時だけ、OSが起動する ・ファンクションが終了すると、OSはまた停止する FaaSの利点
© 2024 Database Technology Inc. All Rights Reserved. 8 2-3:ファンクションはどうやって実行する?
ファンクションの実行 ⚫ ファンクションを呼び出すトリガーが必要(トリガーの説明はp.48~52へ) ⚫ トリガーでファンクションを呼び出し、コードを実行 OCI Functions トリガー コード
© 2024 Database Technology Inc. All Rights Reserved. 9 2-4:FaaSのメリット
コストが削減できる ⚫ ファンクションが呼び出された時だけOSが稼働する ⚫ リクエスト数やファンクションの実行時間で課金される サーバ管理が不要 ⚫ ユーザはサーバ管理を気にする必要がない ⚫ オートスケーリング (自動でサーバを増やしたり減らしたりしてくれる)
© 2024 Database Technology Inc. All Rights Reserved. 10 2-5:FaaSのデメリット
導入のハードルが高い ⚫ クラウドサービスプロバイダ依存によるベンダーロックイン (設定の違いなどにより、別のクラウドサービスプロバイダへの変更が大変) ⚫ クラウド内で複数のサービスの連携が必要 (ファンクションを呼び出すために、クラウドサービス内の他のサービスを利用する場合もある) 様々な制約あり ⚫ どのランタイム言語がサポートされているか(ランタイム言語の説明はp.15へ) ⚫ コールドスタートによる初期プロビジョニング遅延 (ファンクション呼び出し後にOSが起動するので、すぐにコードが実行される訳ではない)
© 2024 Database Technology Inc. All Rights Reserved. 11 2-6:FaaSは便利だが大変
サーバ管理不要 は魅力的 色々な制約 がある…… コストも安い 別のクラウドへ の移行が厳しい
© 2024 Database Technology Inc. All Rights Reserved. 12 3.
OCI Functionsの特徴について
© 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%のメモリ減少が可能
© 2024 Database Technology Inc. All Rights Reserved. 14 3-2:OCI
Functionsの特徴について② パラメータの制限 ⚫ ファンクションのメモリしきい値:128MB、256MB、512MB、1024MB、2048MB ⚫ ファンクションのタイムアウト:5秒 ~ 300秒 ⚫ リクエストペイロード(ファンクションへの送信)とレスポンスペイロード(ファンク ションからの応答)のデータ量は最大6MB ファンクションは大規模コードを書くものではない
© 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で)
© 2024 Database Technology Inc. All Rights Reserved. 16 3-4:OCI
Functionsの特徴について④ 作成できるリソースの数の制限 ⚫ リージョン単位で、作成出来るリソースの数に制限がある ⚫ ただし上限引き上げのリクエストを行なうことも可能 足りないなら上限 引き上げを! リソース スコープ ユニバーサルクレジット Pay As You Go またはトライアル アプリケーション リージョン単位 20個まで作成可能 10個まで作成可能 ファンクション リージョン単位 500個まで作成可能 50個まで作成可能 アプリケーションの 説明はp.26~31へ
© 2024 Database Technology Inc. All Rights Reserved. 17 4.
OCI Functionsの開発環境 について
© 2024 Database Technology Inc. All Rights Reserved. 18 4-1:OCI
Functionsの開発環境について 開発環境は3種類! ① ローカルホスト ② OCIのコンピュートインスタンス ③ OCIのクラウドシェル(コンソールベースのターミナル)
© 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プロファイル設定
© 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コンテキスト設定 レジストリへの接続
© 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コンテキスト設定 レジストリへの接続
© 2024 Database Technology Inc. All Rights Reserved. 22 4-2:開発環境の違いのまとめ①
①ローカルホスト ②OCIのコンピュート インスタンス ③OCIのクラウド シェル Dockerインストール、起動 必要 必要 不要 Fn Project CLIインストール 必要 必要 不要 Fn Project CLIコンテキスト設定 必要 必要 必要 レジストリへの接続 必要 必要 必要 APIキー、OCIプロファイル設定 必要 不要 不要
© 2024 Database Technology Inc. All Rights Reserved. 23 4-3:開発環境の違いのまとめ②
① ローカルホスト ⚫ 手元の環境で開発できる ⚫ 必要な設定が多い ② OCIのコンピュートインスタンス ⚫ ファンクション開発中はコンピュートインスタンスを稼働 ⚫ コンピュートインスタンスの追加コストがかかる ③ OCIのクラウドシェル(コンソールベースのターミナル) ⚫ ストレージは5GB ⚫ 半年アクセスがないと更に2か月後にストレージが削除されてしまう
© 2024 Database Technology Inc. All Rights Reserved. 24 5.
ファンクションを呼び出す までの流れ
© 2024 Database Technology Inc. All Rights Reserved. 25 5-1:ファンクションを呼び出すまでの流れ
① アプリケーション作成 ② ファンクション作成 ③ ファンクションデプロイ ④ ファンクション呼び出し この流れはどの開発環境でも変わらない
© 2024 Database Technology Inc. All Rights Reserved. 26 6.
アプリケーション作成について
© 2024 Database Technology Inc. All Rights Reserved. 27 6-1:アプリケーション作成について
アプリケーションとは? ⚫ OCI Functionsにおける、ファンクションの論理グループ ⚫ ファンクション作成の前にアプリケーションの作成が必要 ⚫ アプリケーション単位でシェイプを決定(x86・Arm) ⚫ OCIコンソール画面で簡単に作成可能!
© 2024 Database Technology Inc. All Rights Reserved. 28 6-2:アプリケーションの作成①
アプリケーションを選択
© 2024 Database Technology Inc. All Rights Reserved. 29 6-3:アプリケーションの作成②
アプリケーションの作成を選択
© 2024 Database Technology Inc. All Rights Reserved. 30 6-4:アプリケーションの作成③
シェイプを決定
© 2024 Database Technology Inc. All Rights Reserved. 31 6-5:アプリケーションの作成④
ファンクションはここに表示される (アプリケーション作成時は何もない)
© 2024 Database Technology Inc. All Rights Reserved. 32 7.
ファンクション作成について
© 2024 Database Technology Inc. All Rights Reserved. 33 Tips:用語解説
Docker ⚫ コンテナの作成や実行のためのプラットフォーム コンテナ ⚫ 仮想マシンと同じく、仮想化技術 ⚫ 仮想化により、1つのサーバ上で複数のサーバ環境を実行 ⚫ 仮想マシンは複数の異なるOSを実行出来るが、コンテナのOSは元OSに依存 ⚫ コンテナイメージ(アプリケーションファイルやライブラリ)からコンテナ作成 レジストリ ⚫ コンテナイメージの格納場所で、リポジトリ毎に分けられる ⚫ リポジトリは、名前は同じでタグが違うコンテナイメージ(バージョン1、2、3など)
© 2024 Database Technology Inc. All Rights Reserved. 34 7-1:ファンクション作成について
作成方法は3種類! ① Fn Project CLI ② コードエディタ(コンソールベースのコード編集ツール) ③ 事前構築済みファンクション 多様な作成方法があるのもOCI Functionsの魅力
© 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リソースを管理したい場合は、コードの編集が必要)
© 2024 Database Technology Inc. All Rights Reserved. 36 7-1-②:コードエディタで作成
OCIのコードエディタを使用 ⚫ コンソールベースのコード編集ツール ⚫ ターミナルウィンドウもついており、コマンド実行可能 ⚫ リモートGitリポジトリ(GitHubなど)が必要 ローカルGitリポジトリにコミットしてから、リモートGitリポジトリにプッシュ ⚫ 作成方法は3種類! A) テンプレート B) サンプル C) コードリポジトリ Code Editor
© 2024 Database Technology Inc. All Rights Reserved. 37 コードエディタ上で作成
⚫ Go、java、node、python、ruby、kotlinからランタイム言語を選択 ⚫ 『Hello World!』を返す基礎的なファンクションが作成される (OCIリソースを管理したい場合は、コードの編集が必要) 7-1-②-A:テンプレートの使用
© 2024 Database Technology Inc. All Rights Reserved. 38 コードエディタ上で作成
⚫ Oracleで用意されているサンプルファンクションから選択(一覧は以下のURLから) ⚫ https://github.com/oracle-samples/oracle-functions-samples ⚫ サンプルなのでコードは書かれているが、状況に合わせてコードの編集も可能 7-1-②-B:サンプルの使用
© 2024 Database Technology Inc. All Rights Reserved. 39 コードエディタ上で作成
⚫ URLや個人アクセストークンを入力して、リモートGitリポジトリに接続 ⚫ リモートGitリポジトリにあるファンクションコードに基づいて、ファンクション作成 ⚫ 予めリモートGitリポジトリに、ファンクションコードを置いておく必要がある 7-1-②-C:コードリポジトリの使用
© 2024 Database Technology Inc. All Rights Reserved. 40 7-1-③:事前構築済みファンクションで作成
Oracleによって予め構築されたファンクションを使用 ⚫ 構築済みなので開発環境はない(当然コードの編集も出来ない) ⚫ OCIコンソール画面で作成しそのまま使用可能だが、使用用途は限られる
© 2024 Database Technology Inc. All Rights Reserved. 41 8.
ファンクションデプロイについて
© 2024 Database Technology Inc. All Rights Reserved. 42 8-1:ファンクションデプロイについて①
⚫ 作成したファンクションを呼び出せるように、適切な場所へ配置 ⚫ Dockerレジストリへのプッシュ ⚫ ファンクションはDockerイメージとしてDockerレジストリにプッシュ 基本的にはOCIレジストリを利用 (使用したイメージがオブジェクトストレージレートで課金されるが、毎月10 GBまでは無料) ⚫ ファンクションのコードを変更した際もプッシュが必要 ⚫ OCI Functionsへのデプロイ ⚫ Dockerレジストリへのプッシュ後に、OCI Functionsへのデプロイも必要 ⚫ ファンクションのコードを変更した際もデプロイが必要
© 2024 Database Technology Inc. All Rights Reserved. 43 8-2:ファンクションデプロイについて②
⚫ インストールされたFn Project CLIを使用 ⚫ 以下の開発環境でデプロイ可能 ⚫ ローカルホスト ⚫ OCIのコンピュートインスタンス ⚫ OCIのクラウドシェル ⚫ コマンドを実行してデプロイ ⚫ fn -v deploy --app<アプリケーション名> ⚫ 上記コマンドで、デプロイ前のOCIレジストリへのプッシュも行ってくれる ⚫ 指定したアプリケーションにデプロイ
© 2024 Database Technology Inc. All Rights Reserved. 44 8-3:ファンクションデプロイの流れ
ファンク ション ①ファンクションをDocker レジストリにプッシュして、 Dockerイメージとして保存 Docker レジストリ アプリケー ション ②ファンクションをOCI Functionsにデプロイして、 アプリケーション毎に管理 プッシュの方を 先に行う
© 2024 Database Technology Inc. All Rights Reserved. 45 8-4:レジストリとリポジトリを確認①
コンテナレジストリを選択
© 2024 Database Technology Inc. All Rights Reserved. 46 8-5:レジストリとリポジトリを確認②
リポジトリ毎にDockerイメージが管理されている
© 2024 Database Technology Inc. All Rights Reserved. 47 8-6:アプリケーションを確認
アプリケーションの詳細を開くと、 ファンクションが追加されている
© 2024 Database Technology Inc. All Rights Reserved. 48 9.
ファンクション呼び出しについて
© 2024 Database Technology Inc. All Rights Reserved. 49 9-1:ファンクション呼び出しについて
トリガーによって呼び出される 1. 直接呼び出し 2. OCIサービスからの呼び出し ファンクションが呼び出されると、Dockerイメージからコンテナが作られる ⚫ コンテナの稼働時間は、ファンクションで設定したタイムアウトに依る ⚫ コストを最小に抑えるために、必要な時間に近いタイムアウトの設定を
© 2024 Database Technology Inc. All Rights Reserved. 50 9-2:ファンクションの直接呼び出しの一例
ファンクションのエンドポイント を使ってコマンド実行 (他にも直接呼び出し方法はある)
© 2024 Database Technology Inc. All Rights Reserved. 51 9-3:ファンクションのOCIサービスからの呼び出しの一例
イベントサービスのアクションの利用 (他にもOCIサービスからの呼び出し方法はある)
© 2024 Database Technology Inc. All Rights Reserved. 52 9-4:ファンクションの呼び出しの流れ
トリガー ファンク ション コード ファンクション 呼び出しにより、 Dockerレジスト リからDockerイ メージをプル コード 実行 Docker レジストリ Dockerイメージから OS作成 (Dockerコンテナ) OS ファンクション実行
© 2024 Database Technology Inc. All Rights Reserved. 53 10.
まとめ
© 2024 Database Technology Inc. All Rights Reserved. 54 10-1:ファンクションの使用例
OCIサービスからの呼び出しにより、状況に合わせて自動でOCIリソース管理! 自動OCIリソース管理の例 ⚫ コンピュートインスタンスのヘルスチェックが失敗したら、自動で再起動する ⚫ コンピュートインスタンスやデータベースを、 Cron式で自動で起動・停止する (Always Freeのコンピュートインスタンスを常時稼働してジョブを実行しても良いが、 その場合はサーバの管理が必要) サーバの管理が不要なのはファンクションの強み
© 2024 Database Technology Inc. All Rights Reserved. 55 10-2:まとめ
OCI Funtionsは慣れれば便利 ⚫ GraalOSの様に、新しい機能が追加される可能性がある ⚫ プラットフォームはオープンソースのFn Project ⚫ 毎月の無料枠も豊富 使いどころを考えて ⚫ 常時稼働するようなアプリケーションには向かない ⚫ コンテナ作成によるコールドスタートがある
© 2024 Database Technology Inc. All Rights Reserved. 56 お問い合わせ
OCIに関するお困りごとは,ぜひ弊社までご相談ください。 お電話でのお問い合わせ 075-231-6131 受付時間:平日 10:00~17:00 メールでのお問い合わせ
[email protected]
※お手数ですが、御社名、ご氏名、 お問い合わせ内容を本文中にご記載ください。 https://www.db-tec.com/ 弊社ホームページからも、お問い合わせを承っております。 Oracleは、オラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。