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

Preview:

DESCRIPTION

Developers Summit 2014 13-B-3

Citation preview

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

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

@tagomoris (TAGOMORI Satoshi)

14年2月13日木曜日

TAGOMORI Satoshi (@tagomoris)LINE Corp.

Development Support Team

14年2月13日木曜日

14年2月13日木曜日

14年2月13日木曜日

DevOps

14年2月13日木曜日

DevOps×

14年2月13日木曜日

Dev of Ops, by Ops, for Ops

14年2月13日木曜日

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

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

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

14年2月13日木曜日

Webサービス今昔

14年2月13日木曜日

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

14年2月13日木曜日

OAuth流行、支配的に

14年2月13日木曜日

WebAPI制限

14年2月13日木曜日

Open Web API

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

14年2月13日木曜日

Open Web API

コストは誰が払う?

14年2月13日木曜日

Open Web API

互換性

14年2月13日木曜日

14年2月13日木曜日

社内システム: Closed Web

14年2月13日木曜日

社内システム: Closed Web

機能 > 性能

14年2月13日木曜日

社内システム: Closed Web

Long Life Cycle

14年2月13日木曜日

社内システム: Closed Web

Target User: 自分

14年2月13日木曜日

機能

認証

資産管理

動作状況モニタリング

データ蓄積

可視化

情報共有

プロトコル変換

便利UI提供

バージョン管理

14年2月13日木曜日

何が問題なの?

14年2月13日木曜日

情報と権限の分断

14年2月13日木曜日

情報と機能の冗長化

14年2月13日木曜日

UXの欠如

14年2月13日木曜日

自動化の障壁

14年2月13日木曜日

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

14年2月13日木曜日

社内システム連携?

14年2月13日木曜日

DBを直接

14年2月13日木曜日

SOAP

14年2月13日木曜日

CORBA

14年2月13日木曜日

SOA!

14年2月13日木曜日

RPC Protocols

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

...

14年2月13日木曜日

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

14年2月13日木曜日

権限分断を最小限に

14年2月13日木曜日

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

14年2月13日木曜日

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

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

14年2月13日木曜日

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

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

14年2月13日木曜日

Closed Web API

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

14年2月13日木曜日

Closed Web API

コストは誰が払う?

14年2月13日木曜日

Closed Web API

互換性

14年2月13日木曜日

API互換性

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

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

14年2月13日木曜日

Protocols of Closed Web API

14年2月13日木曜日

Thrift, Protocol Buffers(IDL)

FTP, RSH, SSH, ...

HTTPSOAP, XML-RPC, ...

JSON

14年2月13日木曜日

長期運用

14年2月13日木曜日

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

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

14年2月13日木曜日

アップデートの容易さ

14年2月13日木曜日

データ内容の把握

見ればわかる! だいじ!

14年2月13日木曜日

テストの容易さ

curl is great

14年2月13日木曜日

百聞は一見に如かず

1 times curl >>> 100pages docs

ease to try >>> performance

loosely coupled >>> strict protocol

14年2月13日木曜日

2.社内システムでは

HTTP JSON API を使おう

14年2月13日木曜日

実装

14年2月13日木曜日

社内システムの実装

14年2月13日木曜日

動くことが大事

14年2月13日木曜日

ドキュメント、大事?

14年2月13日木曜日

優先度

14年2月13日木曜日

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

14年2月13日木曜日

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

14年2月13日木曜日

優先度ハック

実装がラクなAPIをつかう

14年2月13日木曜日

優先度ハック

機能を切り刻む

14年2月13日木曜日

優先度ハック

修正単位を最小化する

14年2月13日木曜日

逆優先度ハック

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

14年2月13日木曜日

逆優先度ハック

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

14年2月13日木曜日

逆優先度ハック

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

14年2月13日木曜日

逆優先度ハック

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

14年2月13日木曜日

積極的にサボる

14年2月13日木曜日

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

14年2月13日木曜日

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

14年2月13日木曜日

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

14年2月13日木曜日

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

14年2月13日木曜日

ビジネスへのインパクト

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

14年2月13日木曜日

To make it simplemakes our own environments

better than before.

let’s do with your own systems!

14年2月13日木曜日

Recommended