Slide 1

Slide 1 text

他社ベンダへ越境して 1日約10回リリースを達成した話 2018年 XP祭りLT大会 @takamii228

Slide 2

Slide 2 text

自己紹介 ● @takamii228 ○ エンタープライズなSIerでアジャイル開発専門組織に所属 ○ アジャイル開発における開発基盤整備やプロジェクト支援 ○ 認定スクラムマスター ● なんでもやる雑食エンジニア ○ CI/CD環境構築、アーキ設計、 AWS設計、Scrum運営、チームビルディング ○ 仕事でよく使う言語は Java ( Spring )、PHP ( Laravel ) ○ 開発基盤(GitLab, Jenkins, Mattermost, JIRA, Conflu等) on k8sを運用中 

Slide 3

Slide 3 text

みなさん、1日に何回もサービスを リリースできてますか?

Slide 4

Slide 4 text

SIerでも一日約10回リリースできた とあるWebサービス開発案件の話

Slide 5

Slide 5 text

とあるWebサービス開発案件 ● B2C向け新規Web ECサービス開発 ● 既存システムを含む複数のサービスをAPIで連携 ● フロントエンドや各種サービスを複数の会社がそれぞれ新規に開発

Slide 6

Slide 6 text

開発体制と会社毎の開発範囲 弊社から画面開発ベンダへ フロントエンドの実行環境と APIを提供

Slide 7

Slide 7 text

プロジェクトにおける課題 ● サービス開始までのスケジュールがタイトである ● 各社並行新規開発のため頻繁なIF定義変更が予想される ● サービス間の連携が多く、特に結合試験時期に炎上が予想される

Slide 8

Slide 8 text

変更に強いバックエンドと CI/CDパイプラインを作った

Slide 9

Slide 9 text

変更に強いバックエンドとCI/CDパイプライン① Swaggerを使ってインクリメンタルなAPI実装を実現した 参考 : https://speakerdeck.com/int128/customize-swagger-templates

Slide 10

Slide 10 text

変更に強いバックエンドとCI/CDパイプライン② AWSとAnsibleでImmutrable Infrastructureを実現した

Slide 11

Slide 11 text

バックエンドは たくさんリリースできそうだ!

Slide 12

Slide 12 text

フロントエンドは???

Slide 13

Slide 13 text

いい仕組みがあるんだから、 フロントエンドも 乗っかれるようにしよう!

Slide 14

Slide 14 text

「サービス」を頻繁にリリースするために越境 ● APIの仕様変更はフロントエンドも影響し、ボトルネックになる ● 「サービス」はフロントとバックエンドが合わせて初めて完成する ● 責務分担の境界付近において時に会社の枠を超えた歩み寄りが必要 (※)  ※自社の戦略やリスク回避のために   責務分担の境界をきちんと定義することも大事です

Slide 15

Slide 15 text

フロントエンド開発へ越境してやったこと ● 開発に必要な環境を提供・教育した ○ バックエンドのCI/CD開発基盤に乗れるように Gitレポジトリを用意 ○ リリースも画面開発ベンダのみでできるように Jenkinsジョブを用意 ○ Gitへの資材反映方法から Jenkinsジョブリリースまでの手順書を提供 ● 席を隣に並べて一緒に開発を実施した ○ 顧客の開発拠点に画面ベンダ用の席を準備してもらった ○ 隣でいつでもすぐ質問できる体制を整備した ○ お互いの開発状況を常に共有した  → 結果的にXPのプラクティスを実行していた!

Slide 16

Slide 16 text

越境してみてどうなった? ● サービスの開発スピードが上がった(燃えたけど) ○ 画面ベンダが画面資材をリリースできるため依頼の手間や待ち時間を無くせた ○ APIのIF仕様レベルの議論に注力できた ○ 結合試験時における故障発見から修正反映までの リードタイムが最短2時間 ○ 結合期間中には一日に約10回リリースを達成した (※API側も含む) ● 商用リリースも自動化できた ○ 検証環境での実績をそのまま商用環境に適用できた ● 顧客からの評価が上がった ○ 単価上昇、追加案件や追加開発を受注できた

Slide 17

Slide 17 text

まとめ  開発範囲が会社間で分割されているWebサービス開発案件において、 ● 他社ベンダにもGit・Jenkinsリリース環境を提供して、 ● 他社ベンダが自分たちでもリリースできるようにした結果、 ● 1日に約10回サービスがリリース可能な体制をつくることができた  運用開始後、1年間で約500回リリースを達成しています。 リリース高速化のために会社の壁を越境してみよう!

Slide 18

Slide 18 text

宣伝

Slide 19

Slide 19 text

Jenkinsユーザカンファレンス2018で登壇します 絶賛参加者募集中です!奮ってご参加ください。 ● 日時:9/23(日) 12:30 - 17:20 ● 場所:法政大学市ヶ谷キャンパス ● 登壇者 ○ 川口耕介氏 ( CloudBees CTO ) ○ James Rawlings氏 ( Jenkins X Project Lead ) ○ などなど ● 詳細リンク ○ https://jenkins.jp/juc2018/ ○ https://www.meetup.com/ja-JP/Tokyo-Jenkins-Area-Meetup/events/252614840/