Upload
yahoo
View
693
Download
0
Embed Size (px)
Citation preview
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
素材提供:アフロ