0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Resource Scheduler + OCI Functions + OCI WAF で実現する WEB サイト自動開閉局

0
Posted at

001samune.png

概要

外部公開しているサイトにおいて、日時開閉局が必要というシステム要件を想定した自動開閉局の構成を考えてみました。


システム概要

  • 環境コードは以下 GitHub にあげてますので、よかったら覗いてみてください

システム構成

対象とするWEBサイト構成は以下の通りです。
非常にシンプルな構成で、FLB で外部接続を受け付け、後段の Compute Instance でリクエストを処理します。
FLB には Regional WAF がアタッチされています。
architecture.drawio.png

シンプルなHTMLを返すだけのシステムです。
image.png

自動開閉局構成

開閉局のワークフローは以下の通りです。

  1. 開局、閉局の起点となるFunctionsをResource Scheduler で呼び出す
  2. Functionsは 成功時・失敗時 それぞれに Notifications / Stream / Queue のいずれかにイベントをプッシュできるため、Notificationsにプッシュ
  3. 処理が必要な部分は、Functionsをサブスクライブしたトピックを選択し、それ以外はEmailをサブスクライブしたトピックを選択

workflow.drawio.png


本構成の改善点

コード内エラーハンドリング

今回は実装していないところで、コード内でエラーが発生した場合(try-catchで拾われるケース)のハンドリングはしていません。Functionsのエラーはあくまでコード外に関するところなので、仮に本構成においてコード内エラーが発生しても通知はされません。
そのため、本構成を商用等で利用する場合は、Functionsの実行ログからConnector Hubでログ監視することをおすすめします。

非同期処理ハンドリング

こちらもコードに関するところですが、Compute Instanceを起動するFunctionsコードにおいて、Compute InstanceがRunningになるまで処理を待っていません。基本的にリクエストを送ったら処理は完了となります。
そのため、本構成を商用等で利用する場合は、コード内でwhile文などを活用し、対象インスタンスの状態を確認する処理を追加することをおすすめします。もしくは開局実施の時間に余裕をもたせることによる運用対処でも良いかと思います。

FLB のヘルスチェック考慮

こちらもコードに関するところですが、開局処理時にFLBのヘルスチェックを考慮していません。
そのため、本構成を商用等で利用する場合は、コード内でwhile文などを活用し、FLBのバックエンドセットのステータスを確認する処理を追加することをおすすめします。もしくは開局実施の時間に余裕をもたせることによる運用対処でも良いかと思います。


おわりに

本記事では、自動開閉局構成を提案しました。
サービスと言うよりコードの改善点はあるものの、少しは役立ちそうなものができたかと思っています。
基本的にはFunctionsで構成されているため、Oracle Integration Cloud でも同じようなことができるのではないかと考えています。
その点はいずれ試してみたいなと思います。


🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?