SlideShare a Scribd company logo
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
近頃若者のサーバー離れが深刻化しています
株式会社オルターブース 満園 裕人
古野 新悟
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.
• クラウドネイティブなアーキテクチャを組む際の考慮ポイント
• 開発してて思ったこと
• 開発する際に気をつけているポイント
• ローカル開発について
• 実感した良いところ・気をつけるところ
今日話す内容
クラウドネイティブな
アーキテクチャを組む際の
考慮ポイント
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.
• 機能的に切り出しできる部分を切り出す
• メール送信、ファイルアップロードなど
• 1Functionあたりで行う処理は細かくしていく
• 例えばこのAPI叩いてあのAPI叩いて…ということを一つの
Functionで行おうとしている場合、必要に応じて切り分ける
• 入口は一つにする
• 「複数の入力形式を受け付けて、内部で判別する」は×
• 複数Functionに分けて、内部の処理フローはシンプルにする
Serverlessを活用したアーキテクチャの組み方
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
例:DurableFunctionsで月次処理
Blob
CosmosDB
Durable Functions
REST
月次データ生成
DB格納処理
Blob格納処理
通知処理
結果画面
結果ファイル取得
開発時のTipsなど
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
• Functionの入出力データの形式は明確に
• ドキュメントを残す
• リクエストやレスポンスのサンプルなど
• 環境変数の設定値
• バリデーションの実装
• 問題の切り分けがしやすいよう
• リクエストパラメータの不備など
• ログの出力は発生場所を明確に
• 複数のリソースを使用するため、どの部分で発生したかを判別で
きるように明記する
実際の開発におけるポイント
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
• これがあると便利
• ngrok
• ローカル上のネットワークサービスを外部公開できる
• 使用するツールのバージョンには気をつけましょう
• 更新が早いのでツールのバージョンの違いで動かなくなることも
多々
• 各種エミュレータなど
• リモートデバッグ実行
• 実際にクラウド上で動いているものを確認できた方が良い
ローカル開発環境のポイント
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
• データの扱いに注意が必要
• Orchestrator内で渡す場合は扱いを誤るとデータが消える
• データを持ち歩きたい場合はすべてのデータを持ち歩く(加工し
ない)
Durableにおける開発ポイント
実際に開発して感じたこと
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.
• Serverlessを使用することで~
• PaaSやServerlessをフル活用し開発効率UPと品質向上に繋げる
まとめ
Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
• 触ったことない方はまずHTTPで実行できるFunctionから
• 既に実践してる方は情報交換しましょう
まずは実践してみましょう
ご清聴ありがとうございました。

More Related Content

Similar to 近年若者のサーバー離れが深刻化しています

チラ見せ! マイソースファクトリーでのAws活用 修正
チラ見せ! マイソースファクトリーでのAws活用 修正チラ見せ! マイソースファクトリーでのAws活用 修正
チラ見せ! マイソースファクトリーでのAws活用 修正
Yutaka Fujisaki
 
コードを書かずに爆速開発
コードを書かずに爆速開発コードを書かずに爆速開発
コードを書かずに爆速開発
Cybozucommunity
 
ux_team_of_one
ux_team_of_oneux_team_of_one
オブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみるオブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみる
Hironobu Saitoh
 
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
馮 富久
 
[Devsumi2017]オルタナティブなチーム開発のすゝめ
[Devsumi2017]オルタナティブなチーム開発のすゝめ[Devsumi2017]オルタナティブなチーム開発のすゝめ
[Devsumi2017]オルタナティブなチーム開発のすゝめ
Atsushi Kojima
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
DIVE INTO CODE Corp.
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編Monaca
 
AITCオープンラボ IoTx総まとめ これまでのふりかえり
AITCオープンラボ IoTx総まとめ これまでのふりかえりAITCオープンラボ IoTx総まとめ これまでのふりかえり
AITCオープンラボ IoTx総まとめ これまでのふりかえり
dsuke Takaoka
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
DIVE INTO CODE Corp.
 
Hadoopエコシステムを駆使したこれからのWebアクセス解析サービス
Hadoopエコシステムを駆使したこれからのWebアクセス解析サービスHadoopエコシステムを駆使したこれからのWebアクセス解析サービス
Hadoopエコシステムを駆使したこれからのWebアクセス解析サービス
Yukinori Suda
 
アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎
アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎
アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎
DIVE INTO CODE Corp.
 
AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』
Ryohei Sogo
 
html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」
robotstart
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれから
Shinichi Takahashi
 
ノンコーディングでも!ここまでできるkintone
ノンコーディングでも!ここまでできるkintoneノンコーディングでも!ここまでできるkintone
ノンコーディングでも!ここまでできるkintone
典子 松本
 
20200928 aibid (rtb app install) sales deck (jp) v shared
20200928   aibid (rtb app install) sales deck (jp) v shared20200928   aibid (rtb app install) sales deck (jp) v shared
20200928 aibid (rtb app install) sales deck (jp) v shared
Masayuki Tsuchikawa
 
20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~
20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~
20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~
ISAO_Corp
 
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
馮 富久
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみた
Ken Gotoh
 

Similar to 近年若者のサーバー離れが深刻化しています (20)

チラ見せ! マイソースファクトリーでのAws活用 修正
チラ見せ! マイソースファクトリーでのAws活用 修正チラ見せ! マイソースファクトリーでのAws活用 修正
チラ見せ! マイソースファクトリーでのAws活用 修正
 
コードを書かずに爆速開発
コードを書かずに爆速開発コードを書かずに爆速開発
コードを書かずに爆速開発
 
ux_team_of_one
ux_team_of_oneux_team_of_one
ux_team_of_one
 
オブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみるオブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみる
 
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
 
[Devsumi2017]オルタナティブなチーム開発のすゝめ
[Devsumi2017]オルタナティブなチーム開発のすゝめ[Devsumi2017]オルタナティブなチーム開発のすゝめ
[Devsumi2017]オルタナティブなチーム開発のすゝめ
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
 
AITCオープンラボ IoTx総まとめ これまでのふりかえり
AITCオープンラボ IoTx総まとめ これまでのふりかえりAITCオープンラボ IoTx総まとめ これまでのふりかえり
AITCオープンラボ IoTx総まとめ これまでのふりかえり
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
Hadoopエコシステムを駆使したこれからのWebアクセス解析サービス
Hadoopエコシステムを駆使したこれからのWebアクセス解析サービスHadoopエコシステムを駆使したこれからのWebアクセス解析サービス
Hadoopエコシステムを駆使したこれからのWebアクセス解析サービス
 
アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎
アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎
アイデアを形にする ②HTML/CSSから始めるWeb技術の基礎
 
AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』
 
html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれから
 
ノンコーディングでも!ここまでできるkintone
ノンコーディングでも!ここまでできるkintoneノンコーディングでも!ここまでできるkintone
ノンコーディングでも!ここまでできるkintone
 
20200928 aibid (rtb app install) sales deck (jp) v shared
20200928   aibid (rtb app install) sales deck (jp) v shared20200928   aibid (rtb app install) sales deck (jp) v shared
20200928 aibid (rtb app install) sales deck (jp) v shared
 
20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~
20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~
20180119 AI で業務効率化 ~B To Employee ではじめる Chat Bot~
 
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみた
 

近年若者のサーバー離れが深刻化しています

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