Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
XPJUG2018-lt-takamii228
Search
takamii228
September 08, 2018
0
2.2k
XPJUG2018-lt-takamii228
takamii228
September 08, 2018
Tweet
Share
More Decks by takamii228
See All by takamii228
私の情報の集め方、知識の学び方 / how-to-get-information-takamii228
takamii228
0
550
DevFest Tokyo2020 Flutter LT takamii228
takamii228
1
1k
gitlab review practice
takamii228
3
4.3k
Jenkinsstudy2018 juc2018 takamii228
takamii228
5
5.2k
Goで絵文字メーカーを作ってみた / gopher-dojo2-emojigen
takamii228
0
450
プライベートでの開発を継続する技術 / techniques to keep personal development
takamii228
0
530
開発支援ツールで疲弊しているあなたへ / for exhausted developers with management tools
takamii228
0
290
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
3k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Docker and Python
trallard
42
3.1k
4 Signs Your Business is Dying
shpigford
181
21k
Designing Experiences People Love
moore
138
23k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Transcript
他社ベンダへ越境して 1日約10回リリースを達成した話 2018年 XP祭りLT大会 @takamii228
自己紹介 • @takamii228 ◦ エンタープライズなSIerでアジャイル開発専門組織に所属 ◦ アジャイル開発における開発基盤整備やプロジェクト支援 ◦ 認定スクラムマスター •
なんでもやる雑食エンジニア ◦ CI/CD環境構築、アーキ設計、 AWS設計、Scrum運営、チームビルディング ◦ 仕事でよく使う言語は Java ( Spring )、PHP ( Laravel ) ◦ 開発基盤(GitLab, Jenkins, Mattermost, JIRA, Conflu等) on k8sを運用中
みなさん、1日に何回もサービスを リリースできてますか?
SIerでも一日約10回リリースできた とあるWebサービス開発案件の話
とあるWebサービス開発案件 • B2C向け新規Web ECサービス開発 • 既存システムを含む複数のサービスをAPIで連携 • フロントエンドや各種サービスを複数の会社がそれぞれ新規に開発
開発体制と会社毎の開発範囲 弊社から画面開発ベンダへ フロントエンドの実行環境と APIを提供
プロジェクトにおける課題 • サービス開始までのスケジュールがタイトである • 各社並行新規開発のため頻繁なIF定義変更が予想される • サービス間の連携が多く、特に結合試験時期に炎上が予想される
変更に強いバックエンドと CI/CDパイプラインを作った
変更に強いバックエンドとCI/CDパイプライン① Swaggerを使ってインクリメンタルなAPI実装を実現した 参考 : https://speakerdeck.com/int128/customize-swagger-templates
変更に強いバックエンドとCI/CDパイプライン② AWSとAnsibleでImmutrable Infrastructureを実現した
バックエンドは たくさんリリースできそうだ!
フロントエンドは???
いい仕組みがあるんだから、 フロントエンドも 乗っかれるようにしよう!
「サービス」を頻繁にリリースするために越境 • APIの仕様変更はフロントエンドも影響し、ボトルネックになる • 「サービス」はフロントとバックエンドが合わせて初めて完成する • 責務分担の境界付近において時に会社の枠を超えた歩み寄りが必要 (※) ※自社の戦略やリスク回避のために 責務分担の境界をきちんと定義することも大事です
フロントエンド開発へ越境してやったこと • 開発に必要な環境を提供・教育した ◦ バックエンドのCI/CD開発基盤に乗れるように Gitレポジトリを用意 ◦ リリースも画面開発ベンダのみでできるように Jenkinsジョブを用意 ◦
Gitへの資材反映方法から Jenkinsジョブリリースまでの手順書を提供 • 席を隣に並べて一緒に開発を実施した ◦ 顧客の開発拠点に画面ベンダ用の席を準備してもらった ◦ 隣でいつでもすぐ質問できる体制を整備した ◦ お互いの開発状況を常に共有した → 結果的にXPのプラクティスを実行していた!
越境してみてどうなった? • サービスの開発スピードが上がった(燃えたけど) ◦ 画面ベンダが画面資材をリリースできるため依頼の手間や待ち時間を無くせた ◦ APIのIF仕様レベルの議論に注力できた ◦ 結合試験時における故障発見から修正反映までの リードタイムが最短2時間
◦ 結合期間中には一日に約10回リリースを達成した (※API側も含む) • 商用リリースも自動化できた ◦ 検証環境での実績をそのまま商用環境に適用できた • 顧客からの評価が上がった ◦ 単価上昇、追加案件や追加開発を受注できた
まとめ 開発範囲が会社間で分割されているWebサービス開発案件において、 • 他社ベンダにもGit・Jenkinsリリース環境を提供して、 • 他社ベンダが自分たちでもリリースできるようにした結果、 • 1日に約10回サービスがリリース可能な体制をつくることができた 運用開始後、1年間で約500回リリースを達成しています。 リリース高速化のために会社の壁を越境してみよう!
宣伝
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/