yahoo! japanのサービス開発を10倍早くした社内paas構築の今とこれから

104
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 窪野 安彦 2017年2月16日 ヤフーのサービス開発を 10倍早くした社内PaaS構築の今と これから

Upload: yahoo

Post on 19-Mar-2017

2.989 views

Category:

Technology


0 download

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 .

何故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 .

10年前の思想

5

コンピュータは貴重なリソース頑張るのは人

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 .

問題点

8

あるサービスの例

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 .

問題点

10

よくある課題

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 .

問題点

16

例えば

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 .

問題点

29

まだ他にも課題がある

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

問題

30

バージョンアップとかセキュリティ対応が

多すぎる問題

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 .

問題

33

あるプロジェクトの例

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

あるプロジェクトの例

34

プログラム開発

担当エンジニア

バージョンアップ・セキュリティ対応

あるプロジェクトのサーバ

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

エンジニアが少ないと毎月の対応が大変

35

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

そのうち機能追加や改修もできなくなる

36

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

担当エンジニアがテンパる

37

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

問題

38

そこで

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

担当を分けてみる

39

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

専任がいれば分業できるので

40

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

本来やりたかった開発に集中できる

41

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 42

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 43

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

問題点

44

ただし社内の全チームでそれができるわけではない

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

よくある課題

45

そこで

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ヤフーには沢山のサービスがある

46

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

多くのサービスで問題が起こっている

47

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

それぞれのサポートをしてあげたいけど

48

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

現実的には厳しい

49

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

そこでまとめて面倒を見ることができれば?

50

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Nice

51

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 52

ここでPaaSの出番!!!

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 53

次から具体的な使い方の説明をします。

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

どんな風に使っているのか?

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 55

まずは

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 56

PaaSとは?

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 . 70

なにが嬉しいのか?

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 . 77

デモ1

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 78

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 . 80

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 .

デモ 2

82

Concourseを使ったパイプラインのデモ

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 . 84

デモ2

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

PaaSの先にあるもの

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 .

独自技術の多くは簡単にはCFで動かない

93

写真:アフロ

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 . 95

PaaSを構築してからもやることが沢山ある

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 96

さらに

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 97

PaaSはあくまでも道具使い方はもっと重要

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

開発手法との融合が必要

98

写真:アフロ

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

最終的に

99

お客様に付加価値を届けるスピードを

「10倍」にしていきたい

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

まとめ

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

まとめ

101

何故PaaSを導入したのか?• 付加価値の高い開発に集中するため

どんな風に使っているのか?• CF• Concourse

PaaSの先にあるもの• 社内普及・既存機能との融合• 開発手法のバージョンアップ

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved . 102

ご清聴ありがとうございました

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .