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.

スタートアップがスマホアプリゲームをAzureのサービスで運用した話

Japan Azure User Group (JAZUG)6周年セッション

  • Be the first to comment

スタートアップがスマホアプリゲームをAzureのサービスで運用した話

  1. 1. スタートアップが スマホアプリゲームを Azureのサービスで 運用した話 Japan Azure User Group (JAZUG) 6周年総会 事例セッション 2016/9/3 Kiyoaki Tsurutani
  2. 2. 自己紹介 ▪ 鶴谷 清明(つるたに きよあき) ▪ 経歴 ▪ 金融系SI業界 (~2011/9) ▪ 株式会社gloops (2011/10~2014/6) ▪ 株式会社クラウドナイン (2014/7~2016/5)←ここでCTOの頃の話 ▪ フリーランス (2016/6~) ▪ https://www.facebook.com/k.tsurutani ▪ kiyoaki.tsurutani@gmail.com
  3. 3. クラウドナインについて ▪ 株式会社クラウドナイン ▪ https://cloud9-plus.com/ ▪ スマートフォンゲームアプリ開発・運営をしている会社 ▪ 2014/7に設立 ▪ 2015/11に「ワールドギミック」というゲームをリリース ▪ https://site.world-gimmick.com/ ▪ 2016/4 クルーズ株式会社が出資
  4. 4. 今回いただいた「お題」 内容としては ▪ 各ソリューションのご紹介(公にできる範囲で大丈夫です。アーキテクチャが分かる程度にテクノ ロジー寄りにお話しいただけますと幸いです) ▪ Azureを使い始めた理由 ▪ Azure の良かったところ、苦労したところ ▪ Azure にこんな機能がほしい、期待するところ をそれぞれお話しいただけると宜しいかと思っております。
  5. 5. ソリューション (というかゲーム)のご紹介
  6. 6. ワールドギミックについて
  7. 7. ワールドギミックについて
  8. 8. ワールドギミックについて develop ブランチ 開発 環境 qa ブランチ テスト 環境 cert ブランチ 申請 環境 product ブランチ 本番 環境 1.5ヶ月
  9. 9. Azureを使い始めた理由
  10. 10. CTOって? ▪ https://ja.wikipedia.org/wiki/最高技術責任者 ▪ 短期間の(戦略的な)技術的方向性決定 ▪ 研究開発のビジネス的な監督 ▪ 企業内でのソフトウェアの利用 ▪ 技術的な意思決定をする人
  11. 11. CTOって? ▪ プロダクトがソフトウェアの場合の技術的方向性決定、研究開発、ソフトウェア利用の判断基 準はだいたい ▪ やりたいこと→実現の 速さ≧品質>安さ
  12. 12. Azureを使い始めた理由 ▪ クラウドナインの創立時、エンジニア5人全員C#er ▪ → 言語はC#に決定 ▪ ちなみにフレームワークはクライアント側はUnityで、サーバー側はASP.NET MVCとWeb APIに ▪ 言語がC#ならスキーマからモデル自動生成できるし、Visual Studioのスキーマ比較便利だ し、SQL Server使いたい ▪ → DBはSQL Serverに決定
  13. 13. Azureを使い始めた理由 ▪ WebアプリケーションサーバーはAzure Websites(現WebApps)の方が管理が楽だった ▪ インフラエンジニアもいなかった ▪ → Azure Websites使いたい
  14. 14. Azureを使い始めた理由 ▪ VMに構築するより、SQL Databaseの方が管理が楽だった ▪ DBAやインフラエンジニアもいなかった ▪ クエリストア等のSQL Server 2016の便利機能が、早めにSQL Databaseで使えるように なった ▪ → SQL Database使いたい
  15. 15. Azureを使い始めた理由 ▪ 性能上限が満たせれば、VMではなくサービスのみで構築したい ▪ WebsitesからSQL Databaseへのquery/secを測定してみた ▪ https://github.com/kiyoaki/AzurePerformanceTesting ※2015/3測定(現在はもっと大きいインスタンスがあるし性能上限高いと思われる) P3(800DTU) Entity Framework 2015-03-11 12:21:09 PID[3920] Information 10000 rows written in 11046ms 2015-03-11 12:21:15 PID[3920] Information 10000 rows read in 5221ms P3(800DTU) Dapper 2015-03-11 12:20:24 PID[3920] Information 10000 rows written in 6216ms 2015-03-11 12:20:26 PID[3920] Information 10000 rows read in 2112ms P3(800DTU) Raw ADO.NET 2015-03-11 12:21:41 PID[3920] Information 10000 rows written in 4968ms 2015-03-11 12:21:44 PID[3920] Information 10000 rows read in 2137ms
  16. 16. Azureを使い始めた理由 ▪ JMeterで負荷テストも行った結果、ブラウザゲームと違ってアプリなのでAPIのアクセス頻度は 少なめだし、一時的に使うデータをRedisに持っていけば大丈夫だろうと判断 ▪ ちなみに当時、負荷テストを行ってボトルネックになるのはDBのMax concurrent workers だった ▪ https://azure.microsoft.com/ja-jp/documentation/articles/sql-database- service-tiers/
  17. 17. Azureを使い始めた理由 ▪ 創立時のエンジニアのスキル ▪ 過去の資産が無いスタートアップの1本目のプロダクトという、オンプレみたいな超高価なモノ以 外なんでも選べる状況 ▪ ネットワークやOSやミドルウェアの管理をしたくない!
  18. 18. Azure の良かったところ 苦労したところ
  19. 19. 良かったところ(お気に入りの機能) Azure SQL Database Query Performance Insight https://azure.microsoft.com/ja-jp/documentation/articles/sql-database-query-performance/ SQL Database Advisor https://azure.microsoft.com/ja-jp/documentation/articles/sql-database-advisor-portal/
  20. 20. 良かったところ(お気に入りの機能) Application Insights: プロアクティブな検出 https://azure.microsoft.com/ja-jp/documentation/articles/app-insights-proactive-detection/
  21. 21. 良かったところ(お気に入りの機能) Application Insights の設定: 依存関係の追跡 https://azure.microsoft.com/ja-jp/documentation/articles/app-insights-asp-net-dependencies/
  22. 22. 良かったところ(お気に入りの機能) ▪ Application Insights: 言語、プラットフォーム、統合 ▪ https://azure.microsoft.com/ja-jp/documentation/articles/app-insights- platforms/ ▪ 色々な言語で使えるし、VMでもオンプレでも使える ▪ アプリケーションのメトリクス収集は、SDKを組み込んで関数呼び出したり ▪ サーバーのメトリクス収集は、エージェントをインストール
  23. 23. 良かったところ(全体的に) ▪ パフォーマンス、プロビジョニング、スケーリング、フェイルオーバー、モニタリング、アラート等オペ レーション問題なし ▪ パフォーマンスについては、BOTによって短時間に40万アカウントほどアカウント作成&チュートリアルの ガチャを回された時があったが、一部のDatabaseのCPU使用率が60%になる程度で耐えた ▪ BOTアカウントを自動で検知して弾くロジックを実装して、BOTは去った ▪ ○イアンティックも大変だっただろうと察する ▪ プロビジョニングやアプリケーションのデプロイ簡単 ▪ Visual StudioやSQL Server Management Studioによく統合されている
  24. 24. 苦労したところ ▪ どのPaaSでも同様ですけど、データストアへの接続は、ごくたまに瞬断する ▪ DBはEntityFrameworkのSqlAzureExecutionStrategyを使えばOK ▪ https://msdn.microsoft.com/ja- jp/library/system.data.entity.sqlserver.sqlazureexecutionstrategy(v=vs.113).aspx ▪ RedisはStackExchange.Redisの設定をabortConnect=falseにしておけばOK ▪ https://azure.microsoft.com/ja-jp/documentation/articles/cache-dotnet-how-to-use- azure-redis-cache/ ▪ 2014年当時、AWSじゃなくて大丈夫?と周囲が不安がる
  25. 25. Azure にこんな機能がほしい 期待するところ
  26. 26. というか アプリケーションエンジニアは クラウドプラットフォームに 何を求めるのか
  27. 27. Webサービスの開発において 速さと品質を上げるために
  28. 28. オペレーションしやすい環境 ビジネスに適した開発プロセス ※開発言語、開発機の性能、暗黙ルールの排除、椅子やモニタの品質とか他 にも色々あるけど
  29. 29. オペレーションしやすい環境
  30. 30. オペレーションしやすい環境 ▪ プロビジョニング ▪ スケーリング ▪ フェイルオーバー ▪ モニタリング ▪ アラート ▪ etc
  31. 31. ビジネスに適した開発プロセス
  32. 32. ビジネスに適した開発プロセス ▪ リリース計画 ▪ テスト計画 ▪ GitHubフロー ▪ CI ▪ デプロイ方法 ▪ etc
  33. 33. クラウドプラットフォーマーに 求めるのは オペレーションしやすい環境
  34. 34. ハードウェア ネットワーク OS ミドルウェア 面倒見て欲しい
  35. 35. 例えば、こういうのはお任せしたい ▪ CPU使用率100%のWebサーバをOSのチューニングだけでCPU使用率20%まで改善する - 人間とウェブの未来 ▪ http://hb.matsumoto-r.jp/entry/2016/07/23/000533
  36. 36. スタートアップはVMで運用すれば 各プラットフォームの無料枠を 2年ずつ利用して渡り歩けるけど
  37. 37. 6年間、VM管理してまで 無料枠使いたいか
  38. 38. 6年間、サービスが継続するか
  39. 39. VMで2年運用すると オペレーション(プロビジョニング等)や 開発プロセス(デプロイ方法等)や アプリケーション自体に PaaSへ移行できない何かが作りこまれることも
  40. 40. ハードウェア ネットワーク OS ミドルウェア クラウドプラットフォームに任せて 楽になりたい
  41. 41. Welcome 幸せなロックイン
  42. 42. ご清聴ありがとうございました

×