XPJUG2018-lt-takamii228

553784f5490e80cde79ef80ee70b5ed2?s=47 takamii228
September 08, 2018
1.4k

 XPJUG2018-lt-takamii228

553784f5490e80cde79ef80ee70b5ed2?s=128

takamii228

September 08, 2018
Tweet

Transcript

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

  2. 自己紹介 • @takamii228 ◦ エンタープライズなSIerでアジャイル開発専門組織に所属 ◦ アジャイル開発における開発基盤整備やプロジェクト支援 ◦ 認定スクラムマスター •

    なんでもやる雑食エンジニア ◦ CI/CD環境構築、アーキ設計、 AWS設計、Scrum運営、チームビルディング ◦ 仕事でよく使う言語は Java ( Spring )、PHP ( Laravel ) ◦ 開発基盤(GitLab, Jenkins, Mattermost, JIRA, Conflu等) on k8sを運用中 
  3. みなさん、1日に何回もサービスを リリースできてますか?

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

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

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

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

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

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

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

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

  12. フロントエンドは???

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

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

  15. フロントエンド開発へ越境してやったこと • 開発に必要な環境を提供・教育した ◦ バックエンドのCI/CD開発基盤に乗れるように Gitレポジトリを用意 ◦ リリースも画面開発ベンダのみでできるように Jenkinsジョブを用意 ◦

    Gitへの資材反映方法から Jenkinsジョブリリースまでの手順書を提供 • 席を隣に並べて一緒に開発を実施した ◦ 顧客の開発拠点に画面ベンダ用の席を準備してもらった ◦ 隣でいつでもすぐ質問できる体制を整備した ◦ お互いの開発状況を常に共有した  → 結果的にXPのプラクティスを実行していた!
  16. 越境してみてどうなった? • サービスの開発スピードが上がった(燃えたけど) ◦ 画面ベンダが画面資材をリリースできるため依頼の手間や待ち時間を無くせた ◦ APIのIF仕様レベルの議論に注力できた ◦ 結合試験時における故障発見から修正反映までの リードタイムが最短2時間

    ◦ 結合期間中には一日に約10回リリースを達成した (※API側も含む) • 商用リリースも自動化できた ◦ 検証環境での実績をそのまま商用環境に適用できた • 顧客からの評価が上がった ◦ 単価上昇、追加案件や追加開発を受注できた
  17. まとめ  開発範囲が会社間で分割されているWebサービス開発案件において、 • 他社ベンダにもGit・Jenkinsリリース環境を提供して、 • 他社ベンダが自分たちでもリリースできるようにした結果、 • 1日に約10回サービスがリリース可能な体制をつくることができた  運用開始後、1年間で約500回リリースを達成しています。 リリース高速化のために会社の壁を越境してみよう!

  18. 宣伝

  19. 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/