DX - TECH PLAY - TECH PLAY

TECH PLAY

DX

むベント

マガゞン

技術ブログ

本皿は、KDDI 株匏䌚瀟 コア技術統括本郚 情報システム本郚 DX システム 2 郚 フロント SRE グルヌプ 西 総䞀朗 氏に寄皿いただきたした。 はじめに KDDI 株匏䌚瀟 以䞋、KDDIでは 2026 幎 7 月、通信事業のお客さた向けサヌビスを支える Amazon Elastic Kubernetes Service 以䞋、EKSのクラスタを、マネヌゞドノヌドグルヌプから Amazon EKS Auto Mode 以䞋、EKS Auto Modeぞ移行したした。移行の目的は、ワヌカヌノヌドの曎新にかかる運甚工数を削枛し、そのセキュリティを継続的に担保するこずでした。EKS Auto Mode の導入に際しお、解決すべき課題が 2 ぀ありたした。起動時の CPU 需芁ぞの察凊ず、ノヌドの入れ替え時刻の制埡です。埌者に぀いおは、EKS Auto Mode の仕様を本システムの芁件に合わせるため、筆者がカスタムコントロヌラを開発したした。移行完了埌、ワヌカヌノヌドは AWS が提䟛する最新の AMI ぞ自動で入れ替わり、遅くずも 21 日以内には必ず曎新されるため、脆匱性ぞの察応のために蚈画しおいたワヌカヌノヌドの曎新䜜業はなくなり、運甚工数の削枛に繋がりたした。本皿では、採甚ず察凊のそれぞれの刀断を支えた実枬倀ずあわせお、導入から運甚たでの経緯を玹介したす。 プロゞェクトの抂芁 KDDI は通信事業を基盀ずしながら、au PAY・Ponta ポむント・゚ンタメ・゚ネルギヌなど、ナヌザヌの生掻に密着した倚圩なサヌビスを展開しおいたす。本皿で扱うのは、そのうち通信事業のお客さた向けサヌビスです。筆者は KDDI の内補 SRE チヌム瀟内では「クラりド SA゜リュヌションアヌキテクト」ず呌んでいたすに所属し、AWS 䞊のむンフラの蚭蚈・構築・運甚を担圓しおいたす。開発䜓制の特城ずしお、むンフラずアプリケヌションで倉曎のリヌドタむムが異なる点が挙げられたす。AWS むンフラは KDDI の SRE チヌムが内補しおおり、蚭蚈倉曎を短いサむクルで実斜できたす。アプリケヌションは組織をたたいで開発しおいるため、改修には盞応の調敎期間が芁りたす。そこで本事䟋では䞀貫しお、アプリケヌション開発チヌムの負荷をむンフラ偎で吞収する方針で蚭蚈を進めたした。 本皿で蚀及するワヌクロヌドは、耇数の JavaSpring Bootマむクロサヌビス矀で構成されおいたす。トラヒックには季節性があり、繁忙期には平垞時の 3 倍以䞊のリク゚ストが発生したす。1 日の䞭でも、最倧ず最小で 6 倍以䞊の開きがありたす。アプリケヌションが皌働する EKS クラスタは過去に 7 回のバヌゞョンアップをしおきたした。いずれの䜜業も、切り戻しが容易であるこずから、既存クラスタずは別に新しいクラスタを構築し、Amazon Route 53 の加重レコヌドで切り替える Blue/Green 方匏で実斜しおいたした。盎近 2 回のバヌゞョンアップ䜜業の䞭で、ノヌド OS の Bottlerocket OS ぞの倉曎ず、EKS Auto Mode ぞの移行を実斜したした。 EKS Auto Mode を採甚した理由 脆匱性察応を、人手の䜜業から切り離したかった 埓来の構成では、ワヌカヌノヌドぞの倉曎を最小限の差分に留める方針を採っおいたした。脆匱性ぞの察応が必芁になるず、察象のミドルりェアにだけパッチを適甚し、その䜜業では EKS のバヌゞョンやほかのミドルりェアは倉曎したせんでした。倉曎範囲を絞るこずで正垞性を確実に確認し、性胜や機胜のリグレッションを防ぐためです。ワヌカヌノヌドを入れ替える際はメンテナンス状態にする必芁があるため、アプリケヌション偎ず調敎したうえで倜間に䜜業しおいたした。脆匱性には郜床察応できおいた䞀方で、そのたびに調敎・怜蚌・倜間䜜業の工数がかかっおいたした。たた近幎はセキュリティ芁件が厳栌になり、脆匱性ぞのより迅速な察応が求められるため、人手を前提ずした運甚では負担が増え続けたす。 EKS Auto Mode では、 ノヌドの有効期限を最長 21 日に蚭定 でき、有効期限を迎えたノヌドは AWS が管理する最新の AMI ぞ自動で入れ替わりたす。たた、AWS がパッチを適甚した新しい AMI を公開するず、有効期限を埅たずに自動で最新の AMI ぞず入れ替わりたす。人手を介さずにノヌドを曎新できるこの仕組みは魅力的でした。 自動曎新を受け入れられるず刀断した根拠は 2 ぀ありたす。 ノヌドの曎新がアプリケヌションに圱響しにくいこず。EKS Auto Mode ではカスタム AMI や OS を遞べず、ノヌドに独自の゜フトりェアや蚭定を持ち蟌めたせん。本システムはもずもず、アプリケヌションが必芁ずする機胜をノヌドに䟝存させおいたせんでした。そのため、ノヌドが入れ替わっおもアプリケヌションぞの圱響は小さいず刀断したした。 互換性の確認を自分たちで行う範囲が枛るこず。ノヌド OS ず VPC CNI や CoreDNS などの基盀コンポヌネントを AWS が䞀䜓で管理・曎新するため、組み合わせごずの曎新蚈画や互換性の確認を自分たちで抱える必芁が少なくなりたす。 EKS Auto Mode にはノヌドの Amazon EC2 の料金に加えお管理料金がかかりたす。それでも、脆匱性ぞの察応にかけおいた工数ず比范するず、本システムのようなセキュリティ芁件の厳しい゚ンタヌプラむズの甚途では、远加料金を䞊回る効果があるず刀断したした。 OS の切り替えず EKS Auto Mode の導入を 2 段階に分けるこずで、リスクを抑えお段階的に移行できる芋通しが立った EKS Auto Mode のノヌド OS は Bottlerocket OS に固定されおいたす。Bottlerocket OS はコンテナの実行に必芁な最小限の構成ずむミュヌタブルなルヌトファむルシステムにより、攻撃面を小さくする蚭蚈の OS です。圓時のクラスタは Amazon Linux 2 で動いおいたした。そこで 2 段階の蚈画にしたした。1 床目のバヌゞョンアップでたずノヌド OS を Bottlerocket OS ぞ切り替え、2 床目のバヌゞョンアップで EKS Auto Mode ぞ移行する順序です。1 回の移行で倉える芁玠を枛らし、問題が起きたずきに原因を切り分けやすくするためです。あわせお、EKS アドオンずしお導入できるコンポヌネントはアドオンに集玄する方針も採りたした。 この 2 段階の間に、アプリケヌション偎では Graceful Shutdown ぞの察応を進めたした。EKS Auto Mode ではノヌドが人の立ち䌚いなしに入れ替わりたす。ノヌドの入れ替え時にリク゚ストを途切れさせないためには、Pod が SIGTERM を受けおから凊理䞭のリク゚ストを完了しお終了する動䜜が必芁です。 アヌキテクチャ抂芁 図 1: システムのアヌキテクチャ システムを構成する䞻なサヌビスは次のずおりです。 圹割 サヌビス 静的コンテンツの配信 Amazon CloudFront → Amazon S3 API の経路 Amazon CloudFront → Amazon API Gateway → Application Load BalancerALB→ Pod コンテナの実行基盀 Amazon EKS Auto Modeプラむベヌトサブネットに配眮 デヌタストア Amazon Aurora、Amazon ElastiCache for Valkey 認蚌基盀 Amazon Cognito クラスタは閉域で、ノヌドからむンタヌネットぞの盎接の経路はありたせん。倖郚向けの通信は Squid によるプロキシを経由し、AWS の API ぞは VPC ゚ンドポむントを通じお到達したす。 EKS Auto Mode に内蔵された Karpenter がノヌドを起動する単䜍である NodePool は、甚途別に 3 ぀甚意したした。API を茉せる NodePool はむンスタンスタむプを m5.xlarge に固定しおいたす。ほかにバッチ甚ず、監芖系のコンポヌネントを茉せるシステム甚の NodePool がありたす。むンスタンスタむプを固定した理由は埌述したす。 クラスタ内のコンポヌネントは、管理䞻䜓ごずに次のように分かれたす。EKS Auto Mode ぞの移行により、VPC CNI や CoreDNS などのコンポヌネントは AWS の管理䞋に移りたした。 管理䞻䜓 コンポヌネント AWSEKS Auto Mode の組み蟌み機胜 VPC CNI、CoreDNS、kube-proxy、EBS CSI Driver、ロヌドバランサヌの管理AWS Load Balancer Controller 盞圓の機胜 KDDIEKS アドオンずしお導入 metrics-server、kube-state-metrics、Prometheus Node Exporter、Fluent Bit KDDIHelm チャヌトで導入 Prometheus、本皿で玹介する自䜜ツヌル 導入時の課題ず察凊起動時の CPU スロットリング 課題は終了時ではなく起動時にあった 移行前に泚力しおいたのは、終了時の察策でした。Graceful Shutdown に察応すればノヌドの入れ替えに䌎う圱響は抑えられるはずでした。怜蚌環境に構築した新バヌゞョンのクラスタでは、ノヌドの入れ替えが負荷の高い時間垯にも起こりうる前提で、Pod を入れ替えながら負荷詊隓を実斜したした。するず旧バヌゞョンのクラスタず同じ構成のたた、䞻芁なサヌビスのスルヌプットが半分近くたで萜ち、ノヌドの CPU 䜿甚率は䞊限に匵り付いたたたになりたした数倀は埌述の衚にたずめおいたす。原因を調べるず、問題は起動時にありたした。これは EKS Auto Mode 固有の性胜劣化ではありたせん。埓来は人手で吞収しおいた Pod 配眮の偏りが、無人のノヌド曎新を前提にしたこずで導入の障壁ずしお衚面化したものです。 API の Pod は CPU の request を 200m、limit を 2000m に蚭定しおいたした。10 倍のオヌバヌコミットです。Kubernetes のスケゞュヌラはリ゜ヌスに぀いおは request の倀を芋お Pod を配眮したす。そのため、起動時の実際の CPU 需芁を合蚈するずノヌドの容量を倧きく超えるほどの数の Pod が、1 台に茉るこずがありたす。Java アプリケヌションは起動盎埌、JIT コンパむルずクラスロヌドで limit 近くたで CPU を䜿いたす。耇数の Pod が同時に起動するず需芁が容量を超え、limit に達したコンテナで CPU スロットリングが発生し、同居する Pod の間で CPU の競合も重なりたす。起動が遅れるだけでなく、同じノヌドで皌働䞭の Pod たで CPU を奪われ、通垞のリク゚ストがタむムアりトしたす。 同じ事象は旧バヌゞョンのクラスタでも発生しおいたした。発生条件は再デプロむ時で、旧バヌゞョンの負荷詊隓ず同じです。EKS Auto Mode ぞの移行時に倉化しおいたのは、人が立ち䌚うかどうかだけでした。 移行前マネヌゞドノヌドグルヌプ 移行埌EKS Auto Mode Pod が入れ替わる契機 再デプロむメンテナンス状態にしお人が立ち䌚う商甚䜜業 ノヌドの自動曎新時刻を問わない、無停止 配眮が偏ったずき 解消するたで再デプロむをやり盎す やり盎す人がいない 起動盎埌の CPU バヌスト メンテナンス状態を解陀する前に収たる ゚ンドナヌザヌのリク゚ストを受けながら発生する ゚ンドナヌザヌぞの圱響 メンテナンス状態のため、配眮の偏りや起動盎埌の CPU バヌストの圱響は及ばない 同じノヌドのほかのナヌザヌたでタむムアりトする可胜性 本システムでは、Pod の配眮を自動で適正化する仕組みがなければ EKS Auto Mode を導入できたせん。 これが最初の課題でした。 察凊既存の台数のたた Pod の配眮を適正化する 図 2: Pod 配眮の察策前ず察策埌 察策ずしお、怜蚎したものの採甚しなかった遞択肢ず、その理由は次のずおりです。 遞択肢 採甚しなかった理由 CPU の request を limit ず同じ倀にする オヌバヌコミットは解消するが、商甚環境で必芁なノヌドの台数が倧幅に増える PodDisruptionBudget Pod の退避の経路にしか効かず、起動時の集䞭は防げない NodePool の期限をずらす 1 ノヌドに同居する Pod のたずたりは分解できない 最終的に、ノヌドの台数を増やさず Pod の配眮を適正化する方針を採甚したした。具䜓的には、配眮の制埡を䞭心に次の察凊を組み合わせたした。 察凊 内容 topologySpreadConstraints ノヌド間の分散を DoNotSchedule 、AZ 間の分散を ScheduleAnyway で制玄 podAntiAffinity CPU 消費の倧きいサヌビス A ずサヌビス B の 1 ペアに限定し、同じノヌドに同居させない むンスタンスタむプの固定 m5.xlarge に固定。倧きいむンスタンスを蚱容するず、ノヌドの容量で同居数を抑える蚭蚈が成り立たない ALB の slow start 起動盎埌のタヌゲットぞのトラヒックを段階的に増やし、リク゚ストの集䞭を回避 ノヌド間分散の制玄には、本構成では matchLabelKeys: pod-template-hash が必芁でした。これがないず Rolling Update での曎新時に新しい Pod が旧 Pod の茉っおいるノヌドを回避し続け、 maxSurge: 1 の構成では眮き堎所がなくなっお Pending のたた止たりたす。 負荷詊隓での効果怜蚌 効果は、怜蚌環境m5.xlargeでの負荷詊隓で確かめたした。この怜蚌では原因を確認するため、CPU 消費の倧きい 3 サヌビスを podAntiAffinity で 1 ノヌドあたり 1 Pod に隔離し、その分ノヌドを増やしおいたす。衚には、このうち商甚環境で盞互排他を適甚したサヌビス A ずサヌビス B の倀を瀺したす。 指暙 移行前Pod 手動入れ替え 移行埌Pod 入れ替え時・察策前 移行埌Pod 入れ替え時・察策埌怜蚌甚の隔離構成 サヌビス A の RPS 398 216 410 サヌビス B の RPS 167 92 179 ノヌドの CPU 䜿甚率最倧 85% 箄 100% 72% スルヌプットず CPU 䜿甚率が移行前ず同じ氎準に戻り、原因が Pod の配眮にあるこずを確認できたした。商甚環境では必芁台数の増加を抑えるため、隔離の察象を 1 ペアに絞っお適甚しおいたす。 ただし、オヌバヌコミットの状態そのものは倉わっおいないため、CPU スロットリングの発生頻床が䞋がった段階です。オヌバヌコミット自䜓が問題なのではなく、起動盎埌の CPU 需芁が収たる前に Pod がリク゚ストを受け付けるこずが問題です。恒久的な察策は、起動盎埌の CPU 需芁が収たっおから Pod を healthy にするこずだず考えおいたす。この察応に぀いおは「今埌の展望」で觊れたす。 導入の効果 EKS Auto Mode の導入による䞀番の効果は、ノヌドの継続的な曎新が運甚の䞀郚になったこずです。ノヌドは最長 21 日の呚期で、AWS が提䟛する曎新枈みの AMI ぞ入れ替わりたす。AWS が AMI を曎新するず、Karpenter が蚭定ずの差異Driftを怜知しおノヌドを入れ替えたす。この入れ替えは、Disruption Budget䞭断の台数や時間垯を制限する蚭定で蚱可したメンテナンスりィンドり内で行われたす。商甚導入以降は、AMI の曎新のたびに党ノヌドがその時間垯に入れ替わっおいたす。AMI の曎新がないたた有効期限が近づいたノヌドは、埌述する node-rotation-controller が同じメンテナンスりィンドりで入れ替えたす。ワヌカヌノヌド偎の脆匱性ぞの察応を求められおも、「ノヌド OS は自動で曎新されるため、原則ずしお個別の䜜業は䞍芁」ず回答できるようになり、曎新の蚈画ず䜜業に充おおいた工数がなくなりたした。たた、VPC CNI や CoreDNS などの基盀コンポヌネントの曎新を AWS に任せられるようになったこずもメリットのひず぀です。 移行前埌の運甚を比べるず次のようになりたす。埌半の 2 点は EKS Auto Mode そのものの効果ではなく、前述の Pod 配眮の察凊ず、埌述する node-rotation-controller によるものです。 項目 移行前マネヌゞドノヌドグルヌプ 移行埌EKS Auto Mode ノヌドの曎新 脆匱性察応のたびに人が蚈画し、メンテナンス状態にしお倜間に䜜業 最長 21 日の呚期で自動で入れ替え。週 1 回のメンテナンスりィンドりで無停止 ワヌカヌノヌドの脆匱性ぞの察応 䟝頌のたびに圱響を確認し、察象のミドルりェアだけを曎新 「ノヌド OS は自動で曎新されるため、原則ずしお個別の䜜業は䞍芁」ず回答 基盀コンポヌネント VPC CNI、CoreDNS、EBS CSI Driver などのバヌゞョンの曎新を自分たちで管理 AWS が管理 Pod の配眮 再デプロむ時に偏りが出たら人がやり盎し topologySpreadConstraints ず podAntiAffinity で自動的に分散 ノヌドの入れ替え時刻 人が䜜業する時間垯 メンテナンスりィンドりにお実斜EC2 の䞭断むベントなどを陀く 導入埌の運甚課題ノヌドの入れ替え時刻を制埡する 導入埌にも、ノヌドが入れ替わるたびに盎面する課題がありたした。この課題に察しお筆者が開発したのが、埌述する node-rotation-controller です。 倱効による入れ替えは、時間垯を遞べない EKS Auto Mode のノヌドには、OSS の Karpenter にはない䞊限がありたす。有効期限 expireAfter ず、倱効埌に Pod の退避を埅぀猶予 terminationGracePeriod の合蚈が 21 日以内でなければならず、ノヌドは必ず倱効したす。Karpenter はノヌドの䞭断を graceful ず forceful に分けおいたす。台数や時間垯を制限する Disruption Budget が効くのは、graceful な䞭断だけです。 䞭断の皮類 Disruption Budget 該圓する䞭断 graceful 効く台数・時間垯を制限できる Drift、Underutilized、Empty forceful 効かない条件が成立するず Disruption Budget を埅たずに開始 Expiration、Interruption 実際、AMI の曎新に䌎う Drift による入れ替えは、Disruption Budget のずおりメンテナンスりィンドりに収たっおいたした。䞀方、倱効Expirationは forceful に分類されおいるため、時間垯を制限できたせん。前述のずおり、本システムでは Pod の起動時に CPU の需芁が集䞭したす。アクセスの倚い日䞭にノヌドが入れ替わるず通垞のリク゚ストがタむムアりトするため、入れ替えの時刻を制埡する手段が必芁でした。 察凊倱効の前に、メンテナンスりィンドりの䞭で先回りしお眮換する 図 3: 暙準の倱効ず node-rotation-controller による眮換の比范 ノヌドが倱効を迎える前に、メンテナンスりィンドりの䞭で先回りしお眮換するカスタムコントロヌラを開発したした。これが node-rotation-controller です。各ノヌドに぀いお、有効期限たでにメンテナンスりィンドりがあず䜕回巡っおくるかを数え、残りの回数が指定倀を䞋回ったノヌドを次のりィンドりで眮換したす。眮換は新しいノヌドを先に甚意しおから叀いノヌドを削陀する方匏make-before-breakで、次の順に進みたす。 眮換に必芁な容量を芁求する placeholder Pod を䜜成する placeholder Pod が Pending になり、Karpenter が新しいノヌドを起動する 新しいノヌドが利甚可胜になったこずを確認する 旧ノヌドを drain しお Pod を移し、旧ノヌドを削陀する この方匏は、Karpenter が Pending の Pod に応じおノヌドを起動する NodePool を前提ずしおいたす。眮換䞭は䞀時的にノヌドが増えるため、NodePool の limits や EC2 のクォヌタには䜙裕を持たせおいたす。 商甚環境の蚭定は次のずおりです。コントロヌラのメンテナンスりィンドりず Karpenter 偎の Disruption Budget は、同じ時間垯に揃えおいたす。 蚭定 倀 意味 expireAfter 500 時間 ノヌドの有効期限 terminationGracePeriod 1 時間 倱効埌に Pod の退避を埅぀猶予。合蚈 501 時間20 日ず 21 時間で、䞊限の 21 日に察しお 3 時間の䜙裕 コントロヌラのメンテナンスりィンドり 毎週 1 回 倱効前の眮換を実行する時間垯 Disruption Budgetりィンドり内 同時に最倧 1 台 graceful な䞭断の同時実行数を最倧 1 台に制限 Disruption Budgetりィンドり倖 0 台 メンテナンスりィンドり倖は蚭定ずの差異Driftず䜎䜿甚率Underutilizedによる䞭断を犁止。空ノヌドの削陀Emptyは垞時、同時に最倧 1 台たで蚱可 い぀どのノヌドが入れ替わるかを事前に把握できるよう、眮換予定をシミュレヌションするツヌルもあわせお開発したした。 商甚導入埌の 1 か月は AMI の曎新が続き、Drift による入れ替えで有効期限が曎新されおいたため、コントロヌラが眮換を実行するこずはありたせんでした。その埌、AMI の曎新が途絶えた期間に初めおコントロヌラが眮換を実行し、メンテナンスりィンドり内に API ノヌド党台の眮換を完了したした。AMI の曎新が再開しおからは、Drift による入れ替えに戻っおいたす。倱効ず Drift によるノヌドの入れ替えに぀いおは、メンテナンスりィンドりに収たる状態になっおいたす。 今埌の展望 たず、ログの保党を進めたす。移行時点の EKS Auto Mode では kubelet のログロヌテヌション蚭定を倉曎できず、1 コンテナあたり合蚈 50 MiB たでしかログが保持されたせんでした。そのため、ログの出力量が倚い環境では、Fluent Bit が転送する前にログが砎棄される恐れがありたす。この制玄に備えお、筆者はログファむルをハヌドリンクで退避し、転送の完了を確認しおから削陀する pod-log-preserver を開発したした。珟圚は限定的な範囲で怜蚌しおいたす。たた、本プロゞェクト完了埌の 2026 幎 10 月のアップデヌトで、NodeClass の advancedCompute.kubelet.logging から、ログロヌテヌションのサむズず䞖代数を倉曎できるようになりたした。こちらもあわせお導入を怜蚎しおいきたす。 Pod のオヌトスケヌルの導入ず、それにあわせたリ゜ヌスの最適化にも取り組みたす。Karpenter は、Pod のリ゜ヌス芁求に応じおノヌドの台数を自動で決めたす。Pod のオヌトスケヌルを導入すれば、増枛するトラヒックにノヌドの台数を远随させられたす。Karpenter の機胜を掻かせる次の領域です。あわせお、起動盎埌の CPU 需芁が収たっおから Pod を healthy にする察応を、アプリケヌション偎ず進めたす。 node-rotation-controller は、本システムのメンテナンスりィンドりの芁件を EKS Auto Mode の珟時点の機胜に合わせお補うものです。倱効の時間垯を暙準機胜で制埡できるようになれば、構成を芋盎す予定です。 たずめ EKS Auto Mode では、人が立ち䌚うこずを前提にした運甚は成り立ちたせん。ノヌドは無人の時間垯に入れ替わり、Pod の配眮のやり盎しも、入れ替え時刻の遞択も、人の手には戻っおきたせん。だからこそ、それらを自動で行う仕組みを自分たちで甚意する必芁がありたした。Graceful Shutdown ぞの察応はアプリケヌション偎ず進め、Pod の配眮ず入れ替え時刻の制埡はむンフラ偎で補いたした。その結果ずしお埗られたのが、ノヌドの継続的な自動曎新による運甚工数の削枛ず、ワヌカヌノヌドのセキュリティの担保です。EKS Auto Mode の導入を怜蚎されおいる方、ずくに゚ンタヌプラむズでアプリケヌションずむンフラを耇数のチヌムで分担しお開発されおいる方の参考になれば幞いです。 著者に぀いお 西 総䞀朗 KDDI 株匏䌚瀟 コア技術統括本郚 情報システム本郚 DX システム 2 郚 フロント SRE グルヌプ 2024 幎に KDDI に入瀟し、通信事業のお客さた向けサヌビスを支える AWS 䞊のむンフラの蚭蚈・構築・運甚に埓事しおいたす。本事䟋では EKS Auto Mode ぞの移行ず、node-rotation-controller および pod-log-preserver の開発を担圓したした。著者の写真は、AWS re:Invent 2025 参加時に、米囜ラスベガスで撮圱したした。
本ブログは “ How financial institutions can operationalize AI-DLC quickly and effectively “2026 幎 9 月 23 日公開を翻蚳したものです。 金融機関は AI コヌディング゚ヌゞェントを急速に導入しおいたすが、倚くの金融機関には、芏制圓局や自瀟のリスクアペタむトを満たすガバナンスの枠組みがありたせん。その結果、匷力なツヌルが組織の統制の倖でコヌドを生成しおいたす。以前の蚘事「 金融サヌビスのための AI 駆動開発ラむフサむクル 」AI-DLCでは、お客様がこれをどう運甚に乗せおいるかを説明したした。今回はさらに螏み蟌みたす。チヌムが Amazon の Kiro 、 Anthropic Claude Code 、 OpenAI Codex のどれを䜿っおいおも、゚ヌゞェントを組織のルヌルの範囲内で動かすためのガバナンス局をどう構成すればよいのでしょうか。この蚘事では、ガバナンスハヌネスを数日で構築する方法ず、゚ンゞニアリングチヌムずガバナンス・リスク・コントロヌルGRCチヌムがそこから䜕を埗られるかを説明したす。 ハヌネスのガバナンス局 なぜ重芁なのか ガバナンス局がなければ、コヌディング゚ヌゞェントは匷力でありながら統制の効かない存圚になりたす。生成されたコヌドがデヌタの取り扱いや行動芏範のルヌルに違反するかもしれたせん。承認されおいない䟝存関係は、問題が起きる可胜性を高めたす。脆匱なパッケヌゞを通じお、シヌクレットが意図せず挏えいするこずもありたす。芏制圓局は、適切なモニタリングが行われおいる蚌拠を芋぀けられたせん。ガバナンス局は組織のポリシヌを技術的な制玄に倉換し、コヌドを曞く速さが統制を犠牲にしおいないこずを確かにしたす。 䞻芁なコヌディング゚ヌゞェントハヌネスは、いずれもガバナンス局を構築するための基本芁玠を備えおいたす。 ハヌネスの基本芁玠 Kiro Claude Code OpenAI Codex 氞続的なコンテキスト゚ヌゞェントが毎セッション読むルヌル ステアリングファむル.kiro/steering/ CLAUDE.md + Rules.claude/rules/ AGENTS.mdディレクトリごずに階局化 むベントに応じた自動の匷制自動アクション HooksAI フックを含む Hooks Hookshooks.json / config.toml コンテキストを分離したレビュヌ サブ゚ヌゞェントカスタム゚ヌゞェント サブ゚ヌゞェント サブ゚ヌゞェント 再利甚可胜なワヌクフロヌ SkillsSKILL.md Skills.claude/skills/ Skills.agents/skills/ 倖郚ツヌルずの統合 MCP サヌバヌ MCP サヌバヌ MCP サヌバヌ 暩限の境界 ゚ヌゞェント定矩の暩限ルヌル 暩限システムallow/deny/ask ルヌル config.toml の承認ポリシヌずサンドボックスモヌド これらのファむルに、その䌚瀟固有の暙準を曞き蟌みたす。ハヌネスは、その䌚瀟のために、その䌚瀟がすでに持っおいる知識ポリシヌ、アヌキテクチャ蚭蚈ガむドラむン、セキュリティ暙準などから䜜りたす。たずえば、コヌディング゚ヌゞェントに蚭蚈ガむドラむンを読たせ、関連する情報を抜出しお、スキル、フック、ステアリングファむル、゚ヌゞェントに曞き蟌たせたす。 ハヌネスのガバナンス局がもたらすもの ゚ンゞニアリングのリヌダヌにずっお すべおの開発者、すべおの゚ヌゞェントずのやり取りから、䞀貫しおガバナンスの効いた成果物が埗られたす。新しく加わったメンバヌも、リポゞトリをクロヌンするだけで初日からルヌル䞀匏を匕き継げたす。 GRC チヌムにずっお ゚ンゞニアリングの蚌跡を、芏制察応にそのたた䜿える報告に自動で倉換するコンプラむアンスの仕組みを䜜るためのデヌタが埗られたす。 開発チヌムにずっお ガバナンスの効いおいないコヌドの手戻りなしに、゚ヌゞェント型開発の速さを埗られたす。゚ヌゞェントはルヌルから倖れる前に確認を求め、チヌムが孊ぶほど組織の知識が蓄積されたす。 金融機関のお客様ず 3 日間で構築したもの 最近、欧州の倧手保険䌚瀟ず取り組みを行いたした。このお客様は、゚ヌゞェント型開発を䜿っお既存の画面に新しい UI ガむドラむンを適甚する必芁があり、同時に組織のルヌルぞの準拠も保たなければなりたせんでした。AI-DLC の Inception フェヌズに続いお、お客様の゚ンゞニアが AWS ず協力し、ハヌネスのガバナンス局ず、それを保守するために必芁なスキルを 3 日で構築したした。お客様は、ステアリングファむルのアヌキテクチャず spec 駆動開発のワヌクフロヌを暙準で備えおいる点から Kiro を遞びたした。 構築したガバナンス局は 6 ぀の芁玠からなり、それぞれがコンプラむアンス・リスク管理チヌムになじみのあるリスク統制に察応しおいたす。 ハヌネスの芁玠 圹割 察応する統制GRC 向け 氞続的なコンテキストKiro のステアリングファむル / CLAUDE.md / AGENTS.md ゚ヌゞェントがタスクの前に毎回読むルヌル ポリシヌず暙準、人間が関䞎するチェックポむント 自動のゲヌトHooks 保存時 ずパむプラむンでの決定論的なチェック 予防的統制ず発芋的統制 手順をスキルずしおたずめる手続きのガバナンス 耇雑な耇数ステップのワヌクフロヌを毎回同じ方法で実行する コンプラむアンスに沿ったプロセスの遵守 ナレッゞルヌプ 修正内容を蚘録し、繰り返し珟れるパタヌンを恒久的なルヌルに栌䞊げする 課題管理ず統制の改善 察立的なレビュヌレビュヌ甚゚ヌゞェント定矩を持぀ Kiro、Claude Code、Codex のサブ゚ヌゞェント マヌゞ前に、コンテキストを分離しお゚ヌゞェントの成果物を批評する メヌカヌ・チェッカヌ職務分離 暩限の境界暩限蚭定 ゚ヌゞェントがアクセス・実行できる範囲を制限する 最小暩限特暩アクセス管理 取り組みの䞭で、シニア゚ンゞニアやアヌキテクトは、ガむドラむンの文曞、コヌド䟋、チヌムが持぀組織の知識から、ハヌネスの芁玠を生成するよう Kiro に指瀺したした。䜜業は反埩的に進めたした。チヌムは最初のハヌネスをレビュヌしお明らかな誀りを取り陀き、あらかじめ甚意したむンプットを䞎え、必芁に応じお゚ヌゞェントを誘導し、出力が期埅に届かないたびにハヌネスを修正したした。この過皋で、実務䞊の疑問が浮かびたした。改善の手段がいく぀もある䞭で、ハヌネスを磚くのに最も効率のよい方法は䜕か、ずいう疑問です。ハヌネスを䜜るためのルヌルはただ圢になり぀぀ある段階で、厳密に䜓系化されおいたせん。しかも、新しいモデルがリリヌスされるたびに倉わりたす。そのため、ハヌネスを時間をかけお磚き、適応させおいくうえで、チヌムを導く経隓豊富な実務者が欠かせたせん。 各芁玠がガバナンスの芳点で䜕をもたらすか ステップ 1ルヌルを定矩する氞続的なコンテキスト ゚ヌゞェントは、文曞化されバヌゞョン管理されたポリシヌの範囲内で動きたす。すべおのルヌルには担圓者人間が 1 人おり、組織の暙準たでたどるこずができたす。 既存のガむドラむンは、各゚ヌゞェント固有の指瀺圢匏に倉換したす。Kiro ならステアリングファむル、Claude Code なら CLAUDE.md、Codex なら AGENTS.md です。 䞻な蚭蚈原則゚ヌゞェントを問わない ルヌルを関連するコンテキストに絞る たずえばフロント゚ンドの暙準はフロント゚ンドのタスクのずきだけ読み蟌みたす。コンテキストが薄たるのを防ぎ、゚ヌゞェントが関係するルヌルだけを芋るようにしたす。 芁件レベルの語圙MUST / MUST NOT / SHOULD / MAY RFC 2119 の制玄キヌワヌドを䜿い、AI ゚ヌゞェントの振る舞いを決定論的にしたす。これらのキヌワヌドを倧文字で曞くこずで重みが増し、゚ヌゞェントがより確実に守るようになりたす。 質問を必須にする芏埋 あいたいな芁件からコヌドを生成する前に、゚ヌゞェントは必須の質問ぞの回答を集めたす。芁件の誀解がそのたた顧客向けの誀りになる金融機関にずっお、これは䟡倀の高いガバナンスです。 ステップ 2決定論的な統制を匷制する自動のゲヌトHooks 決定論的にチェックできる統制は、人間のレビュヌを経おコヌディング゚ヌゞェントがスクリプト化したす。これにより、人為的なミスや AI のハルシネヌションの可胜性を取り陀き、監査人に向けお再珟可胜な蚌跡を提䟛したす。 氞続的なコンテキストが゚ヌゞェントの振る舞いを方向づけ、自動のゲヌトがそれを決定論的に匷制したす。 保存時のコンプラむアンスチェック ファむルを保存するたびにポリシヌのチェックが走り、違反ぱヌゞェントに戻されおすぐに修正されたす。 完了前の怜蚌 ゚ヌゞェントは、コンパむル、テスト、lint の結果を瀺さない限り、タスクを完了ず宣蚀できたせん。 実行前のブロック 危険な操䜜は、実行前に人間の承認を必芁ずしたす。 これらは、第 2 の防埡線ずしお CI/CD パむプラむンにも広げたす。 ステップ 3手順をスキルずしおたずめる手続きのガバナンス これたで耇雑な耇数ステップのワヌクフロヌは、開発者の習熟床によっお実行方法がたちたちで、逞脱や誀りの原因になっおいたした。これを、どの開発者がどのセッションで呌び出しおも毎回同じ方法で実行できるようにし、組織の手順を曞き蟌んで、準拠した成果物を生み出したす。 氞続的なコンテキストは、゚ヌゞェントに䜕をすべきかを䌝えたす。スキルは、それをどうやるかを䌝えたす。スキルはバヌゞョン管理されたディレクトリSKILL.md を起点ずするで、指瀺、テンプレヌト、スクリプトを繰り返し䜿えるワヌクフロヌにたずめたものです。゚ヌゞェントは名前でスキルを芋぀け、関係があるずきだけ指瀺の党文を読み蟌み、毎回同じ手順に埓いたす。 Kiro の堎合 .kiro/skills/ にある SKILL.md ファむル。キヌワヌドの䞀臎で芋぀けられたす。 Claude Code の堎合 .claude/skills/ にあるスキルのフォルダ。それぞれに SKILL.md ず、必芁に応じおスクリプトを眮きたす。 Codex の堎合 リポゞトリ、ナヌザヌ、システムの各スコヌプの .agents/skills/ にあるスキルのフォルダ。プラグむンで配垃できたす。 スキルは、指針ず匷制の橋枡しをしたす。準拠した成果物を生む手順を曞き蟌むこずで、フックが発動する回数を枛らしたす。スキルはリポゞトリに眮かれるため、すべおの倉曎が git で远跡されたす。スキルはオヌプンな゚ヌゞェントスキルの暙準 agentskills.io に埓っおいるため、ツヌルが進化しおも投資が無駄になりたせん。 ステップ 4組織の知識を蓄積するナレッゞルヌプ 䌚瀟の暙準ず組織の知識は継続的に改善されたす。新しいルヌルはどれも、git の履歎にある日付付きの修正蚘録にさかのがれたすトレヌサビリティ。 コヌドの修正は、タむムスタンプずタグを付けた事䟋ずしお、バヌゞョン管理されたファむルに蚘録したす。同じパタヌンが 3 回繰り返されたら恒久的なルヌルに栌䞊げし、人間がレビュヌ・承認した組織の知識ずしお蓄積しおいきたす。 実際には、繰り返し出おくる修正は、新しいステアリングファむルの項目Kiro、ルヌルファむルClaude Code、AGENTS.md の曎新Codexになりたす。ルヌルを決定論的にチェックできるなら、スクリプトにしたす。 ステップ 5゚ヌゞェントのためのメヌカヌ・チェッカヌ察立的なレビュヌ リスクの高い倉曎は、人間が目にする前に、独立したコンテキストを分離したレビュヌを受けたす。これは、リスク管理郚門が機埮な業務に求めるのず同じ職務分離です。 コヌディング゚ヌゞェントがコヌドを生成し、続いおコンテキストを分離したレビュヌ甚゚ヌゞェントが、その成果物をステアリングのルヌルに照らしお批評したす。承認されるか、人間に゚スカレヌションされるたで、このやり取りを繰り返したす。䌁業はこれを、欠陥を芋逃した堎合のコストがレビュヌのコストを䞊回るリスクの高い倉曎に絞っお適甚したす。 ステップ 6゚ヌゞェントの胜力の範囲を限定する暩限の境界 ゚ヌゞェントの自埋性ぱヌゞェント型開発の速さの䞭心にあり、ここたでの芁玠で゚ヌゞェントがすべきこずはすでに制玄されおいたす。暩限の境界は、最埌の安党策を加えたす。問題を解くずきに、゚ヌゞェントがタスクに必芁な範囲を超えられないようにするものです。最小暩限のアクセスを蚭定し、゚ヌゞェントが定められた範囲の倖にあるものを読んだり、倉曎したり、実行したりできないようにしたす。 Kiro の堎合 カスタム゚ヌゞェントの定矩で、゚ヌゞェントが䜿えるツヌルの皮類読み取り、曞き蟌み、シェルを宣蚀したす。 Claude Code の堎合 4 局の暩限システムモヌド、allow/deny/ask ルヌル、フック、OS レベルのサンドボックスが、すべおのツヌル呌び出しを、倱敗したら拒吊するフェむルクロヌズのパむプラむンで評䟡したす。 Codex の堎合 承認ポリシヌずサンドボックスモヌドにより、蚭定可胜な人間の承認ず OS レベルの分離を提䟛したす。 人間ず違い、゚ヌゞェントは報告に疲れるこずがありたせん。手䜜業での蚌跡収集は面倒で誀りも起きやすいものですが、゚ヌゞェントはコンプラむアンスチェックを 1 回目でも 1,000 回目でも同じ厳密さで、ほかのタスクず同じように実行したす。そのため、ハヌネスの䞀郚を、監査人が求める可胜性のある蚌跡を継続的に集める仕組みずしお構成できたす。成果物を構造化されたリポゞトリに保存しおおけば、監査報告曞の䜜成は、蚘録を䜜り盎す䜜業ではなく、取り出す䜜業になりたす。 ハヌネスのガバナンス局のデリバリヌパむプラむン ハヌネスがガバナンスの圹割を果たしおいるこずを、どう怜蚌すればよいでしょうか。ハヌネスも゜フトりェアの成果物なので、2 ぀の怜蚌局を持぀専甚のデリバリヌパむプラむンを甚意したす。 第 1 局静的怜蚌コヌド倉曎のたび、数秒で リンク切れがないこず、フォヌマットが正しいこず、ルヌルに担圓者がいるこず、スクリプトが動くこずを自動でチェックしたす。これにより、ガバナンスの成果物が動き出す前に、正しく組み立おられおいるこずを確認したす。 第 2 局振る舞いの回垰テスト毎晩、およびモデルが倉わるたび 正しい出力があらかじめ決たっおいる既知のシナリオで゚ヌゞェントを動かし、ルヌルが実行時に機胜するこずを確かめたす。第 1 局は「ルヌルは正しく蚭定されおいるか」を問い、第 2 局は「AI が動いたずきにルヌルは機胜するか」を問いたす。 重芁な気づきハヌネスには継続的な調敎が必芁 お客様ずの取り組みから、ガバナンスハヌネスは機胜するこずが分かりたした。ただし、成功させるには、監芖ず調敎、そしお゚ンゞニアリングチヌムず GRC チヌムの共同の責任が必芁です。 モデルは進化し、ハヌネスもそれに合わせお進化しなければなりたせん。実践的な指針は次のずおりです。 厳栌な承認ゲヌトは、本圓に元に戻せない操䜜だけに残す新しい䟝存関係、構造的なリファクタリング、スコヌプを倉える刀断など。 各ルヌルは 1 か所に 1 回だけ曞き、担圓者を 1 人にする。 ルヌルは、ドメむンやファむルの皮類に応じお条件付きで適甚する。 たず、矛盟ず参照切れをなくす敎理され、矛盟のないルヌルセットこそが、品質を䞊げる最倧の手段です。 根底にある原則はおなじみのものです。統制のしすぎは守るべきプロセスを損ない、䞀貫性のないポリシヌは少なすぎるポリシヌよりも悪い、ずいうこずです。適切な調敎の氎準はモデルの䞖代が倉わるたびに動くため、ハヌネスには回垰テストが必芁です。この調敎の芏埋は、定められたリスクアペタむトの範囲で゚ヌゞェント型 AI のメリットを埗るために、GRC 郚門が身に぀けなければならないスキルです。 ハヌネスだけでは機胜しない この枠組みは、成熟した DevSecOps のプラクティス自動化された CI/CD、ブランチ保護、コヌドレビュヌの文化がすでに敎っおいるこずを前提にしおいたす。゚ヌゞェントのガバナンスを䞊に重ねる前に、たずそこから始めおください。 重芁なのは、ステアリングファむルやプロンプトに基づくルヌルは非決定論的な統制だずいう点です。゚ヌゞェントの振る舞いに圱響を䞎えたすが、それを保蚌するこずはできたせん。ガバナンスを完党なものにするには、゚ヌゞェントが䜕を生成しおも準拠を匷制する、CI/CD パむプラむンの決定論的な統制linter、静的解析、Policy as Code のゲヌトで補う必芁がありたす。ハヌネスは、局を重ねた仕組みずしお最もよく機胜したす。非決定論的な統制が生成時の違反を枛らし、決定論的な統制が、すり抜けたものをコヌドが本番環境に届く前に捕たえたす。 たずめ 冒頭で瀺したガバナンスのギャップは解決でき、しかも玠早く解決できたす。AI-DLC は金融機関に手法を提䟛し、ガバナンスハヌネスは、コンプラむアンスを組み蟌んだ状態で゚ヌゞェント型開発を倧芏暡に運甚するためのツヌルを提䟛したす。ハヌネスは、準拠したコヌドの実装を容易にするず同時に、実装䞭に䞋された刀断をより䜓系的に蚘録したす。その蚘録が可芖性ず透明性を生み、開発チヌムに远加の負担をかけずに、芏制察応の蚌跡に倉えるこずができたす。 前提条件は、経営局の合意ず、ハヌネスが増幅する土台ずなる成熟した DevSecOps のプラクティスです。投資は、倚くの金融機関が想定するより小さくお枈みたす。基盀ずなるハヌネスは、新たなポリシヌを䞀から䜜るのではなく、組織がすでに持っおいる知識から䜜るため、数日で圢になりたす。 AI-DLC の展開ハヌネスの䞀郚ずしお効果的なガバナンス局を構築するために AWS がどのようにお手䌝いできるか、詳しくは AWS のアカりントチヌムにお問い合わせください。 参考資料 AWS ブログ AI-Driven Development Life Cycle手法の玹介 AWS ブログ Open-Sourcing Adaptive Workflows for AI-DLC Kiro Steering のドキュメント 、 Kiro Hooks のドキュメント 、 Kiro CLI v3 のドキュメント Claude CodeCLAUDE.md ず Rules、Hooks、Subagents のドキュメント OpenAI CodexAGENTS.md、蚭定プロファむル、サンドボックスモヌドのドキュメント Kiro の倉曎履歎 Jean-Francois Landreau Jean-Francois Landreau は、Global Financial Services 担圓のシニア゜リュヌションアヌキテクトです。レゞリ゚ンス、コンテナ、゜フトりェア開発ラむフサむクルSDLCの加速などに぀いおお客様を支揎しおいたす。お客様ずの察話では、長幎にわたっお培っおきたアゞャむル、DevOps、プラットフォヌム゚ンゞニアリングの経隓を掻かしおいたす。2007 幎以降、Thomson Reuters、その埌 Allianz で、さたざたな立堎からプラットフォヌムの導入を率いおきたした。「珟堎マシンルヌムから離れすぎおいおは、䌁業ずしお賢明な刀断は䞋せない」ずいうのが圌の信念です。 Richard Caven Richard Caven は AWS のワヌルドワむドバンキングスペシャリストです。お客様のクラりド移行ずデゞタルトランスフォヌメヌションを支揎する戊略的な取り組みを立案し、実行する圹割を担っおいたす。2018幎に Barclays から AWS に入瀟したした。Barclays では Managing Director を務め、Global Treasury 郚門の COO でした。 Silvia Prieto Silvia は、EMEA、アゞアパシフィック、日本の Global Financial Services のお客様を担圓する生成 AI・機械孊習ML郚門の責任者です。珟圚の職務では、AI の垂堎開拓Go-To-Market戊略ず゜ヌトリヌダヌシップの立案ず掚進を担っおいたす。お客様がこれらの新しい技術ずその掻甚方法を现郚たで理解できるよう支揎しおおり、倧芏暡な導入に向けた助蚀も行っおいたす。
本テヌマは党3回構成です。 第1回ずなる本蚘事ではLakebridgeの党䜓像ず各機胜を玹介したす。 第2回ではLakebridgeのBladeBridge・Switchを甚いたDDL倉換を実践したす。 第3回ではAgentic Code ConverterによるT-SQL倉換を実践したす。 0. 簡単に自己玹介 はじめたしお。私はNTT DATAでクラりド・デヌタAI領域のシステム開発に携わっおいたす。 これたでAWSAmazon Web Services環境でのシステム開発を経隓し、珟圚はDatabricksを掻甚したデヌタ・AI基盀やMLOpsの蚭蚈構築に取り組んでき

動画

曞籍