Upgrade to Pro — share decks privately, control downloads, hide ads and more …

XPJUG2018-lt-takamii228

takamii228
September 08, 2018
2k

 XPJUG2018-lt-takamii228

takamii228

September 08, 2018
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. 宣伝

    View Slide

  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/

    View Slide