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