Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 までご連絡ください! カジュアル面談でもお待ちしております。