memo 新サービスをゼロから開発してローンチするのに大切だった3つのこと #ScalaMatsuri
新しいサービスをローンチするために大切なこと3つ
history
- アーキテクチャ
- 実装
進行
rewriteモジュール
- ユーザーIDを探している間ずっとブロッキングしている
- シンプルに動くサービスを作る
- どういう仕組みになっているのか
- システムは複雑になっていく
- 対策としての分割統治
- 複雑なコードを管理する
- 分解してそれぞれの機能を関数として呼び出す 抽象化
- サービスは関数呼び出しとして書ける
- レスポンスの問題
- 呼び出しをしてもすぐには返ってこない
- 非同期処理で待ち時間が入る
- Future[+A]
- Optionのときは.mapをつかえる
- 非同期処理をしやすい
- 処理が成功したら次へ、失敗したら待つ という処理が可能になる
- userを受け取る profileを返す
things we need
mono repo
- scala fileのコンパイル
- 依存関係の解決
thriftサーバ
methos/aurora
- エンジニアは動くものを作らないといけない
マネージャーは作りたいものを作る
重要なのは上から下まで全部作る
- 良い推測を立てて繋いでみて実際に動くものをつくること
- naming dtab
- zookeeper
https://twitter.github.io/finagle/guide/Names.html
- マネージャーとエンジニア 設計
- デザイナーとエンジニア 実装
- エンジニアとエンジニア コードを読むこと mono repo重要
- ドキュメントを書くより良い名前をつけるほうがいい
- ツイートできないほど長い名前
- GETなのになかで変更を行う処理はやめようね
- 正しいインターフェイス
- サービスが分かれている
- downstream/upstream
まとめ
- プロマネとのやりとり
- 動くものをまず作る
- デザイナとのやりとり
- 内部状態を管理する
- エンジニアとのやりとり
- コードを読むこと