Slide 1

Slide 1 text

新卒エンジニアがCICDを モダナイズしてみた話 JAWS-UG東京 ランチタイムLT会 #22 2025/04/22 KDDI 西 総一朗

Slide 2

Slide 2 text

自己紹介 ◼ 2024/04 KDDI株式会社 新卒入社 ◼ 2024/09 現部署配属 • CICDのモダン化 • Terraformバージョンアップ ◼ 2025/04 2年目…! 経歴 ◼ フロント系(AWS)システムのインフラ開発・運用 ◼ 内製開発チーム 業務内容 氏名 所属 趣味 西 総一朗 KDDI株式会社 自宅サーバ 2

Slide 3

Slide 3 text

趣味 - 自宅サーバ サーバ君たち (左・右下: ワーカノード、 中央:ストレージ) ルータ(IX2215)は固定IP用と MAP-E用で2台体制 ストレージと各ノードは10Gで接続 (冷房つけてても30度になってる…) メインPCと作業机 (フルタワーケースなのでめちゃでかい) ※ストレージについては実家(大阪)にも設置してて毎時同期をしている 3

Slide 4

Slide 4 text

既存のCICD環境(Jenkins)の問題 ◼属人化問題  Jenkinsおじさん  Jenkinsの設定をした人に属人化してしまうことから呼ばれている ➢設定をGUIで行えてしまうことも原因 ◼塩漬け問題  共通化しようとして複雑怪奇に  実際にどのようにJobが実行されているかを追いかけるのも大変 ➢その結果ビルドツール・OS等が塩漬けとなってセキュリティ問題になりかねない 本来のJenkins おじさん 処理の中身追いかける事のお手伝いする事は残念ながら工数がないです。 中身に詳しい人もいないです。 前任者 4

Slide 5

Slide 5 text

脱Jenkinsに向けて… (1/2) ◼CICDシステムが巨大すぎる… ➢スモールスタートとしてIaC (Terraform)のGHEリポジトリを対象に ◼アーキテクチャどうしよう? ➢GitHub ActionsとAWS CodeBuildの組み合わせを活用 AWS CodeBuild がマネージド型の GitHub Action ランナーのサポートを開始 5

Slide 6

Slide 6 text

脱Jenkinsに向けて… (2/2) ◼商用作業ルールにどうやって適合させる?  商用作業前には作業申請が必要 ➢CIとCDを分離する ➢読み取り専用(Plan)と変更可能(Apply)の2台編成  特権申請を行わないと変更ができない ➢特権ロールと通常ロールとを使い分けることで実現 ➢特権申請済みのアカウントで手動で 通常ロールに付与されたポリシーを削除する運用 (通常ロールには特権ロールへスイッチできないポリシーが付与されている) 6

Slide 7

Slide 7 text

新CICDシステム構成 ◼開発・ステージング・商用環境ごとにCodeBuildを配置 7

Slide 8

Slide 8 text

JenkinsとGitHub Actionsでの開発工程の違い ◼Jenkins時代  商用環境でPlanを実行するのにも商用作業扱い  作業当日まで商用環境での差分が不明  資材格納ジョブ -> Planジョブ -> Applyジョブ -> Planジョブの工程を踏む  Plan/Applyでは1回で1環境面しか回せないため時間がかかる(現在は商用含め15面!?ある) ◼GitHub Actions時代  商用環境でもPlanはいつでも回せる  特権申請をバイパスして変更することはできない  商用作業時はApply前に差分チェックや承認フェーズを挟むことができる  複数面の一括実行も可能に 8

Slide 9

Slide 9 text

まとめ ◼自前で運用するのではなく、なるべくマネージドなサービスを使用しよう  運用コストの削減やセキュリティ面でもメリットがある ◼システムは全てコードで管理し、なるべくシンプルな構成にしよう  属人化を防ぐことが期待できる ◼配属されて1カ月で前任者が離任したが、半期でCICDモダン化を完遂できた! • 技術的な知識はあっても大企業特有の仕組み(商用作業・各申請等)の理解に苦労した • 趣味の自宅サーバ運用で使用していたGitHub Actionsの知識を生かせた • 新しい技術などに興味を持ち続け、新技術で改善していくことは楽しい! 9