SlideShare a Scribd company logo
1 of 72
Download to read offline
社内システムの
構造と設計、実装のはなし
Developers Summit 2014 [13-B-3] #devsumiE
2014/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, ...
HTTP

SOAP, 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 simple
makes our own environments
better than before.
let’s do with your own systems!

14年2月13日木曜日

More Related Content

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

バージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスバージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスYuji Tokuda
 
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome Appcivic Sasaki
 
nanapiにおける継続的インテグレーション
nanapiにおける継続的インテグレーションnanapiにおける継続的インテグレーション
nanapiにおける継続的インテグレーション晃 遠山
 
WordCamp Tokyo 2014
WordCamp Tokyo 2014WordCamp Tokyo 2014
WordCamp Tokyo 2014horike37
 
データビジュアライゼーションもくもく会
データビジュアライゼーションもくもく会データビジュアライゼーションもくもく会
データビジュアライゼーションもくもく会dsuke Takaoka
 
Batch processing and Stream processing by SQL
Batch processing and Stream processing by SQLBatch processing and Stream processing by SQL
Batch processing and Stream processing by SQLSATOSHI TAGOMORI
 
はじめてがアジャイル
はじめてがアジャイルはじめてがアジャイル
はじめてがアジャイルKenichi Takahashi
 
運用とデータ分析の遠くて近い関係、ISUCONを添えて
運用とデータ分析の遠くて近い関係、ISUCONを添えて運用とデータ分析の遠くて近い関係、ISUCONを添えて
運用とデータ分析の遠くて近い関係、ISUCONを添えてSATOSHI TAGOMORI
 
インストールどうしてますか
インストールどうしてますかインストールどうしてますか
インストールどうしてますかHirohisa Yamaguchi
 
Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)openrtm
 
オールアバウトの DevOpsと リリースフロー
オールアバウトのDevOpsとリリースフローオールアバウトのDevOpsとリリースフロー
オールアバウトの DevOpsと リリースフローKazuto Ohara
 
Parse.comからの脱出
Parse.comからの脱出Parse.comからの脱出
Parse.comからの脱出Muta Yutaro
 
J-AMS 勉強会 その1(AWS)
J-AMS 勉強会 その1(AWS)J-AMS 勉強会 その1(AWS)
J-AMS 勉強会 その1(AWS)Hiroyuki Kiyomizu
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみましたYoshiyuki MIYAGI
 

Similar to 社内システムの構造と設計、実装のはなし (20)

バージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスバージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティス
 
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome App
 
Sacss sp5
Sacss sp5Sacss sp5
Sacss sp5
 
nanapiにおける継続的インテグレーション
nanapiにおける継続的インテグレーションnanapiにおける継続的インテグレーション
nanapiにおける継続的インテグレーション
 
WordCamp Tokyo 2014
WordCamp Tokyo 2014WordCamp Tokyo 2014
WordCamp Tokyo 2014
 
データビジュアライゼーションもくもく会
データビジュアライゼーションもくもく会データビジュアライゼーションもくもく会
データビジュアライゼーションもくもく会
 
TFSの導入提案
TFSの導入提案TFSの導入提案
TFSの導入提案
 
Batch processing and Stream processing by SQL
Batch processing and Stream processing by SQLBatch processing and Stream processing by SQL
Batch processing and Stream processing by SQL
 
はじめてがアジャイル
はじめてがアジャイルはじめてがアジャイル
はじめてがアジャイル
 
Opencampus
OpencampusOpencampus
Opencampus
 
ios_startup
ios_startupios_startup
ios_startup
 
運用とデータ分析の遠くて近い関係、ISUCONを添えて
運用とデータ分析の遠くて近い関係、ISUCONを添えて運用とデータ分析の遠くて近い関係、ISUCONを添えて
運用とデータ分析の遠くて近い関係、ISUCONを添えて
 
2014年AWS展望
2014年AWS展望2014年AWS展望
2014年AWS展望
 
インストールどうしてますか
インストールどうしてますかインストールどうしてますか
インストールどうしてますか
 
Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)
 
GAEの紹介
GAEの紹介GAEの紹介
GAEの紹介
 
オールアバウトの DevOpsと リリースフロー
オールアバウトのDevOpsとリリースフローオールアバウトのDevOpsとリリースフロー
オールアバウトの DevOpsと リリースフロー
 
Parse.comからの脱出
Parse.comからの脱出Parse.comからの脱出
Parse.comからの脱出
 
J-AMS 勉強会 その1(AWS)
J-AMS 勉強会 その1(AWS)J-AMS 勉強会 その1(AWS)
J-AMS 勉強会 その1(AWS)
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
 

More from SATOSHI TAGOMORI

Ractor's speed is not light-speed
Ractor's speed is not light-speedRactor's speed is not light-speed
Ractor's speed is not light-speedSATOSHI TAGOMORI
 
Good Things and Hard Things of SaaS Development/Operations
Good Things and Hard Things of SaaS Development/OperationsGood Things and Hard Things of SaaS Development/Operations
Good Things and Hard Things of SaaS Development/OperationsSATOSHI TAGOMORI
 
Invitation to the dark side of Ruby
Invitation to the dark side of RubyInvitation to the dark side of Ruby
Invitation to the dark side of RubySATOSHI TAGOMORI
 
Hijacking Ruby Syntax in Ruby (RubyConf 2018)
Hijacking Ruby Syntax in Ruby (RubyConf 2018)Hijacking Ruby Syntax in Ruby (RubyConf 2018)
Hijacking Ruby Syntax in Ruby (RubyConf 2018)SATOSHI TAGOMORI
 
Make Your Ruby Script Confusing
Make Your Ruby Script ConfusingMake Your Ruby Script Confusing
Make Your Ruby Script ConfusingSATOSHI TAGOMORI
 
Hijacking Ruby Syntax in Ruby
Hijacking Ruby Syntax in RubyHijacking Ruby Syntax in Ruby
Hijacking Ruby Syntax in RubySATOSHI TAGOMORI
 
Lock, Concurrency and Throughput of Exclusive Operations
Lock, Concurrency and Throughput of Exclusive OperationsLock, Concurrency and Throughput of Exclusive Operations
Lock, Concurrency and Throughput of Exclusive OperationsSATOSHI TAGOMORI
 
Data Processing and Ruby in the World
Data Processing and Ruby in the WorldData Processing and Ruby in the World
Data Processing and Ruby in the WorldSATOSHI TAGOMORI
 
Planet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: BigdamPlanet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: BigdamSATOSHI TAGOMORI
 
Technologies, Data Analytics Service and Enterprise Business
Technologies, Data Analytics Service and Enterprise BusinessTechnologies, Data Analytics Service and Enterprise Business
Technologies, Data Analytics Service and Enterprise BusinessSATOSHI TAGOMORI
 
Ruby and Distributed Storage Systems
Ruby and Distributed Storage SystemsRuby and Distributed Storage Systems
Ruby and Distributed Storage SystemsSATOSHI TAGOMORI
 
Perfect Norikra 2nd Season
Perfect Norikra 2nd SeasonPerfect Norikra 2nd Season
Perfect Norikra 2nd SeasonSATOSHI TAGOMORI
 
To Have Own Data Analytics Platform, Or NOT To
To Have Own Data Analytics Platform, Or NOT ToTo Have Own Data Analytics Platform, Or NOT To
To Have Own Data Analytics Platform, Or NOT ToSATOSHI TAGOMORI
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersSATOSHI TAGOMORI
 
How To Write Middleware In Ruby
How To Write Middleware In RubyHow To Write Middleware In Ruby
How To Write Middleware In RubySATOSHI TAGOMORI
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldSATOSHI TAGOMORI
 
Open Source Software, Distributed Systems, Database as a Cloud Service
Open Source Software, Distributed Systems, Database as a Cloud ServiceOpen Source Software, Distributed Systems, Database as a Cloud Service
Open Source Software, Distributed Systems, Database as a Cloud ServiceSATOSHI TAGOMORI
 
Fluentd Overview, Now and Then
Fluentd Overview, Now and ThenFluentd Overview, Now and Then
Fluentd Overview, Now and ThenSATOSHI TAGOMORI
 

More from SATOSHI TAGOMORI (20)

Ractor's speed is not light-speed
Ractor's speed is not light-speedRactor's speed is not light-speed
Ractor's speed is not light-speed
 
Good Things and Hard Things of SaaS Development/Operations
Good Things and Hard Things of SaaS Development/OperationsGood Things and Hard Things of SaaS Development/Operations
Good Things and Hard Things of SaaS Development/Operations
 
Maccro Strikes Back
Maccro Strikes BackMaccro Strikes Back
Maccro Strikes Back
 
Invitation to the dark side of Ruby
Invitation to the dark side of RubyInvitation to the dark side of Ruby
Invitation to the dark side of Ruby
 
Hijacking Ruby Syntax in Ruby (RubyConf 2018)
Hijacking Ruby Syntax in Ruby (RubyConf 2018)Hijacking Ruby Syntax in Ruby (RubyConf 2018)
Hijacking Ruby Syntax in Ruby (RubyConf 2018)
 
Make Your Ruby Script Confusing
Make Your Ruby Script ConfusingMake Your Ruby Script Confusing
Make Your Ruby Script Confusing
 
Hijacking Ruby Syntax in Ruby
Hijacking Ruby Syntax in RubyHijacking Ruby Syntax in Ruby
Hijacking Ruby Syntax in Ruby
 
Lock, Concurrency and Throughput of Exclusive Operations
Lock, Concurrency and Throughput of Exclusive OperationsLock, Concurrency and Throughput of Exclusive Operations
Lock, Concurrency and Throughput of Exclusive Operations
 
Data Processing and Ruby in the World
Data Processing and Ruby in the WorldData Processing and Ruby in the World
Data Processing and Ruby in the World
 
Planet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: BigdamPlanet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: Bigdam
 
Technologies, Data Analytics Service and Enterprise Business
Technologies, Data Analytics Service and Enterprise BusinessTechnologies, Data Analytics Service and Enterprise Business
Technologies, Data Analytics Service and Enterprise Business
 
Ruby and Distributed Storage Systems
Ruby and Distributed Storage SystemsRuby and Distributed Storage Systems
Ruby and Distributed Storage Systems
 
Perfect Norikra 2nd Season
Perfect Norikra 2nd SeasonPerfect Norikra 2nd Season
Perfect Norikra 2nd Season
 
Fluentd 101
Fluentd 101Fluentd 101
Fluentd 101
 
To Have Own Data Analytics Platform, Or NOT To
To Have Own Data Analytics Platform, Or NOT ToTo Have Own Data Analytics Platform, Or NOT To
To Have Own Data Analytics Platform, Or NOT To
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and Containers
 
How To Write Middleware In Ruby
How To Write Middleware In RubyHow To Write Middleware In Ruby
How To Write Middleware In Ruby
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real World
 
Open Source Software, Distributed Systems, Database as a Cloud Service
Open Source Software, Distributed Systems, Database as a Cloud ServiceOpen Source Software, Distributed Systems, Database as a Cloud Service
Open Source Software, Distributed Systems, Database as a Cloud Service
 
Fluentd Overview, Now and Then
Fluentd Overview, Now and ThenFluentd Overview, Now and Then
Fluentd Overview, Now and Then
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

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