Slide 1

Slide 1 text

ソフトウェアの継続的アップデートを コンテナ化によって加速させる 久米拓馬 / GMO PEPABO inc. 2023.11.21 技術的負債に向き合う Online Conference 1

Slide 2

Slide 2 text

2 自己紹介 ホスティング事業部 SREチーム シニアエンジニア 久米拓馬 @takumakume ● 福岡在住 ● ルアーフィッシング・珈琲焙煎 ● Webアプリケーションプラットフォームの開発・ 運用 ● Kubernetes / Cloudnative

Slide 3

Slide 3 text

変更しやすいシステム 開発者体験が良い メンテナンスされる

Slide 4

Slide 4 text

変更しやすいシステムの手段 「コンテナ化」

Slide 5

Slide 5 text

ソフトウェアアップデートにおける課題 前提共有:最大22年続くサービスを複数運用している会社

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

• OS • パッケージ • 言語 • ライブラリ ソフトウェアアップデートやっていますか?

Slide 8

Slide 8 text

• 脆弱性が放置される • 新機能が使えない • 互換性がなくなる • データベースのバージョン • TLSのバージョン • etc … • 割れ窓理論、何もしないは伝染する ソフトウェアをアップデートしなかったらどうなるか? ソフトウェアは何もしないと壊れる

Slide 9

Slide 9 text

• ソフトウェアアップデートの必要性は突然来る(厳密には薄々気づいている) • 必要になったときには... • ジャンプアップ、ビッグバンリリース • 依存関係のソフトウェアアップデートを同時に求められる • 作業タイミングの選択肢の幅が狭くなっている 継続的にソフトウェアをアップデートしなかったらどうなるか? 予想外の規模とタイミングで作業が発生しビジネスインパクトが大きい

Slide 10

Slide 10 text

• サービス提供開始から20年以上経過 • ソフトウェアアップデートが積極的に行われていない • Webアプリケーションの数は約40個、VM • 様々なインフラ構成 事業部のアプリケーションを取り巻く状況

Slide 11

Slide 11 text

複数のアーキテクチャのWebアプリケーション、オペレーションが難しい Private Cloud “Nayh” (Openstack) KVM LBaaS Reverse Proxy app A app B app C Consul Service Discovery Keepalived app D Internet LB

Slide 12

Slide 12 text

• 開発からデプロイまでのリードタイムが長い • インフラ構成の認知負荷が高い • VMを作るのは時間がかかる • 変更による障害リスクが高い • ミュータブルなインフラのため再現性が低く不安定 • 手動オペレーションが必要 課題の抽出

Slide 13

Slide 13 text

変更しづらいシステム

Slide 14

Slide 14 text

開発者体験が悪い

Slide 15

Slide 15 text

放置される

Slide 16

Slide 16 text

ソフトウェアアップデートの初手 「コンテナ化」

Slide 17

Slide 17 text

開発からデプロイまでのリードタイムが長い • アプリのコードとDockerfileをPushしたらすべて自動でリリースされる 変更による障害リスクが高い • イミュータブルなインフラのため再現性が高く安定する • Kubernetes + GitOps で手動オペレーションの撲滅 ソフトウェアアップデートの初手「コンテナ化」 コンテナ化による課題解決

Slide 18

Slide 18 text

変更しやすいシステムを 支える技術

Slide 19

Slide 19 text

• 開発者はコードを書いて、Pull Requestをマージ するだけ • Argo CD • Argo CD Image Updater ソフトウェアアップデートを支える技術 徹底したGitOps Kubernetes Cluster Git Kubernetes Manifests App Code Push Container Image Build Developer

Slide 20

Slide 20 text

ソフトウェアアップデートを支える技術 Staging環境をPull Request毎に自動生成 • Staging環境待ちが発生しない • Argo CD Application Set など

Slide 21

Slide 21 text

ソフトウェアアップデートを支える技術 ソフトウェアの自動アップデート • renovate

Slide 22

Slide 22 text

ソフトウェアアップデートを支える技術 プログレッシブデリバリー • リリース後のメトリクスを元に自動ロール バック • 予想外のインシデントの影響を最小限に抑 える • Argo Rollouts

Slide 23

Slide 23 text

ソフトウェアアップデートを支える技術 脆弱性の対応 • KEV (Known Exploited Vulnerabilities) に該当する悪用が確認された脆弱性に絞って通 知し、必ず対応するようにしている https://speakerdeck.com/takumakume/vulnerability-management-with-sbom-in-kubernetes

Slide 24

Slide 24 text

変更しやすいシステム 開発者体験が良い メンテナンスされる

Slide 25

Slide 25 text

25 Thank You! Thank You! GMOペパボに興味がある方は @takumakume までご連絡ください! カジュアル面談でもお待ちしております。