Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

”試してみた”で終わらない サーバーレスアプリケーションの実践開発

635 views

Published on

Engineer Lab Fukuoka #1 ディープダイブ! AI を支える技術
https://www.facebook.com/events/171044080320197/

Published in: Technology
  • Login to see the comments

”試してみた”で終わらない サーバーレスアプリケーションの実践開発

  1. 1. “試してみた”で終わらない サーバーレスアプリケーションの実践開発 2018/01/19 Engineer Lab Fukuoka 株式会社オルターブース 松村 優大
  2. 2. 松村 優大 (MLBお兄さん) • 株式会社オルターブース • 業務執行役員/CTA • Microsoft MVP (for VSDT) 2
  3. 3. 本日のテーマ • AIの実現を支援するサーバーレスコンピューティング • 設計や開発におけるアーキテクチャの重要性 • “試してみた”からもう一歩踏み込む 3
  4. 4. “サーバーレスコンピューティング” という言葉 4
  5. 5. クラウドベンダー各社で大体同じ Azure サーバー、インフラストラクチャ、オペレーティング システムを抽象化したもの AWS サーバーのプロビジョニング、スケーリング、および管理は必要ありません GCP サーバー管理にまつわる複雑さを解消する、コンピューティングの新しいパラダイム 5 https://azure.microsoft.com/ja-jp/overview/serverless-computing/ https://aws.amazon.com/jp/serverless/ https://cloud.google.com/serverless/?hl=ja
  6. 6. ユーザー的には… PaaS ≒ Serverless 6
  7. 7. “試してみた”で終わらない • オルターブースでは自社サービスと受託開発に サーバーレスの仕組みを投入している • サーバーレスを採用する理由 • クラウドのリソース間で連携する必要がある • 稼働時間が限られるエンドポイントがある • 負荷分散のため • テストの容易さ 7
  8. 8. “試してみた”で終わらない • オルターブースでは自社サービスと受託開発に サーバーレスの仕組みを投入している • サーバーレスを採用する理由 • クラウドのリソース間で連携する必要がある • 稼働時間が限られるエンドポイントがある • 負荷分散のため • テストの容易さ 8
  9. 9. “試してみた”で終わらない • オルターブースでは自社サービスと受託開発に サーバーレスの仕組みを投入している • サーバーレスを採用する理由 • クラウドのリソース間で連携する必要がある • 稼働時間が限られるエンドポイントがある • 負荷分散のため • テストの容易さ 9
  10. 10. Azureのサーバーレスサービス 10
  11. 11. Azure Functions 11 イベントドリブン型の関数単位のコードを実行 できるサービス。実行時間に対する従量課金プ ランが提供されている。 Webhookをはじめ、Azure内外のサービスと連 携することができる。(SendGridやTwilioなど) C#, Node.js, F#が正式サポート。 Java, Python, PHP等がプレビューでサポート。
  12. 12. Logic Apps 12 • コードレスなワークフローを実現 • 使用したリソース料金のみ • IFTTTみたいなアレ(多数のコネクタ)
  13. 13. 2つのサーバーレスサービスの使い分け Logic Appsで良いとき • やりたいことがシンプル • 入力と出力のコネクタが 存在する • コーディングが苦手 Functionsが良いとき • 特殊な処理を行いたい • 複雑な条件分岐 • パッケージを使いたい • npm • NuGet • composer 13
  14. 14. “試してみた”で終わらない • オルターブースでは自社サービスと受託開発に サーバーレスの仕組みを投入している • サーバーレスを採用する理由 • クラウドのリソース間で連携する必要がある • 稼働時間が限られるエンドポイントがある • 負荷分散のため • テストの容易さ 14
  15. 15. クラウドのリソース間連携 例)Webページにアップロードされたファイルをストレージに 保存し、ファイル情報をDBに書き込み、処理が終わるとメール で通知する。 15 全ての処理が終わるまで リクエストが終わらない
  16. 16. クラウドのリソース間連携 例)Webページにアップロードされたファイルをストレージに 保存し、ファイル情報をDBに書き込み、処理が終わるとメール で通知する。 16 アップロードが終われば リクエストが終わる じきに後続の処理が終わる
  17. 17. サーバーレスアプリケーションを 開発する上で考慮すべきこと 17
  18. 18. 状態管理 サーバーレスアプリケーション側の状態(State)は、 サーバーレスアプリケーション側で管理・更新すべき。 18
  19. 19. 状態管理 サーバーレスアプリケーション側の状態(State)は、 サーバーレスアプリケーション側で管理・更新すべき。 19 Webアプリケーションが処理内で 状態を知ることができる範囲
  20. 20. 状態管理 サーバーレスアプリケーション側の状態(State)は、 サーバーレスアプリケーション側で管理・更新すべき。 20 Webアプリケーションが処理内で 状態を知ることができる範囲 Webアプリケーションは 処理の完了を待たない
  21. 21. 状態管理 サーバーレスアプリケーション側の状態(State)は、 サーバーレスアプリケーション側で管理・更新すべき。 21 Webアプリケーションが処理内で 状態を知ることができる範囲 Webアプリケーションは 処理の完了を待たない 状態や結果の通知
  22. 22. 処理エラーを検知する • ログをApplication Insightsに集約する • エラーログは運用に昇華させる • Webhook, メール, OMS, etc. 22
  23. 23. 処理エラーへの対処 • リトライできる仕組みを用意する • https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-host-json • 失敗したことをユーザーが把握できるようにする 23
  24. 24. 処理エラーへの対処 • リトライできる仕組みを用意する • https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-host-json • 失敗したことをユーザーが把握できるようにする 24
  25. 25. 認証と認可 • 場面:API(Webhook)をホストする • 認証:リソースにアクセスできるか • 認可:エンドポイントを実行して良いか • 対策:API ManagementやAPI Gatewayを前面に配置 25
  26. 26. ウォームアップ 一定時間の実行が無いとアイドル状態になる。 困ること アイドル状態での起動には時間がかかる。 対策 事前に“モーニングコール”を行う。 または常時接続できる価格プランにする。 26
  27. 27. 開発環境の整備 27
  28. 28. ローカル開発環境 (C#) • Visual Studio 2017 • Azure SDK • Extension - Azure Functions and Web Jobs Tools • ローカルエミュレータ(一例) • Storage Emulator • Cosmos DB Emulator • BotFramework Emulator 28
  29. 29. ローカル開発環境 (nodejs) • Visual Studio Code • npm: azure-functions-core-tools • アプリケーション開発サイクルの完結 • プロジェクト作成/デバッグ/デプロイ • ローカルエミュレータ • C#, F#も開発できる 29https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-run-local $ func templates list C# Templates: BlobTrigger HttpTrigger QueueTrigger TimerTrigger JavaScript Templates: BlobTrigger HttpTrigger QueueTrigger TimerTrigger
  30. 30. まとめ 30
  31. 31. • (単純に)サーバーレスにしたい! ⇒開発者の自己満足 • サービスの品質や満足度を高めるための手段 • コスト(費用)を下げる目的でのサーバーレス採用は コスト(開発/運用)が上がる可能性あり • サーバーレスを含め、PaaSでアーキテクチャを構成す ることが重要 (VMの強制再起動は嫌ですよね? 31
  32. 32. ご清聴ありがとうございました。 32

×