はじめに
AZ-204取ったので、苦手な部分を復習がてら記事化。
Azure Container Instances
Dockerコンテナーを実行できる。単純なアプリケーション向き。オーケストレーション不要……というかオーケストレーションしたいならAKS使おう。
再起動ポリシー
Always…コンテナを常に再起動する。実行時間の長いタスク向き。
Never…コンテナを再起動しない。コンテナは1回のみ実行される。
OnFailure…コンテナで実行されたプロセスが失敗した場合のみ、コンテナを再起動する。コンテナは少なくととも1回実行される。実行時間の短いタスク向き。
Azure Functions
関数をサーバレスで実行できる。他サービスと連携させる上でトリガーとバインドが重要。
トリガーは関数の呼び出し方法、バインドは関数に別のリソースを接続する方法のこと。入力バインドと出力バインドの2種類ある。バインドはfunction.jsonで定義する。
function.json
バインドの定義ファイル。 他サービスから関数にデータ連携("direction":"in")させたり、関数から他サービスにデータ連携("direction":"out")させたりできる。
認証情報はfunction.jsonにハードコードせず、App settingsで定義してfunction.jsonから参照させるのがセキュリティ的に安全。
Cosmos DB
DP-420がCosmos DB特化試験なのでその対策も兼ねて気持ち厚め
NoSQLデータベースだけど以下のドキュメントにはリレーショナル、ベクトルデータベースとも書いてある。IoTやリアルタイム分析のデータベースとして使ったりする。CosmosDBのLearnはサンドボックス付きのハンズオンが色々あるのでやってみるとイメージが掴めると思う。
Learn
変更フィード
データの追加、編集、消去といったイベントの記録。変更フィードトリガーでAzure Functionsをキックしたりできる。(=コンテナに変更が加えられたら関数を実行できる)
だいたいのケースでは変更フィードプロセッサ(プッシュモデル)で変更フィードを処理するけど、特定のパーティションキーから変更を読み取りたい、変更フィードの読み取りペースを制御したい、といった場合にはプルモデルが使われることもある。
変更フィードプロセッサのコンポーネント
監視対象コンテナー…読んで字のごとくだけど、このコンテナーへの変更がフィードに記録される。
リースコンテナー…複数のworker間で状態を維持し、動的スケーリングを調整する。 Azure Functionsで自動作成できるが、手動で作成することも可能。
デリゲート…変更フィードを読み取って何をするかを定義するコード。
コンピューティング インスタンス…変更フィードプロセッサをホストするインスタンス。
整合性レベル
データのレプリカ間でどのくらいデータの一貫性を厳密に求めるかを設定できる。厳密さとスループットはトレードオフ。Cosmos DBでは5段階の整合性レベルがある。デフォルトの整合性レベルを設定できるが、要求レベルで整合性を上書きして緩和することも可能。より厳密にしたい場合はCosmos DBアカウント側でデフォルトの整合性レベルを変更する。
設定のスコープはパーティションキー範囲か論理パーティション。
5段階のレベルについては以下の音符の例が分かりやすいのでここでは割愛。
おわりに(学習してみての所感)
Cosmos DBは奥が深いのでドキュメントを全部読もうとするといくら時間あっても足りない……公式のプラクティス評価の解説の粒度で理解できればいったんはOK、くらいの割り切りはしたほうがいいかも