2018/11/28 Alternative Architecture DOJO Offline #1
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.近頃若者のサーバー離れが深刻化しています株式会社オルターブース 満園 裕人古野 新悟
View Slide
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 株式会社オルターブース エンジニア• C#とPHPを使ったWebアプリケーションの開発• 自社サービスの開発もメインで携わる• 今年のISUCONダメだったので来年に向けて修行中…自己紹介 満園 裕人
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 株式会社オルターブース エンジニア• 主にC#とPHPを使った開発を行う• KOSMISCHをなどの自社サービスの開発に携わる• 機械学習やディープラーニングに興味あり• 1児の父。娘ラブ!自己紹介 古野 新悟
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• クラウドネイティブなアーキテクチャを組む際の考慮ポイント• 開発してて思ったこと• 開発する際に気をつけているポイント• ローカル開発について• 実感した良いところ・気をつけるところ• デモ(Durable Functions)今日話す内容
クラウドネイティブなアーキテクチャを組む際の考慮ポイント
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 基本的にPaaS,FaaS中心で組んでる• ポータルからポチポチ作ればいきなりアプリをデプロイして動かせる• 環境構築が楽• 設定回りも楽• ログ• 環境変数• アクセスキー• 監視・管理が楽全体的なアーキテクチャの組み方
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.例:MVCのWebアプリと月次処理ASP.NET MVCタイマートリガーで集計処理を実行
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 機能的に切り出しできる部分を切り出す• メール送信、ファイルアップロードなどServerlessを活用したアーキテクチャの組み方REST RESTフロントJS
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 1Functionあたりで行う処理は細かくしていく• 例えばこのAPI叩いてあのAPI叩いて…ということを一つのFunctionで行おうとしている場合、必要に応じて切り分けるServerlessを活用したアーキテクチャの組み方RESTRESTREST REST
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 入口は一つにする• 「複数の入力形式を受け付けて、内部で判別する」はו 複数Functionに分けて、内部の処理フローはシンプルにするServerlessを活用したアーキテクチャの組み方{JSON}{JSON}{JSON}{JSON}
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.例:DurableFunctionsで月次処理BlobCosmosDBDurable FunctionsREST月次データ生成DB格納処理Blob格納処理通知処理結果画面結果ファイル取得WebAppWebApp
開発時のTipsなど
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• Functionの入出力データの形式は明確に• ドキュメントを残す• リクエストやレスポンスのサンプルなど• 環境変数の設定値• バリデーションの実装• 問題の切り分けがしやすいよう• リクエストパラメータの不備など• ログの出力により、発生場所を明確に• 複数のリソースを使用するため、どの部分で発生したかを区別するために細かく出力する実際の開発におけるポイント
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• これがあると便利• Postman• ngrok• ローカル上のネットワークサービスを外部公開できる• 使用するツールのバージョンには気をつけましょう• 更新が早いのでツールのバージョンの違いで動かなくなることも多々• 各種エミュレータなど• リモートデバッグ実行• 実際にクラウド上で動いているものを確認できた方が良いローカル開発環境のポイント
実際に開発して感じたこと
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• サーバー構築・監視の手間を省くことができる• 機能単位での開発に完全分割できる• 1機能の開発に集中できる• Durable Functionsには数種類の実行パターンがあり、シーンに合わせて利用できる良いところ
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 全体構成は複雑化する• ひっくり返すと、問題の切り分けはしやすいと言える• 開発チーム内でのドキュメント共有などは、土台を作っておかないとしぬ• レイテンシ問題• 速度を重視する場合、ネットワークがネックになる可能性がある気をつけるポイント
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• アーキテクチャを考えていくうえで、サービス自体を簡素化できる• 承認フローbotを作ると、承認フローそのものの改善に繋がる• 新しい技術だとブログとかなかなか見つからない• ドキュメント、実装、Issueを見る• 但しドキュメントはローカライズで情報違ったりするので注意• サポートに問い合わせた方が早い場合もあるその他
デモ
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• ローカルデバック中のWebAppからローカルデバック中のFunctionsを実行する• Functionsの動作テストをPostmanなどでしている。• でも実際に開発中の画面で動作確認をしたい。• でもAzure Functions の準備は今すぐできない。。。• でも実装した画面でテストしたい!!!と、思ったことがある方は是非試してみてください。• Durable Functionsのアンチパターンに触れてみたデモ
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.デモ(ローカルデバック)
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.デモ(アンチパターン)
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.Durable Functions について、もっと知りたいという方は、弊社松村が発表した資料がありますので、こちらをご覧ください。【サーバーレスの常識を覆す Azure Durable Functionsを使い倒す】https://www.slideshare.net/YutaMatsumura/azure-durable-functions-111003205
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• アーキテクチャを組む際は一つ一つをシンプルにしていく• 新しい技術を扱う場合、公式ドキュメントやその技術の実装内容を追う力が必要になる• 開発チーム内での情報共有やログ・エラーハンドリングの実装をしっかり行うことが大事• PaaSやServerlessをフル活用し開発効率UPと品質向上に繋げるまとめ
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.• 触ったことない方はまずHTTPで実行できるFunctionから• 既に実践してる方は情報交換しましょうまずは実践してみましょう
ご清聴ありがとうございました。