Yahoo! JAPANのCloud Foundry導入状況

Post on 09-Jan-2017

693 views 0 download

Transcript of Yahoo! JAPANのCloud Foundry導入状況

2016年11月15日

ヤフー株式会社 窪野 安彦

Yahoo! JAPANの

Cloud Foundry導入状況

自己紹介

1

窪野 安彦

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

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

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

今日の内容

2

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

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

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

ている?

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

「10倍」開発したい

5

Cloud Foundry導入の旅

6

2016年先行サービス

2017年本格導入

2018年拡大

使っている環境

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

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

7

初期クラスタ構成

開発用クラスタ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

進め方(組織の話)

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

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

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

10

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

11

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

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

API

Gate

way

sear

ch

list

cart

logic

logic

logic

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

12

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

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

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

13

推進体制イメージ

14

現場エンジニア

組織内エバンジェリスト

社内推進 プロジェクト

ショッピング担当

ショッピングエンジニア

ショッピングエンジニア

オークション担当

オークションエンジニア

メディア担当

メディアエンジニア

進め方(技術的な話)

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

16

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

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

17

既存サービスとの連携

18

app2app1

FE API

etc

KVS

DBCloud Foundry

API Gateway

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

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

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

IDC

router

RouteService

LB

課題

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

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

20

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

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

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

21

CF

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

既存のルールとも格闘中

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

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

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

10倍開発するための

CI/CD

CI/CDの条件

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

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

24

何故Concourseか?

boshデプロイができた

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

YAMLで設定が書ける25

Concourseの課題(当時)

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

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

26

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

27

Dockerfile

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

FROM cloudfoundry/cflinuxfs2ENV CF_STACK=cflinuxfs2ENV USER vcap

CloudFoundry

GitHub

PrivateRegistry

更新作業もConcourseで自動化

28

Concourse

Buildpack

登録

更新確認&取得

Resourcecheck

Updatebuildpack

Buildpack

Dockerbuild&push

Resourcecheck

更新

DockerImage

まとめ

まとめ

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

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

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

・課題はまだまだ山盛り

・Concourseとセットで推進30

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

31

素材提供:アフロ