SlideShare a Scribd company logo
16-C-3
Gitで安定マスターブランチを手に入れる
株式会社ワークスアプリケーションズ
井上 誠一郎、三宅 泰裕
#devsumiC
自己紹介 その1
井上 誠一郎(いのうえ せいいちろう)
HUE & ATE Div. Partner
主な著書
- Perfect Java
- Perfect Java EE
- Perfect JavaScript
- ITは本当に世界をより良くするのか?IT屋全力反省会 (翔泳社)
自己紹介 その2
三宅 泰裕 (みやけ やすひろ)
Platform Dept. Manager
主なお仕事
- 日々、開発者のために汗水垂らして地盤整備
規模感
開発人員
数千人(日本・中国・シンガポール・インド)
開発規模
- Gitレポジトリ数: 数千
- トピックブランチ: 星の数ほど
まぁ、超大規模開発ですよ...
今日、お話したいこと
我々の環境安定化の為の闘争の歴史。
涙なしでは語れないあの日々のことを...
全ての問題を解決できたわけではありませんが、
超大規模開発の中で何を考えどのように変革をしていったのか。
その中で得られた知見を皆さんにお話します。
簡単にいうと、こういうことです
さて…
インフラのお守りをしていると、トラブルに見舞われない日はないですよね?
フルマネージドで
洗練されたパイプラインが存在して
コード書いたら、テストもされて、すっとプロダクションまで伝搬される。
こんな世界は神話の世界かなぁと思ってました。
実際、今も思っています...。
現実問題として
多種多様な検査ロジック
機能 * 機能で生み出される機能
イントラネットからSaaS への転換
世の中の変革、スマートデバイスの対応 etc...
当然、我々もそこに追従することを余儀なくされました
誤解と混乱...、いやぁ阿鼻叫喚っす
山に登る理由?そこに山があるからだよね?
ガムシャラに走ります。分からなくても走ります。
ふと、後ろを眺めると....
モノリス !!
この時の記憶... (遠い目)
開発規模 :数百人
ビルド時間 :30時間+
ランタイム : r3.16xLarge * いっぱい
+ =
教訓めいた会話
Aさん「ビルドの待ち時間長過ぎて、脳内デバッカーが進化しました」
Bさん「僕たち、Jenkinsの奴隷じゃないんですけど?」
Cさん「ピリオドの向こうが見えてきました...」
Dさん「細かくすれば、良いんじゃね?」
それや!!
そうだ、マイクロサービスになろう!!
下記の作戦でとりあえずやってみる
・ 共通部分(ライブラリ)をとにかく外出しする = jarにする
・ 細切れになった共通部分のビルドをバラバラにして、バージョン振る
・ 残りの巨大モノリスを、「どうしようもないもの」と「分かれそうなもの」
・ 「分かれそうなもの」をとりあえず細かく砕いてみる
◆
こんなイメージ:業務ドメイン + ライブラリ
モノ
ライブラリ
カネ
ヒト
ライブラリ
ライブラリ
ライブラリ
ヒト
カネ
カネ
土台はKubernetes、 Prometheusも参戦
モノ
ライブラリ
カネヒト
ライブラリ
ライブラリ
ライブラリ
ヒト
カネ
カネ
デプロイしやすくしてみると、重複に気づく
モノ
ライブラリ
カネ
ヒト
ライブラリ
ライブラリ
ライブラリ
ヒト
カネ
カネ
◆
全然、おいしくない...
美味しい
● 各warは異なるjarのバージョンをもてる
● ビルドの単位もバラバラ
美味しくない
● 後方互換性を保ててない
● 業務ドメイン単位でのバージョンアップ
● そもそも、業務ドメインの境目はとても曖昧
結果として、ビルドは速くなる。単体でデプロイも出来る。でも、動かないし、結局高いし...
どうしよう...
よく考えてみることにした
バージョン違いのライブラリが存在する +1
ビルドの単位もバラバラ +1
後方互換性... -10
業務ドメイン単位でのバージョンアップ -100
そもそも、業務ドメインの境目はとても曖昧 -1000 これってもしかして...
みんな、テストできてな
くない?
それや!!
あれ?なんか足りなくない??
お金も安くないので、「テスト出来ない」問題を解決に走ることにする
なんで出来ないんだろう...
- 「メモリのことを気にするなんて...」ニュータイプすぎる議論
- 「クラウドなんて、ブラックボックス」なナウでヤングな感覚
- 「必要ならたてるまで、ですよ」開発元気玉をしようとする◯空
- 「いいか、更新は慎重にするんだぞ、赤い線を切れ、切るんだ !!」
開発環境がナイ !!
ありがちな構成
とりあえず、データベースがあればいいだろう構成
DB
Micro Service Architecureなら当然、APも必要
DBAP
共有すればするだけ足を引っ張る
DBAP
更新の競合、適用による破壊
幸せな世界は、こんな感じ
環境も「疎」にする
DBAP DBAP
これ、どこに作るの?
クラウドに作りまくると、それなりにお金がかかる
弊社の場合は、埋蔵サーバ(PC)が転がっていた
じゃあ、使っちゃおう
救世主OpenStack + k8s
ステートフル担当 = DB ステートレス担当 = AP
結果、こんな感じになる
この環境の副次的な効果
いくら壊しても文句言われない(世界中からヘイトを集めるとかない)
慎重派なあなたも大胆なことが出来るようになる
依存関係(重複部分の解消)
ビルドのスクリプトの改善
なんなら、俺も今日からCIやるぜという気概と気合
結果的にどんどん欲が出てくる=これは凄くいいこと
Gitで安定マスターブランチを手に入れる
更なる挑戦が出来るようになる
もっと早期段階でテストしたいYo !!
ベースはk8s, これならトピックブランチからそのまま環境作ってみる?
ここからdeployする
これが出来るのは開発環境ならでは
QEがテストを続けているような環境では心理的障壁もあり厳しい
しかし、人手で見るしかない部分
・ UI/UXの確認
・ 機能の概要を確認する
を先に行えるなら、手戻り少なく開発も出来る
結果的には、マスターブランチが不安定になりにくい
壊してもいつでも戻せる「安心感」は大事
QEがテストしている環境を適用によって破壊すると、鬼の様にヘイトが飛んでくる
それが例えSlack越しにBotが呟くことだとしても
人は弱いので傷付くものです...
自身のチームで「やっちまったー!」は、きっと許されますよね?
この安心感の中でのびのびやるのが、モノリシックから脱却しようとしている
サービスには大事なことなのかもしれません…。
次なる挑戦(予告)
この手法はステートレスな層にのみ適用できます
が、永続層はどうでしょうか?
まだまだ、問題がありそうです…。
次に攻めるのは、当然データなので…。
ユニットテストをリッチにしようと企んでいます。
実値でテストするテストを当たり前に
昔懐かしのDBUnitにはトランザクションを頑張ってコントロールする機能が
ありました。DDLなどRollBackが効かないものには無力さを覚えるものです
OpenStackの機能を有効利用することで美味いこと料理できそうです
テスト前につけて、終わったら破棄
volume
テスト
volume
完全な確証はまだないですが、仕組みの検証段階での効果は抜群です
まとめ
安定化の肝は「開発環境」
- 心理的障壁を下げる効果も
再利用・破棄可能な形にして、早い段階からデプロイする
- コストメリット
- 生産性の向上
規模的な制約もあってCloudを選ばなかっただけで、Cloudでも勿論構わない
ご静聴ありがとうございました

More Related Content

PDF
[デブサミ]Microsoft Data Platform 最新アップデート
PDF
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
PPTX
もしSIerのエンジニアがSRE本を読んだら
PDF
【15-A-4】Redmine + Lychee 導入のアンチパターン
PDF
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
PDF
Googleのインフラ技術から考える理想のDevOps
PDF
ソフトウェア設計のすすめ
PPTX
プロダクト開発におけるプロダクトマネージャーの役割とは #‎devsumi‬
[デブサミ]Microsoft Data Platform 最新アップデート
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
もしSIerのエンジニアがSRE本を読んだら
【15-A-4】Redmine + Lychee 導入のアンチパターン
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Googleのインフラ技術から考える理想のDevOps
ソフトウェア設計のすすめ
プロダクト開発におけるプロダクトマネージャーの役割とは #‎devsumi‬

What's hot (20)

PPTX
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
PDF
スクリプトエンジン作って 無双する
PDF
NoOps?よろしいならば戦争だ
PDF
Braindots-開発秘話- Cocos2d-x3.5 開発事例 -
PDF
夏サミ 2013 A2 セッション資料 #natsumiA2
PDF
夏サミ2013【A1】基礎からわかるDevOps
PPTX
[Gree] グリーのソーシャルゲームにおける機械学習活用事例
PPTX
長寿なゲーム事業におけるアプリビルドの効率化
PPTX
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
PDF
Fortranが拓く世界、VSCodeが架ける橋
PDF
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
PPTX
社内の遊休PCをAzurePipelinesでCICDに活用しよう
PDF
DevOps at ChatWork
PDF
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
PPTX
VyOSで作るIPv4 Router/IPv6 Bridge
PPTX
自チームのLychee redmine活用例
PDF
モバイルゲームビルドパイプラインとChatOps
PDF
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
PDF
リコーUCSの開発をリーンスタートアップ的視点でふりかえる
PPTX
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
スクリプトエンジン作って 無双する
NoOps?よろしいならば戦争だ
Braindots-開発秘話- Cocos2d-x3.5 開発事例 -
夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ2013【A1】基礎からわかるDevOps
[Gree] グリーのソーシャルゲームにおける機械学習活用事例
長寿なゲーム事業におけるアプリビルドの効率化
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
Fortranが拓く世界、VSCodeが架ける橋
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
社内の遊休PCをAzurePipelinesでCICDに活用しよう
DevOps at ChatWork
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
VyOSで作るIPv4 Router/IPv6 Bridge
自チームのLychee redmine活用例
モバイルゲームビルドパイプラインとChatOps
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
リコーUCSの開発をリーンスタートアップ的視点でふりかえる
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
Ad

Similar to Gitで安定マスターブランチを手に入れる (20)

PDF
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
KEY
Android最新動向
PPTX
アンラーニング
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術
PDF
TFUG#3 Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方
KEY
Android 10 dec, 2012
PDF
Kaggle の Titanic チュートリアルに挑戦した話
PDF
ゲーム業界から見たアジャイル開発
PDF
RTC2023_ChatGPT_YukiTsukamae.pdf
PPTX
RTC2023_ChatGPT_YukiTsukamae.pptx
PPTX
強化学習を利用した自律型GameAIの取り組み ~高速自動プレイによるステージ設計支援~ #denatechcon
PDF
ソフトウェア開発30年史を振り返りつつ考えるプログラマにとって変わらないもの
PPTX
デジタル時代の企業変革 - 2020
PDF
ビジネスとデザイン ~ビジネスは悪くない~
PDF
XPと環境の微妙な関係夜LT版
PDF
Ignite 2021 振り返り(DevOps)
PDF
海外Ta事情から日本のta像について考えてみる
PDF
20230206_SD輪読&座談会#41_kitazaki.pdf
PDF
Developer's Summit 夏 EnterpriseTED 資料
PDF
ソフトウェア開発の現場風景
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
Android最新動向
アンラーニング
FINAL FANTASY Record Keeperのマスターデータを支える技術
TFUG#3 Retty流 「2200万ユーザさんを支える機械学習基盤」 の作り方
Android 10 dec, 2012
Kaggle の Titanic チュートリアルに挑戦した話
ゲーム業界から見たアジャイル開発
RTC2023_ChatGPT_YukiTsukamae.pdf
RTC2023_ChatGPT_YukiTsukamae.pptx
強化学習を利用した自律型GameAIの取り組み ~高速自動プレイによるステージ設計支援~ #denatechcon
ソフトウェア開発30年史を振り返りつつ考えるプログラマにとって変わらないもの
デジタル時代の企業変革 - 2020
ビジネスとデザイン ~ビジネスは悪くない~
XPと環境の微妙な関係夜LT版
Ignite 2021 振り返り(DevOps)
海外Ta事情から日本のta像について考えてみる
20230206_SD輪読&座談会#41_kitazaki.pdf
Developer's Summit 夏 EnterpriseTED 資料
ソフトウェア開発の現場風景
Ad

More from Works Applications (11)

ODP
Javaでつくる本格形態素解析器
PDF
新入社員が多い中で効果的なレビューを行うための方法 レビューの準備からフィードバックまでの工夫
PDF
RDB脳でCassandra / MSAを始めた僕達が、分散Drivenなトランザクション管理にたどり着くまで / A journey to a...
PDF
Cassandraに不向きなcassandraデータモデリング基礎 / Data Modeling concepts for NoSQL weak point
PDF
形態素解析
PDF
Erpと自然言語処理
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
PDF
Enterprise UI/UX - design as code
PDF
Kubernetesにまつわるエトセトラ(主に苦労話)
PDF
Demystifying kubernetes
PDF
Global Innovation Nights - Spark
Javaでつくる本格形態素解析器
新入社員が多い中で効果的なレビューを行うための方法 レビューの準備からフィードバックまでの工夫
RDB脳でCassandra / MSAを始めた僕達が、分散Drivenなトランザクション管理にたどり着くまで / A journey to a...
Cassandraに不向きなcassandraデータモデリング基礎 / Data Modeling concepts for NoSQL weak point
形態素解析
Erpと自然言語処理
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Enterprise UI/UX - design as code
Kubernetesにまつわるエトセトラ(主に苦労話)
Demystifying kubernetes
Global Innovation Nights - Spark

Gitで安定マスターブランチを手に入れる