72
社内システムの 構造と設計、実装のはなし Developers Summit 2014 [13-B-3] #devsumiE 2014/02/13 @tagomoris (TAGOMORI Satoshi) 14213日木曜日

社内システムの構造と設計、実装のはなし

Embed Size (px)

DESCRIPTION

Developers Summit 2014 13-B-3

Citation preview

Page 1: 社内システムの構造と設計、実装のはなし

社内システムの構造と設計、実装のはなし

Developers Summit 2014 [13-B-3] #devsumiE2014/02/13

@tagomoris (TAGOMORI Satoshi)

14年2月13日木曜日

Page 2: 社内システムの構造と設計、実装のはなし

TAGOMORI Satoshi (@tagomoris)LINE Corp.

Development Support Team

14年2月13日木曜日

Page 3: 社内システムの構造と設計、実装のはなし

14年2月13日木曜日

Page 4: 社内システムの構造と設計、実装のはなし

14年2月13日木曜日

Page 5: 社内システムの構造と設計、実装のはなし

DevOps

14年2月13日木曜日

Page 6: 社内システムの構造と設計、実装のはなし

DevOps×

14年2月13日木曜日

Page 7: 社内システムの構造と設計、実装のはなし

Dev of Ops, by Ops, for Ops

14年2月13日木曜日

Page 8: 社内システムの構造と設計、実装のはなし

社内システムほど他システムとの連携を考えよう

社内システムでは JSON API を使おう

実装は必要なところから必要なだけやろう

14年2月13日木曜日

Page 9: 社内システムの構造と設計、実装のはなし

Webサービス今昔

14年2月13日木曜日

Page 10: 社内システムの構造と設計、実装のはなし

Web2.0マッシュアップ全盛期

14年2月13日木曜日

Page 11: 社内システムの構造と設計、実装のはなし

OAuth流行、支配的に

14年2月13日木曜日

Page 12: 社内システムの構造と設計、実装のはなし

WebAPI制限

14年2月13日木曜日

Page 13: 社内システムの構造と設計、実装のはなし

Open Web API

トラフィック、レスポンスタイム

14年2月13日木曜日

Page 14: 社内システムの構造と設計、実装のはなし

Open Web API

コストは誰が払う?

14年2月13日木曜日

Page 15: 社内システムの構造と設計、実装のはなし

Open Web API

互換性

14年2月13日木曜日

Page 16: 社内システムの構造と設計、実装のはなし

14年2月13日木曜日

Page 17: 社内システムの構造と設計、実装のはなし

社内システム: Closed Web

14年2月13日木曜日

Page 18: 社内システムの構造と設計、実装のはなし

社内システム: Closed Web

機能 > 性能

14年2月13日木曜日

Page 19: 社内システムの構造と設計、実装のはなし

社内システム: Closed Web

Long Life Cycle

14年2月13日木曜日

Page 20: 社内システムの構造と設計、実装のはなし

社内システム: Closed Web

Target User: 自分

14年2月13日木曜日

Page 21: 社内システムの構造と設計、実装のはなし

機能

認証

資産管理

動作状況モニタリング

データ蓄積

可視化

情報共有

プロトコル変換

便利UI提供

バージョン管理

14年2月13日木曜日

Page 22: 社内システムの構造と設計、実装のはなし

何が問題なの?

14年2月13日木曜日

Page 23: 社内システムの構造と設計、実装のはなし

情報と権限の分断

14年2月13日木曜日

Page 24: 社内システムの構造と設計、実装のはなし

情報と機能の冗長化

14年2月13日木曜日

Page 25: 社内システムの構造と設計、実装のはなし

UXの欠如

14年2月13日木曜日

Page 26: 社内システムの構造と設計、実装のはなし

自動化の障壁

14年2月13日木曜日

Page 27: 社内システムの構造と設計、実装のはなし

全部入り: アップデート不可能

14年2月13日木曜日

Page 28: 社内システムの構造と設計、実装のはなし

社内システム連携?

14年2月13日木曜日

Page 29: 社内システムの構造と設計、実装のはなし

DBを直接

14年2月13日木曜日

Page 30: 社内システムの構造と設計、実装のはなし

SOAP

14年2月13日木曜日

Page 31: 社内システムの構造と設計、実装のはなし

CORBA

14年2月13日木曜日

Page 32: 社内システムの構造と設計、実装のはなし

SOA!

14年2月13日木曜日

Page 33: 社内システムの構造と設計、実装のはなし

RPC Protocols

Protocol Buffer, Thrift, XML-RPC, MessagePack-RPC,

...

14年2月13日木曜日

Page 34: 社内システムの構造と設計、実装のはなし

社内システム連携: Make it simple!

14年2月13日木曜日

Page 35: 社内システムの構造と設計、実装のはなし

権限分断を最小限に

14年2月13日木曜日

Page 36: 社内システムの構造と設計、実装のはなし

機能情報には複数の参照方法を

14年2月13日木曜日

Page 37: 社内システムの構造と設計、実装のはなし

モジュール化単機能システムを連携させる

アップデートが容易な状態を保つ

14年2月13日木曜日

Page 38: 社内システムの構造と設計、実装のはなし

1.社内システムほど他システムとの

連携を考えよう機能をAPIとして公開しよう

14年2月13日木曜日

Page 39: 社内システムの構造と設計、実装のはなし

Closed Web API

トラフィック、レスポンスタイム

14年2月13日木曜日

Page 40: 社内システムの構造と設計、実装のはなし

Closed Web API

コストは誰が払う?

14年2月13日木曜日

Page 41: 社内システムの構造と設計、実装のはなし

Closed Web API

互換性

14年2月13日木曜日

Page 42: 社内システムの構造と設計、実装のはなし

API互換性

プロトコルデータ構造意味の一貫性

クライアント要件の不変性/普遍性

14年2月13日木曜日

Page 43: 社内システムの構造と設計、実装のはなし

Protocols of Closed Web API

14年2月13日木曜日

Page 44: 社内システムの構造と設計、実装のはなし

Thrift, Protocol Buffers(IDL)

FTP, RSH, SSH, ...

HTTPSOAP, XML-RPC, ...

JSON

14年2月13日木曜日

Page 45: 社内システムの構造と設計、実装のはなし

長期運用

14年2月13日木曜日

Page 46: 社内システムの構造と設計、実装のはなし

長期運用するということは

きちんとアップデートするということ

14年2月13日木曜日

Page 47: 社内システムの構造と設計、実装のはなし

アップデートの容易さ

14年2月13日木曜日

Page 48: 社内システムの構造と設計、実装のはなし

データ内容の把握

見ればわかる! だいじ!

14年2月13日木曜日

Page 49: 社内システムの構造と設計、実装のはなし

テストの容易さ

curl is great

14年2月13日木曜日

Page 50: 社内システムの構造と設計、実装のはなし

百聞は一見に如かず

1 times curl >>> 100pages docs

ease to try >>> performance

loosely coupled >>> strict protocol

14年2月13日木曜日

Page 51: 社内システムの構造と設計、実装のはなし

2.社内システムでは

HTTP JSON API を使おう

14年2月13日木曜日

Page 52: 社内システムの構造と設計、実装のはなし

実装

14年2月13日木曜日

Page 53: 社内システムの構造と設計、実装のはなし

社内システムの実装

14年2月13日木曜日

Page 54: 社内システムの構造と設計、実装のはなし

動くことが大事

14年2月13日木曜日

Page 55: 社内システムの構造と設計、実装のはなし

ドキュメント、大事?

14年2月13日木曜日

Page 56: 社内システムの構造と設計、実装のはなし

優先度

14年2月13日木曜日

Page 57: 社内システムの構造と設計、実装のはなし

× 「こんなこともあろうかと」

14年2月13日木曜日

Page 58: 社内システムの構造と設計、実装のはなし

「いま」欲しい機能をつくる

14年2月13日木曜日

Page 59: 社内システムの構造と設計、実装のはなし

優先度ハック

実装がラクなAPIをつかう

14年2月13日木曜日

Page 60: 社内システムの構造と設計、実装のはなし

優先度ハック

機能を切り刻む

14年2月13日木曜日

Page 61: 社内システムの構造と設計、実装のはなし

優先度ハック

修正単位を最小化する

14年2月13日木曜日

Page 62: 社内システムの構造と設計、実装のはなし

逆優先度ハック

切り刻まれた細かい機能追加タスク

14年2月13日木曜日

Page 63: 社内システムの構造と設計、実装のはなし

逆優先度ハック

今いらないなら後でやればいいのでは?だっていつでもできるでしょ?

14年2月13日木曜日

Page 64: 社内システムの構造と設計、実装のはなし

逆優先度ハック

後でやればいいなら今後何が必要かをいま考えなくていい

14年2月13日木曜日

Page 65: 社内システムの構造と設計、実装のはなし

逆優先度ハック

(将来の)要件定義は難しいだから後回しにしようよ

14年2月13日木曜日

Page 66: 社内システムの構造と設計、実装のはなし

積極的にサボる

14年2月13日木曜日

Page 67: 社内システムの構造と設計、実装のはなし

3.実装は必要なところから必要なだけやろう

14年2月13日木曜日

Page 68: 社内システムの構造と設計、実装のはなし

アーキテクチャと開発・運用

14年2月13日木曜日

Page 69: 社内システムの構造と設計、実装のはなし

アーキテクチャの割り切りが開発・運用を加速する

14年2月13日木曜日

Page 70: 社内システムの構造と設計、実装のはなし

開発・運用の前提がアーキテクチャをシンプルにする

14年2月13日木曜日

Page 71: 社内システムの構造と設計、実装のはなし

ビジネスへのインパクト

社内システムほど試しやすい場はない顧客は自分

14年2月13日木曜日

Page 72: 社内システムの構造と設計、実装のはなし

To make it simplemakes our own environments

better than before.

let’s do with your own systems!

14年2月13日木曜日