Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

8,381 views

Published on

Published in: Technology
  • Be the first to comment

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

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

×