LoginSignup
7
3

More than 3 years have passed since last update.

AZURE Functionsを運用して分かったこと

Last updated at Posted at 2019-09-02

そもそもAZURE Functionsとはなんぞや

最近、よく聞くサーバレスアーキテクチャの思想を元にMicrosoftが提供しているフレームワーク。

サーバレスアーキテクチャとは、まるでサーバーが無いかのような振る舞いをするサーバーアプリのこと
詳しくは先人様か公式ドキュメントを参考に。
※Microsoftの公式ドキュメントって、読みづらいよね…

運用して気づいた(ハマった)こと

1. たまに403でエラーが返却される
2. Web.Configとかがない
3. たまにTCPが繋がらず、タイムアウトになる
4. 稀に勝手に再起動する
5. Kuduは利用可能
6. サーバの監視はApplication Insight

運用して気づいたことの詳細

完全な対策と理由は未だに理解できてません。。。
ご存知の方がいらっしゃったら、教えて頂きたく。

1. たまに403でエラーが返却される

Functionsが20分以上稼働していない状態でAPIが叩かれるとたまに発生する。
原因は、サーバーが立ち上がりきっていないため。
IPアドレスの制限をかけている場合に、許可していないIPから飛んできたときにも403で返す。
「指定範囲の対象外だから、権限ないよ!」
って感じで403になるらしい。

2. Web.Configとかがない

代わりにアプリケーション設定が複数に分かれている。
環境変数とDB接続文字列で一つ。
Functions自身の設定で1つ。
→Functionsのバージョン指定やタイムアウト時間などの設定。

3. たまにTCPが繋がらず、タイムアウトになる

これに関してはNode.jsを使って夜間にバッチ処理をしているとたまに出る。
20秒以上、接続出来ないとエラーとなる。
原因は不明。
POSTMANやRestletで送ると発生しない。
RESTの発行数は2000件/1時間なので、問題ないはず。。。

4. 稀に勝手に再起動する

以下の状況下で発生した。

========================= やってること =========================
1. Functionsの自作APIをコール
2. 自作API内で別スレッドを起動
3. 別スレッドは起動したままで、クライアントにレスポンスを返す

============================================================

別スレッドが起動している状態にも関わらず、Initialize Host.とかふざけたログが出力される。
※これに関しては、Durable-Functionsを入れていることによる弊害かもしれない。
 それにしても、強制終了されるのは辛み。。。

参考サイト

5. Kuduは利用可能

Azure Functionsの概要タブの横にあるプラットフォーム機能タブを開くと左下のほうにKuduがある
これは今まで通りの使い方ができる。
※ただし、Kuduで表示されているファイル等はストレージアカウントに登録されているので、容量によって料金が変動する点に要注意。

6. サーバの監視はApplication Insight

AZURE Functionsのサーバ状態を監視するのには、Application Insightを利用しましょう。
これが無いとエラーが起きた時に「サーバが再起動した!」とかのログを取得できないので、めちゃくちゃ不便です。
※ただし、初期設定のままだと、クライアントIPが「0.0.0.0」で来るので注意です!
 理由はData protection in the EU、日本語名:EU一般データ保護規則が原因です。
 Functions V2 での設定方法についてはこちらの記事を参考にしてください。

7
3
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
7
3