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.

サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】

2,844 views

Published on

エンタープライズチャットアプリ「知話輪」の開発チームがDevOpsを突き詰めた結果、 Node/Mongoを卒業して、Firebase/Herokuに移行した100日間の戦いの記録を紹介します。

Published in: Technology
  • Be the first to comment

サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】

  1. 1. セッションID: 【17-E-2】 サーバーレスアーキテクチャにしてみた 取締役CTO 石田 健亮 株式会社ドリーム・アーツ @kensuke_ishida
  2. 2. Serverless 僕たちがサーバーレスに取り組んだ話をします
  3. 3. おことわり • 当社はGoogle社、salesforce.com社ほか各 社との利害関係は一切ございません。 • 本セッションの内容は当社の体験をもとに 構成されています。 • 鵜呑みにせずご自身で体験されることをお 薦めします。
  4. 4. 自己紹介
  5. 5. 石田 健亮 @kensuke_ishida 株式会社ドリーム・アーツ CTO プロダクトデザイン本部長 プログラマー
  6. 6. 仕事: 企業向け製品・サービス 社員数: 300人 所在地: 恵比寿、広島、 那覇、石垣、大連 設立: 1996年 技術ブログ: https://insuite.jp/blog/
  7. 7. ドリーム・アーツの事業 プロダクト事業 ✕ コンサルティング・SI事業
  8. 8. 1997 2005 2008 2016 2014 プロダクト事業 ドリーム・アーツの製品群 今回お話しするのは エンタープライズチャットサービス「知話輪」
  9. 9. https://chiwawa.one 知話輪 2016年11月ローンチ!!
  10. 10. 知話輪の中身① 弊社製品のINSUITE/ひびき Sm@rtDBと連携し、チャットの タイムライン上で業務をすすめ ることが可能になります。
  11. 11. 知話輪の中身② ユーザーや組織の管理は、 INSUITEのマスターと自動で同 期するので大組織への導入も簡 単です。
  12. 12. 知話輪の中身③ グループウェア機能と密接に連 動するので、こうして今日のス ケジュールが自分のタイムライ ンに通知されます。
  13. 13. 知話輪の中身④ ひびきSm@rtDBで営業レポート DBを作成すると、訪問予定の 終了のタイミングで営業レポー トの登録フォームへの誘導が通 知されます。
  14. 14. 知話輪の中身⑤知話輪の中身知話輪の中身 近くのお客様情報が検索できま す。
  15. 15. 知話輪の中身⑥ 地図アプリとの連携も可能。
  16. 16. https://developers.chiwawa.one Developers サイト 詳しく知りたい方はこちらへ
  17. 17. さて本題の Serverless サーバレスとよく耳にするが 人によって解釈が違うなという印象。
  18. 18. FaaS (Function as a Service) AWS Lambda (2015/6〜) Azure Functions (2016/11〜)
  19. 19. PaaS この2つも自分でサーバを持たなくてもデプロイできる そういう意味ではサーバレスかも
  20. 20. mBaaS これらもまた、サーバが見えないのでサーバレス
  21. 21. 僕達のサーバーレス 「ケータイとSSHは嫌いだ」 いろんな定義があるが 開発スピードや運用コストを考えた結果、 知話輪にサーバレスを採用 この背景には僕達の痛い経験が……
  22. 22. 開発ヒストリー 2014 開発開始 Node.js MongoDB Objective-C CoreData AWS Vue.js 2015 盛大に炎上 2016 再出発の夏 2016.11.24 リリース ← サーバレスを採用
  23. 23. 再出発の時、なぜ僕達はここに流れ着いたか 1. 金がない 3. 興味のままでは生きていけない 2. 時間がない 「サーバレスしかなかった」が真実
  24. 24. お金の話 利用者数・時間 ¥ オンプレミス クラウド サーバーレス サーバレスは 使った分だけ課金。 利用者数、時間に比例して大きくなる。
  25. 25. お金の話 2015 2016 AP Node.js 2台(2core/4GB) - DB MongoDB 2台 (4core/16GB/SSD) RealtimeDB 20GB Storage 1TB 1TB Network 1.1TB/month 1.1TB/month 料金 201,789円/月 43,909円/月 +運用の人
  26. 26. お金の話 2015 2016 iOS 1〜2人 3人 WebAPI 1人 1人 DB 1人 0人 インフラ構築 1〜3人 0人 合計 7人 4人 43,909円/月フルスタック デベロッパー 人数が多く、 コミュニケーションパス が多い サーバレスで自由度を制限し 重要な領域にフォーカス
  27. 27. 時間の話 2015 2016 iOSアプリ Objective-C 54,051行 Swift 20,864行 ※プラットフォーム部分 8,790行 0行 サーバー実装 Node.js 63,873行 Java(Heroku) 13,304行 ※プラットフォーム部分 29,816行 0行 43,909円/月※プラットフォーム部分 通信、データ管理、検索エンジン、通知、ファイル管理、 オートスケール、ロギング、インフラ自動構築など 行数で見る
  28. 28. Firebaseとは 数百万ユーザ にリアルタイム 同期 Googleに買収されたmBaas AWS/Azure/Firebase/Herokuで簡単なアプリを作成 →Firebaseがずば抜けて完成度高かった WebSoclet + ローカルストレージ データ同期層 + CoreData + Realm
  29. 29. 通知通知1 同期 内部API 認証(OAuth2) API over VPN Messaging API Webhook API 実行環境単位でデプロイ →厳密には サーバレスではない 知話輪のアーキテクチャ
  30. 30. うまい話には裏がある 1. テーブルの結合ができない ⇒ データの更新をトリガーに結合した状態を生成 2. 組み合わせ条件での絞込ができない ⇒ 複雑なものはHeroku上で実装 ⇒ 簡単なものはアプリ内で実装 ⇒ Search Engine as a Serviceを活用
  31. 31. うまい話には裏がある 3. オブジェクトの差分更新ができない ⇒ 更新前のデータを保持して、全体を構築してから更 新 4. IE8ではSDKが動かない ⇒ 時代が追いつくのを待つ
  32. 32. 使ってみてわかったこと
  33. 33. 1. スケーラブルで安定している 自前でWebSocketで同期するストレージを構築 しようとすると・・・考えたくもない。 通信に失敗した場合のリカバリ、再同期も含め てSDKで実装されている。 スケーラブル
  34. 34. 2. パフォーマンスも良好 数10ms単位
  35. 35. 3. ユーザー数が少ないうちは安い 利用者がある程度増えても、数十万人まで ならサーバー立てるより安い。
  36. 36. 4. SDKが便利 認証(パスワード、Google、Facebook、Twitter、GitHub、カスタム) 権限制御 トランザクションが一応考慮されている いろいろ便利機能がある
  37. 37. まとめ 1. 金がない 3. 興味のままでは生きていけない 2. 時間がない 「なんとかなる」 資本がなくてもササッと動かせるものが 簡単にできるようになってきた。 SI業界に広めていき、世の中全体が作ってみよう! という方向へ行けたら嬉しい。
  38. 38. 東京・広島・沖縄でエンジニア募集中 ドリーム・アーツ 採用 検索

×