yahoo! japanのサービス開発を10倍早くした社内paas構築の今とこれから
TRANSCRIPT
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
窪野 安彦
2017年2月16日
ヤフーのサービス開発を
10倍早くした社内PaaS構築の今と
これから
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
自己紹介
1
窪野 安彦
・システム統括本部プラットフォーム開発本部所属(サービスの基盤となるようなシステムを担当)
・2004年入社(当時はC言語でゴリゴリに書いてました)
・※Cloud Foundry®の環境構築と社内導入を行っています。
※Cloud Foundryは、Cloud Foundry, Incの登録商標です。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
2
何故PaaSを導入したのか?
どんな風に使っているのか?• 具体的な使い方• デモ
PaaSの先にあるもの
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
10年前の開発で使われていたもの
アーキテクチャ• Apache + apache_module + 独自template
開発ツール• emacs + gcc + gmake & Jail
• CVS
パイプライン・デプロイ• CI等は特になし
• デプロイは、scp *.so & apache restart
4
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
現在の開発で使われているもの
アーキテクチャ• OpenStack + LAMP + KVS + ・・・
開発ツール• OpenStack + phpstorm とかのIDE・・・
• GHE
パイプライン・デプロイ• CI/CD
• 独自パッケージシステム
• 等
6
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
我々の課題
7
使う道具は変わったけど思想(≒アーキテクチャ)が
進化してない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
あるサービスの例
9
FTP CP
社外RDBMS
WEB
API
BatchCache
SCP
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
よくある課題
11
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Cronがこけてbatchが止まる
12
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
キャッシュファイルのscpに失敗する
13
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アクセスが増えてサーバの増設が必要になる
14
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 15
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
もっと手間がかからないようにできないか?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
例えば
17
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
夜中にこけるバッチ
18
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
夜中にこけるバッチ
19
FTP CP
社外
WEB
API
Batch
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
cronをやめてMQとかFaaSにする
20
FTP CP
社外
WEB
API
SCP
※FaaS = Function as a Service
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
もっと手間がかからなくなるかも
21
FTP CP
社外
WEB
API
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
キャッシュのscpに失敗する
22
FTP CP
社外
WEB
API
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
キャッシュのscpに失敗する
23
FTP CP
社外
WEB
API
SCP
RDBMSCache
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
キャッシュファイルはやめてKVSを立てる
24
FTP CP
社外
WEB
API
RDBMSKVS
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
もうscpで失敗しません
25
FTP CP
社外
WEB
API
RDBMSKVS
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
サーバの増設が必要になったら?
26
FTP CP
社外
WEB
API
KVS RDBMS
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
サーバの増設が必要になったら?
27
FTP CP
社外
WEB
API
RDBMSKVS
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
FaaSMQ
ここには新しい技術が必要だった
28
FTP CP
社外
WEB
API
RDBMSKVS
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
膨大なサーバ群
31
物理、仮想サーバの合計
10万台以上
※弊社独自の調査 2015年6月時点
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
お客様のデータを守るために
32
~膨大なサーバのソフトウエア更新~
・リリース作業・脆弱性対応・ソフトウェアバージョンアップ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
あるプロジェクトの例
34
プログラム開発
担当エンジニア
バージョンアップ・セキュリティ対応
あるプロジェクトのサーバ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
57
PaaS=Platform as a Service
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
58
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
59
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
IPアドレスを用意する
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
60
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
サーバをラッキングする
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
61
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
OSをインストール
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
62
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
WEBサーバをインストール
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
63
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
PHPをインストール
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
64
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
プログラムをデプロイ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
65
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
以前は全部やっていましたが
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
66
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
最近はここだけやるのが主流
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaSとは?
67
物理サーバ IaaS PaaS(CF)
アプリケーション ◯ ◯ ◯
ランタイム ◯ ◯ ☓
ミドルウェア ◯ ◯ ☓
OS ◯ ☓ ☓
ハードウェア ◯ ☓ ☓
ネットワーク ◯ ☓ ☓
サービス開発エンジニアがアプリケーション開発に
集中できるようになる!!!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 68
Cloud Foundry®とは?
※Cloud Foundryは、Cloud Foundry, Incの登録商標です。
Cloud Foundryとは?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 69
オープンソースのPaaSプラットフォーム
• 多くのベンダーで採用Cloud Foundryベースのプロダクトなので、他プラットフォームのノウハウも参考にできる
• 動作環境を選ばない複数のIaaS(OpenStackなど)や仮想化基盤を利用できる
• 拡張性が高い好みの開発言語やデータベースなどを追加・拡張して独自のPaaSとしてカスタマイズしやすい
Cloud Foundryとは?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
プログラムをデプロイするだけでサーバを構築してくれる
71
cf push {アプリケーション名} {オプション}
{アプリケーション名}:開発者がデプロイするアプリを一意に認識
-n:ホスト名(例. hoge)
-d:ドメイン(例. example.co.jp)
実行URLはオプションで指定した “ホスト名” + “ドメイン” となる
hoge.example.co.jp
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
CF
Droplet
何が起こっているのか?
72
Droplet
Container
OS
pushRuntime
Application
Extension
App
xxx.yahoo.co.jp
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
デモ1
73
Cloud Foundryを使ったアプリケーションの
デプロイ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
デモ1 - 1:アプリケーションのデプロイ
74
必要な物はソースコードと
設定ファイルのみ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
デモ1 - 2:PHPのバージョンを上げてみる
75
変更箇所は設定ファイルのみ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
自己紹介
76
田口 雅浩
・CTO室SWATチームに所属
(社内の技術的な課題解決のため、様々なサービスや
基盤システムをサポート)
・2007年新卒入社、ヤフオク!開発を経て、SWATへ
・現在ではPaaSの導入に向けて、CI/CDのサポート
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
CI/CDはどうしよう?
79
CFと相性が良さそうなものモダンな開発手法に合ったもの
パイプラインが見える化されてるYAMLでパイプラインが書ける
前提条件
Concourseのメリット
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
パイプラインの構成要素
81
パイプラインは「Tasks」「Resources」「Jobs」の3要素で構成されています。
ResourceJob
Resource入力 出力
• Task• Task
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Concourse CF
Concourseを使ったパイプラインデモ
83
check test deploy
notification xxx.yahoo.co.jp
commit
GHE
MYM
push
MYM
message
CF
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
PaaS導入の旅
86
2016年先行サービス
2017年本格導入
2018年拡大
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
とにかくサービスが沢山ある
87
増え続けてきたサービス100以上 (2016年9月末時点)
開発言語の違いC、Perl、C++、PHP、Node.js、Java...
素材提供:アフロ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
それぞれアーキテクチャも違う
88
例)新規サービス等 例)コマース系サービス等
小規模サービス 大規模サービス
API
Gate
way
sear
ch
list
cart
logic
logic
logic
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
共通のアーキテクチャを全社展開するのは難しい
89
素材提供:アフロ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
組織毎に対応策を見つける
90
組織内エバンジェリスト(非公式)今のところ20人ぐらい
それぞれの組織・サービスに合った導入方法を進めている
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
推進体制イメージ
91
現場エンジニア
組織内エバンジェリスト
社内推進 プロジェクト
ショッピング担当
ショッピングエンジニア
ショッピングエンジニア
オークション担当
オークションエンジニア
メディア担当
メディアエンジニア
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
今までは独自技術で開発スピードアップをしていた
92
・検索エンジン・フラットファイルDB・プロセス間通信技術・パッケージ管理
素材提供:アフロ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
既存システムとの連携が必要
94
app2app1
FE API
etc
KVS
DB
API Gateway
独自技術 独自技術 独自技術独自技術
システムログアプリケーションログ
routerProx
y
MQ FaaS
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
最終的に
99
お客様に付加価値を届けるスピードを
「10倍」にしていきたい
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
まとめ
101
何故PaaSを導入したのか?• 付加価値の高い開発に集中するため
どんな風に使っているのか?• CF• Concourse
PaaSの先にあるもの• 社内普及・既存機能との融合• 開発手法のバージョンアップ