Google App Engine で
ChatOps やっていき
高浪 悟 (@storz)
ChatOps してますか?
今更?
誰?
● Satoru Takanami
● @storz
○ GitHub
○ SoundCloud
● Software Engineer / Musician
● 株式会社ソウゾウ 所属
○ メルカリ カウル
● Slack を Enter で改行する Chrome 拡張
入社初日
< ChatOps やっていきで
はい >
Move Fast
(ソウゾウのバリュー)
これまでのリリースフロー
1. GitHub上で新バージョンの Release を作成
2. Release 作成をフックして CI & デプロイ
3. GAE のコンソールを開く
4. 新バージョンを選択し Migrate Traffic
○ たまに Refresh を押しながら待つ
5. 4 を複数 Service ぶん繰り返す
一族
osamingo kaurungo
構成
Kauru API
App Engine
Kauru BOT
App Engine
Deploy
Run CI
Send event
Post
message
Create
Release&Tag
Migrate Traffic /
Call API /
Health check
Task
Queues
ChatOps を導入すること
● Pros
○ 手動作業・属人性の排除
○ リリースの状況が追いやすい
○ サービスに愛着が湧く
● Cons
○ 権限管理が煩雑になりがち
ChatOps の環境に GAE を使うこと
● Pros
○ GAE の API 実行が楽
■ 同じ Project で動いていたら認証情報を持たせなくていい
● Cons
○ Realtime Messaging API が利用できない
○ urlfetch: DEADLINE_EXCEEDED
■ Basic scaling/Manual scaling にしよう
○ go-github が動かない
■ Go 1.8 の対応で動くようになりそう
スライド作り終えてから Go の話が
さっきの所しかないことに気付きました
気をつけたいこと
● 反応はすぐ返す
● 案件のコードと切り離す
○ 安全性・汎用性の確保
● (GAE の場合) とりあえず TaskQueue に積む
○ Slack の 3 秒ルール
○ 冪等性の保証
● Help / Usage を出す
Feature in the future
● 入力をいい感じにする
○ Interactive Messages
■ GolangでSlack Interactive Messageを使ったBotを書く - Mercari Engineering Blog
○ API.AI
● 汎用的な機能と案件固有の機能を切り分ける
○ コードベース
○ GCP の Service
ご清聴ありがとうございました

Google App Engine で ChatOps やっていき