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