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

Amebaにおける Platform Engineeringの実践

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Amebaにおける Platform Engineeringの実践

Avatar for Kumo Ishikawa

Kumo Ishikawa

April 07, 2025
Tweet

More Decks by Kumo Ishikawa

Other Decks in Technology

Transcript

  1. 谷成 雄 •2014年新卒入社 •現在: Service Reliability Group (SRG) •Ameba Platform

    チーム •最近開発などで利用した技術: EKS GKE kubernetes on-premise Amazon Aurora Github Actions SRG技術記事
  2. 技術選定: コンピューティング基盤 Kubernetes on AWS(EKS) • KubrenetesのManagedサービスを利用することにより管理者の運用負荷削減 Self-Managed-NodeGroup(当時の状況) • user_dataが流せる(社内認証によるログイン設定)

    • 追加のSecurity Groupが指定できる Spot Instanceの活用 • コストを抑えるためにSpot Instanceも併用 Cluster-AutoscalerとHPA • 当時のWorkerNodeのスケールサービスだとほぼ一択 • Podに関しては特殊なスケール要件がなかったのでHPAを採用
  3. 技術選定: ネットワーキング • セキュリティポリシー等を簡 単に適用できる • 可観測性の確保 ◦ 問題発生時にログやメトリ クス、トレース情報などを

    もとに調査が可能 出典:(アクセス日: 2025/04/03) https://istio.io/latest/docs/ops/deployment/architectu Istioの導入 • 基本的にマイクロサービスアーキテクチャを採用しており、分散トレーシングやメトリク ス収集などが容易に行える
  4. 技術選定: ログ管理の初期構成 ログデータの流れ EKS-> fluentbit-> Kinesis Data Streams →Lambda→etc… シンプルなログ体験を提

    供 ユーザは標準出力にログ を出力するだけで、必要 なところに必要なログが 送られる
  5. 技術選定: CI/CD GitHub Actions(CI) • 開発にGitHubを使用しており、社内にSelfHostRunnerも存在していたため採用 ArgoCD(CD) • ArgoCDは導入と管理が容易 Bootstrapのプロセスが不要で、HA構成でも単一のYAMLファイルでデプロイ可能

    • ArgoCDの優れたユーザー体験 ArgoCDのUIは速度とわかりやすさが高評価 • ArgoCDの活発なコミュニティとPlatformチームとの親和性 2020年時点で既にIncubating Projectに昇格しており、最も期待されているCDプロジェ クトの一つであった 社内Platformチームの技術スタック(Go言語が多い)と親和性が高く、Issueを提起しやす い環境
  6. 技術選定: アプリケーション定義モデル KubeVelaとは • OAMモデルを使用して開発者のデプロイを簡素化し、拡張性 を実現するツール KubeVelaの選択理由 • ユーザのk8sに対する認知負荷を減らす •

    clusterを管理するうえで必須となる設定を管理者側として 強制できる KubeVelaとCUE langについて CUE langを用いて条件文やデータ変換等を行い、必要なyaml を生成する
  7. 技術選定: モニタリング Datadogの採用 • メンバーの習熟度が高い • いろいろな機能が充実 • AWSとの連携も容易 アプリケーション側のDatadogの活用

    • Prometheus Endpoint (Annotation)を付与することでメトリクスを収集 • GoアプリケーションにDatadogのGo SDKを組み込むことで、アプリケーション のパフォーマンスデータ(APMデータ)をDatadogへ送信し、可視化・監視
  8. 石川 雲 •2023年11月中途入社 •Service Reliability Group (SRG) •Ameba Platform チーム(2023/11~現在)

    •担当領域: EKS Node運用(Karpenter) Security(テナント設計・ネットワーキング・Audit監 視) CI/CD(ArgoCD・FluxCD・Terraform) SRG技術記事
  9. ログ管理の再設計 課題 • ログ転送経路がLambdaとKDSに依存し、ログの可用性と耐障害性に課題 • OpenSearchに全ログを格納できず、ログ検索性が低下 解決 • Fluent Bit

    によりログを直接 S3 へ転送 • 必要な転送処理のみ S3 -> SQS -> Lambda で非同期実行する構成へ移行 • Athena を導入し、S3 上のログに対するクエリベースの検索を実現
  10. インシデント対応とモニタリングの改善 背景 • アラート対応が属人化し、再発・対応の遅延・ナレッジが継承されないなどが発生 • アラートとインシデント設定がGUI操作中心、設定の属人化 • インシデントの緊急度や影響と最終的解決を定量的に判断・評価しづらい状況、たまに放置 主な取り組み 1.

    インシデント対応の標準化: インシデントコマンダー制度の導入 トリアージ基準の策定 2. ツールによるプロセスの一元化、宣言的管理の実現 Datadog Incident+Slackによるインシデント管理の統一 Datadog Operator によるモニタリング設定の宣言的管理 3. インシデント対応などモニタリングの改善 Incident Metricsダッシュボードによる分析と継続的改善
  11. リリース以来の改善まとめ • Platform改善のための対話体制 • 以下の改善にフォーカスして紹介 マニフェスト変更プロセスの簡素化: より利便性の高いセルフサービス環境の提供 ログ管理の再設計: より安価で管理しやすい設計への移行 インシデント対応とモニタリングの改善:

    より効率的なインシデント対応体制などの整備 その他の改善: PDF版/SpeakerDeck版でご参照ください CI/CDの高速化・パフォーマンス最適化 Post Release Workflowの開発 AWS/EKSにおけるマルチテナント対応 Nodeスケジューリング最適化 Podリソース使用最適化
  12. インシデントマネジメント 課題 • アラート対応が放置・属人化し、同様のインシデントが再発 • 対応フローが明確でなく、解決までに時間を要する • 過去のインシデント履歴や対処内容が整理されておらず、ナレッジが継承されにく い 解決

    • Datadog Incident を中核に据え、発生〜対応〜振り返りまでのプロセスを一元 管理 • 統一されたインシデント対応フローを整備し、全チームでの共通運用を徹底 • トリアージ基準とインシデントコマンダーの役割を明確化し、対応の迅速化と属人 化の防止を実現
  13. モニタリングの改善 課題 • アラート条件や通知設定がGUI操作中心、設定の属人化 • チーム構成が変わるたびに過去の運用知見が失われる • インシデントに対し、定量的評価ができず、緊急性の高い恒久対策が後回しにされ る傾向 解決

    • Datadog Operator導入、モニタリング設定の宣言的管理を実現 • Embedded SREを各チームに配置し、プラクティス支援 • Incident Metrics ダッシュボードの整備、改善活動を追える状態に
  14. CI/CDの進化 イメージタグ更新自動化 FluxCD Image Automation (FluxCD+ArgoCD併用) Terraform CI高速化 Git差分のみTerraform Apply

    実行時間平均70%削減 CDパフォーマンス最適化 ArgoCD/FluxCD シャーディング 同期間隔やキャッシュ設定など、各種パラメータ調整 Post Release Workflow KubeVela Application Workflow導入 ArgoCD同期後、任意のリソースに任意のオペレーションが実行可能に
  15. CI/CDの進化: Terraform高速化 課題 • リソース数の増加により、Terraform 実行時間が 15〜30 分以上に肥大化 • 全体Apply運用のため、変更差分が見えづらく、意図しない影響のリスクがあっ

    た 解決 • Git差分があったModuleのみを対象にApplyを実行する方式に切り替え • 全体Applyは定期実行+確認フェーズを設けて、安全性と効率性を両立 • 実行時間を平均70%削減した
  16. CI/CDの進化: CD最適化 課題 • 監視対象リソースの増加により、ArgoCD の同期処理が遅延 • FluxCD の安定性が低下し、イメージ自動更新が断続的に停止 解決

    • ArgoCD・FluxCD をシャーディング構成に分割し、処理の並列化と負荷分散を実 現 • 同期間隔やキャッシュ設定など、各種パラメータを最適化し、リソース消費を削減 • 結果として、同期・更新の安定性が向上し、安定した運用が可能に
  17. CI/CDの進化: Post Release 課題 • Jenkins では対応できていたが、EKS + ArgoCD 移行後に制約が増加

    • ArgoCDの同期後に何かを実行したい処理が実現しづらい • ArgoCD の Resource Hook はリソース単位での制御ができず、細かいタイミン グ制御が不可能 解決 • KubeVela Application Workflowの導入により、Application単位でPost Release処理を定義可能に • GitHub Actions 実行・外部リソース確認なども可能 • PostReleaseの処理も同一Manifestで管理可能、運用の一貫性がある
  18. KubeVela 継続利用と今後の方針 課題 • 主要開発元(Alibaba Cloud)が2023年から開発中止、継続性に不安 • 複数環境に対応する Cuelang テンプレートが難読化し、保守負担増加

    • 社内で十分にメンテナンスできる体制がない 検討 •KubeVelaを代替可能なプロダクトは存在せず、引き続き利用を継続(2025/4時 点) •将来的な選択肢として、KubeVela 本体へのコントリビュートを検討中
  19. その他の改善 マルチテナント対応: 通信制御・権限分離を実現 • 通信制御:Security Groups for Pod、NetworkPolicy導入 • 権限分離:ResourceTagベースのIAM

    ABAC、Kubernetes RBACの見直し Node最適化: Karpenter導入 • Podの要求に応じて、適切なインスタンスタイプを動的に割り当て • 使用率の低いNodeを自動削除し、コストを大幅削減 Pod 最適化: Cloudnatix導入 • Prod以外へVPA AutoPilot機能導入
  20. マルチテナント化への移行 課題 • EKS Pod間、PodとAWSリソース間の通信制御と権限分離がない • セキュリティ要件が高い認証・決済系サービスが移設できない 解決 1. 通信制御

    • PodとAWSリソース間: Security Groups for Pod • Pod間: Network Policy 2. 権限分離 • AWS: IAM ResourceTag ABAC導入 • EKS: Kubernetes RBAC見直し
  21. Node最適化ツールの導入 問題 • Cluster Autoscalerでは、インスタンスタイプの最適化ができず、過剰なリ ソースとコストが発生 • Nodeの起動に時間がかかり、スケジューリングの遅延が発生することも 解決 •

    Karpenterに移行し、Podのリソース要求に応じて最適なNodeを起動 • インスタンスタイプを動的に選定し、コスト効率の良い構成を自動で実現 • 使用率の低いノードは自動で削除、クラスタ全体のコストを削減
  22. 完全なIDPへ IDP(Internal Developer Platform ): 開発者が機能開発に集中できるよう、共通化・自動化された基盤や仕組みを提供するもの 現時点で実現できていること • 標準化されたテンプレートとCI/CDの提供 •

    迷わないオンボーディング体験の整備 • Platform / 開発チーム間の明確な責任分離 これから目指していくこと • トイルの解消による開発者・運用者のペインを減らすこと • より柔軟で直感的な利用者セルフサービス体験を強化すること • プラットフォーム全体の状態と価値を、定量的に可視化・改善すること
  23. SLI/SLOの導入 「Platform 」は見えないプロダクト、価値を定量的に示すことが難しい • どのような指標が意味があるのか、利用者視点での SLI 設計を検討している段階 • SLIの例 セルフサービス機能の利用率

    デプロイ成功率 デプロイ所要時間 • 利用者視点の SLO を設定し、期待水準を明確化 • 定量的なデータに基づいた改善サイクルを回していける理想