yahoo! japanのcloud foundry導入状況

32
2016年11月15日 ヤフー株式会社 窪野 安彦 Yahoo! JAPANの Cloud Foundry導入状況

Upload: yahoo

Post on 09-Jan-2017

693 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Yahoo! JAPANのCloud Foundry導入状況

2016年11月15日

ヤフー株式会社 窪野 安彦

Yahoo! JAPANの

Cloud Foundry導入状況

Page 2: Yahoo! JAPANのCloud Foundry導入状況

自己紹介

1

窪野 安彦

・システム統括本部プラットフォーム開発本部所属(サービスの基盤となるようなシステムを担当)

・2004年入社(当時はC言語でゴリゴリに書いてました)

・Cloud Foundryの環境構築と社内導入支援を行っています。

Page 3: Yahoo! JAPANのCloud Foundry導入状況

今日の内容

2

・どんな風に導入しているか?・進め方(組織の話)・進め方(技術的な話)・課題(たくさんあるうちの一つ)・10倍開発するためのCI/CD・まとめ

Page 4: Yahoo! JAPANのCloud Foundry導入状況

Yahoo! JAPANの紹介

月間ページビュー698億※1

アプリ累計ダウンロード数3億8000万以上※2

月間アクティブユーザーID数3430万※3

1日あたりユニークブラウザー数9000万※1

サービス数100以上※4

※1. 2016年度4月~6月平均)

※2. (2016年3月末時点)※出典:App Annie 2015年アプリ市場総括レポート

※3. 2016年6月末時点)

※4. 2016年9月末時点)

3

Page 5: Yahoo! JAPANのCloud Foundry導入状況

どんな風に導入しようとし

ている?

Page 6: Yahoo! JAPANのCloud Foundry導入状況

なぜCloud Foundryを導入したのか?

「10倍」開発したい

5

Page 7: Yahoo! JAPANのCloud Foundry導入状況

Cloud Foundry導入の旅

6

2016年先行サービス

2017年本格導入

2018年拡大

Page 8: Yahoo! JAPANのCloud Foundry導入状況

使っている環境

・Cloud FoundryDiegoでBuildpackを使用、php/java/node/go等

・concourse 2.4・GitHub Enterprise・MYM(slackのような社内ツール)・JIRA

7

Page 9: Yahoo! JAPANのCloud Foundry導入状況

初期クラスタ構成

開発用クラスタOpenStack 100 VMsを用意CFだと712 instances 629 apps in 74 orgsが稼働中

本番環境用クラスタOpenStack 200 VMsを用意CFだと344 instances 46 apps in 9 orgsが稼働中※先行サービスにて実績を作っている段階のため、本番サービス導入は少ない状況

もう1クラスタ別IDCに構築中、その後も順次増設予定

8

Page 10: Yahoo! JAPANのCloud Foundry導入状況

進め方(組織の話)

Page 11: Yahoo! JAPANのCloud Foundry導入状況

とにかくサービスが沢山ある

増え続けるサービス100以上 (2016年9月末時点)

開発言語の違いC、Perl、C++、PHP、Node.js、Java...

10

Page 12: Yahoo! JAPANのCloud Foundry導入状況

それぞれアーキテクチャも違う

11

例)新規サービス等 例)コマース系サービス等

小規模サービス 大規模サービス

API

Gate

way

sear

ch

list

cart

logic

logic

logic

Page 13: Yahoo! JAPANのCloud Foundry導入状況

共通のアーキテクチャを全社展開するのは難しい

12

Page 14: Yahoo! JAPANのCloud Foundry導入状況

組織毎に対応策を見つける

組織内エバンジェリスト(非公式)今のところ20人ぐらい

それぞれの組織・サービスに合った導入方法を進めている

13

Page 15: Yahoo! JAPANのCloud Foundry導入状況

推進体制イメージ

14

現場エンジニア

組織内エバンジェリスト

社内推進 プロジェクト

ショッピング担当

ショッピングエンジニア

ショッピングエンジニア

オークション担当

オークションエンジニア

メディア担当

メディアエンジニア

Page 16: Yahoo! JAPANのCloud Foundry導入状況

進め方(技術的な話)

Page 17: Yahoo! JAPANのCloud Foundry導入状況

独自技術で開発スピードアップ

16

・検索エンジン・フラットDB・プロセス間通信技術・パッケージ管理

Page 18: Yahoo! JAPANのCloud Foundry導入状況

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

17

Page 19: Yahoo! JAPANのCloud Foundry導入状況

既存サービスとの連携

18

app2app1

FE API

etc

KVS

DBCloud Foundry

API Gateway

独自技術 独自技術 独自技術独自技術

システムログアプリケーションログ

独自技術に依存しない、またはhttpでアクセス可能なPFは、直接アクセスする。

IDC

router

RouteService

LB

Page 20: Yahoo! JAPANのCloud Foundry導入状況

課題

(たくさんあるうちの一つ)

Page 21: Yahoo! JAPANのCloud Foundry導入状況

DBの接続はIPアドレスで制限をかけている

20

サービスA サービスB サービスC

実際には上記に加えID・パスワード・ポートも

Page 22: Yahoo! JAPANのCloud Foundry導入状況

CFを使うとRANGEで開けなければいけない

21

CF

サービスA サービスB サービスC

Page 23: Yahoo! JAPANのCloud Foundry導入状況

既存のルールとも格闘中

何故そのルールを作ったのか?

引き続き、そのルールが必要か?

技術的に解決できないのか?22

Page 24: Yahoo! JAPANのCloud Foundry導入状況

10倍開発するための

CI/CD

Page 25: Yahoo! JAPANのCloud Foundry導入状況

CI/CDの条件

CFと相性が良さそうなもの

モダンな開発手法に合ったもの

24

Page 26: Yahoo! JAPANのCloud Foundry導入状況

何故Concourseか?

boshデプロイができた

パイプラインが見える化されてる

YAMLで設定が書ける25

Page 27: Yahoo! JAPANのCloud Foundry導入状況

Concourseの課題(当時)

・複数チームで利用する機能がない→ チーム機能がリリースされて良かった

・Buildpackと同じ環境でテストがしたい(httpdや言語のバージョン含めて)→次ページにて説明

26

Page 28: Yahoo! JAPANのCloud Foundry導入状況

Buildpackが動くDockerイメージを準備

27

Dockerfile

/bin/compile $app_dir /tmp/cache を実行

FROM cloudfoundry/cflinuxfs2ENV CF_STACK=cflinuxfs2ENV USER vcap

Page 29: Yahoo! JAPANのCloud Foundry導入状況

CloudFoundry

GitHub

PrivateRegistry

更新作業もConcourseで自動化

28

Concourse

Buildpack

登録

更新確認&取得

Resourcecheck

Updatebuildpack

Buildpack

Dockerbuild&push

Resourcecheck

更新

DockerImage

Page 30: Yahoo! JAPANのCloud Foundry導入状況

まとめ

Page 31: Yahoo! JAPANのCloud Foundry導入状況

まとめ

・スモールスタートで始めている

・サービス毎に導入方法を検討

・独自技術や既存PFとも連携

・課題はまだまだ山盛り

・Concourseとセットで推進30

Page 32: Yahoo! JAPANのCloud Foundry導入状況

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

31

素材提供:アフロ