[{"data":1,"prerenderedAt":1444},["ShallowReactive",2],{"/ja-jp/blog/how-to-design-gitlab-for-enterprise-scale":3,"navigation-ja-jp":695,"banner-ja-jp":1126,"footer-ja-jp":1134,"blog-post-authors-ja-jp-GitLab":1387,"blog-related-posts-ja-jp-how-to-design-gitlab-for-enterprise-scale":1402,"blog-share-wrapper-ja-jp":1425,"next-steps-ja-jp":1435},{"id":4,"title":5,"authors":6,"body":8,"category":654,"date":655,"description":656,"extension":657,"externalUrl":658,"faq":659,"featured":679,"heroImage":680,"meta":681,"navigation":682,"path":683,"seo":684,"slug":686,"stem":687,"tags":688,"template":692,"updatedDate":693,"__hash__":694},"blogPosts/ja-jp/blog/how-to-design-gitlab-for-enterprise-scale.md","数千人規模の開発を支えるGitLab環境の設計方法",[7],"GitLab",{"type":9,"value":10,"toc":632},"minimark",[11,15,18,34,37,43,63,66,69,72,78,84,90,93,113,116,119,122,125,134,137,157,160,165,173,176,179,182,191,194,209,212,215,217,220,240,243,252,255,258,278,281,289,292,294,297,300,303,306,309,332,335,338,346,349,352,355,358,361,364,367,371,374,377,380,384,393,396,399,408,410,413,611,614,617,620],[12,13,14],"p",{},"エンタープライズ規模では、小さなアーキテクチャ上の選択でも想定以上の影響を及ぼすことがあります。少数のチームでは問題なく機能していたデプロイも、数千人のデベロッパー、リポジトリ、パイプラインが依存するようになると、制約へと変わりかねません。",[12,16,17],{},"だからこそ、ロールアウト前の判断の一つひとつが大きな意味を持ちます。たとえば、次のような要素が挙げられます。",[19,20,21,25,28,31],"ul",{},[22,23,24],"li",{},"チームが運用すべき範囲を定めるデプロイモデル",[22,26,27],{},"CI/CDワークロードの実行方法や分離のあり方、さらにプラットフォームチームが担う運用負荷を左右するRunner戦略",[22,29,30],{},"冗長性と復旧のあり方を左右する可用性目標",[22,32,33],{},"プラットフォームに必要なキャパシティを決めるワークロード",[12,35,36],{},"これらの要素が組み合わさることで、新たな運用上の制約を生まずに、プラットフォームがどれだけ成長を吸収できるかが決まります。",[12,38,39],{},[40,41,42],"strong",{},"本ガイドの内容",[19,44,45,48,51,54,57,60],{},[22,46,47],{},"スケール前に決めておくべきアーキテクチャ上の判断",[22,49,50],{},"Runner戦略の立て方",[22,52,53],{},"高可用性とディザスタリカバリの計画",[22,55,56],{},"大規模環境でパイプラインのパフォーマンスが低下するポイント",[22,58,59],{},"Kubernetesとクラウドネイティブなデプロイの検討事項",[22,61,62],{},"プラットフォームチーム向けアーキテクチャ検証チェックリスト",[64,65],"hr",{},[67,68,47],"h2",{"id":47},[12,70,71],{},"GitLabのデプロイモデルによって、プラットフォームのどの部分をチームがサイジング、保護、監視、アップグレード、復旧しなければならないかが決まります。エンタープライズ向けのデプロイでは、主に次の3つの選択肢があります。",[12,73,74,77],{},[40,75,76],{},"GitLab.com："," GitLabが提供するマルチテナント型のSaaS（Software as a Service）です。アプリケーションと基盤インフラはGitLabが運用し、組織側はGitLabの設定やインテグレーション、自社で管理するRunnerを担当します。",[12,79,80,83],{},[40,81,82],{},"GitLab Dedicated："," Amazon Web Services（AWS）上でホストされる、フルマネージドの単一テナント型SaaSです。アップデート、高可用性、ディザスタリカバリを含む基盤インフラはGitLabが運用し、組織側はアプリケーションレベルの制御を通じてユーザーとデータへのアクセスを管理します。",[12,85,86,89],{},[40,87,88],{},"GitLab Self-Managed："," 組織が自らGitLabインスタンスをインストール、管理、保守します。インフラを自社で管理し、環境の運用、スケーリング、セキュリティ確保、復旧までを担います。",[12,91,92],{},"組織に求められる制御のレベルと、無理なく担えるインフラ運用の責任範囲を踏まえてモデルを選びましょう。たとえば、次のような選び方が考えられます。",[19,94,95,101,107],{},[22,96,97,98],{},"マルチテナント型SaaSで要件を満たせ、インフラ運用の最小化を最優先する場合は",[40,99,100],{},"GitLab.com",[22,102,103,104],{},"単一テナントによる分離や、ネットワーク、データレジデンシーといった領域の制御が必要で、なおかつGitLabのインフラを自社で運用したくない場合は",[40,105,106],{},"GitLab Dedicated",[22,108,109,110],{},"基盤インフラを直接制御する必要があり、プラットフォームを運用できる体制がチームに整っている場合は",[40,111,112],{},"GitLab Self-Managed",[12,114,115],{},"判断を下す前に、選択肢を絞り込む決め手となりうる要件を文書化しておきましょう。特に注意すべきなのは、データレジデンシー、ネットワーク分離、復旧目標、インフラの制御範囲です。そのうえで、アップグレード、監視、キャパシティの計画、バックアップ、インシデント対応など、各モデルでチーム側に残る運用業務を整理します。",[12,117,118],{},"この作業を通じて、組織にどこまでのインフラ責任が必要で、現実的にどこまで担えるのかという、核心となるトレードオフが明確になるはずです。",[12,120,121],{},"運用の境界線が定まったら、次はCI/CDワークロードを実行するコンピュートレイヤーの計画に進みます。",[67,123,50],{"id":124},"runner戦略の立て方",[12,126,127,133],{},[128,129,132],"a",{"href":130,"rel":131},"https://docs.gitlab.com/ja-jp/runner/",[],"GitLab Runner","はCI/CDジョブを実行し、その背後にあるパイプラインはGitLabアプリケーションが調整します。なぜこの役割分担がエンタープライズ規模で重要なのでしょうか。アプリケーションとRunnerとでは、キャパシティが反応する需要の種類が異なるからです。アプリケーションはGit、Web、API、自動化のトラフィックを処理し、RunnerフリートはCI/CD処理の量と同時実行数を吸収します。",[12,135,136],{},"そのため、Runnerフリートはデベロッパーの人数ではなく、ワークロードそのものに基づいてサイジングすべきです。まずは次の項目を文書化しましょう。",[19,138,139,142,145,148,151,154],{},[22,140,141],{},"ジョブの量と所要時間",[22,143,144],{},"ピーク時の同時実行数",[22,146,147],{},"オペレーティングシステムとコンピュートの要件",[22,149,150],{},"ネットワーク経路と特殊なハードウェア",[22,152,153],{},"特権が必要なワークロードや機密性の高いワークロード",[22,155,156],{},"リリース期間や定期スキャンなどのピーク期間",[12,158,159],{},"これらの情報をもとに、キュー待ち時間（queued duration）の目標を達成するために同時に実行しなければならないジョブ数を見積もります。チームの規模よりもワークロードのデータが重要なのは、デベロッパー数が同じ組織でも、パイプラインの実行頻度、自動化の度合い、ジョブの要件によってCI/CDの需要が大きく異なることがあるためです。",[161,162,164],"h3",{"id":163},"適切なrunnerスコープを選ぶ","適切なRunnerスコープを選ぶ",[12,166,167,172],{},[128,168,171],{"href":169,"rel":170},"https://docs.gitlab.com/ja-jp/ci/runners/runners_scope",[],"Runnerスコープ","は、各プールをチームがどの範囲で利用できるかを決めるもので、インスタンスRunnerはGitLabインスタンス全体のプロジェクトで、グループRunnerは特定グループ内のプロジェクトとサブグループに限定して利用できます。最も範囲が狭いプロジェクトRunnerは、専用の認証情報や特殊なインフラ、より強固な分離を必要とするワークロードに適しています。ただし、キャパシティを少数のワークロードで専有するため、ジョブの発生が断続的な場合はアイドル状態になることもあり、利用率も判断材料に加えましょう。",[12,174,175],{},"ワークロードの信頼境界とコンピュート要件を満たす範囲で、できるだけ広いスコープを選ぶのが基本です。一般にプールが広いほど利用率は高まる一方、機密性の高いデプロイジョブや特殊なワークロードでは、専用インフラを用意する合理性が生まれる場合もあります。",[161,177,178],{"id":178},"オートスケールを計画する",[12,180,181],{},"オートスケールを使えば、需要に応じてRunnerのキャパシティを拡張・縮小できますが、そのインフラの運用にもプラットフォームエンジニアリングの工数がかかります。Runnerフリートを自社で管理する場合は、新しいリソースが使えるようになるまでの時間を考慮してください。インスタンスのプロビジョニング、クラウドのクォータ、イメージのダウンロード、キャッシュの可用性はいずれも、需要が急増した際のキュー待ち時間に影響を与える可能性があります。追加のコンピュートが立ち上がるまでの短期的な需要を吸収できるよう、すぐに使えるキャパシティを十分に確保しておきましょう。",[12,183,184,185,190],{},"この運用業務をGitLabに任せることもできます。",[128,186,189],{"href":187,"rel":188},"https://about.gitlab.com/ja-jp/blog/hosted-runners-for-gitlab-dedicated/",[],"GitLabホストRunner","はGitLab.comとGitLab Dedicatedで利用でき、基盤となるRunnerインフラとオートスケールはGitLabが管理します。Runnerマシンのプロビジョニング、パッチ適用、スケーリングにかける時間を減らしたいチームにとって、Runner戦略はインフラ管理の判断から、キャパシティとワークロード配置の判断へと性質を変えることになるでしょう。",[161,192,193],{"id":193},"ワークロードに合ったexecutorを選ぶ",[12,195,196,197,202,203,208],{},"executorの選択によって、CI/CDジョブがどこで実行され、チームがどのインフラを運用しなければならないかが決まります。クラウドネイティブ環境であれば",[128,198,201],{"href":199,"rel":200},"https://docs.gitlab.com/ja-jp/runner/executors/kubernetes/",[],"Kubernetes executor","が既存のKubernetesクラスターを利用し、パブリッククラウドの仮想マシン上でオートスケールするワークロードであれば、",[128,204,207],{"href":205,"rel":206},"https://docs.gitlab.com/ja-jp/runner/executors/",[],"GitLabが提供する","Docker Autoscaler executorやInstance executorを使えます。",[12,210,211],{},"最適な選択は、ジョブが必要とする環境と、チームが管理できるインフラによって決まります。Kubernetes executorでは各CI/CDジョブが個別のPodで実行されるため、クラスターの挙動もRunnerのパフォーマンスの一部になります。スケジューリングの遅延、リソースのリクエストとリミット、ノードのキャパシティ、オートスケールといった要素はすべて、ジョブの開始や完了の速さに影響する点に注意してください。",[12,213,214],{},"CI/CDの需要が増えてもexecutorがボトルネックにならないよう、こうした制約をキャパシティの計画に織り込んでおきましょう。",[67,216,53],{"id":53},[12,218,219],{},"可用性の計画は、ダウンタイムとデータ損失がビジネスに与える影響を把握するところから始めるべきです。次の目標を定義しましょう。",[19,221,222,228,234],{},[22,223,224,227],{},[40,225,226],{},"サービスレベル目標（SLO）","：通常運用時にプラットフォームが維持すべきサービスレベル",[22,229,230,233],{},[40,231,232],{},"目標復旧時間（RTO）","：障害発生後、どれだけ早くサービスを復旧させる必要があるか",[22,235,236,239],{},[40,237,238],{},"目標復旧時点（RPO）","：組織が許容できるデータ損失の範囲",[12,241,242],{},"これらの目標を組み合わせることで、アーキテクチャに必要な冗長性と復旧能力が明確になります。",[12,244,245,246,251],{},"そのうちどこまでをプラットフォームチームが担うかは、デプロイモデルによって異なります。GitLab Self-Managedを利用している場合、こうしたアーキテクチャ上の判断はすべてチームの責任です。",[128,247,250],{"href":248,"rel":249},"https://docs.gitlab.com/ja-jp/administration/reference_architectures/",[],"GitLabリファレンスアーキテクチャ","を本番環境に対応した出発点として活用し、可用性と復旧の要件に合わせてトポロジーを調整してください。",[12,253,254],{},"GitLab Dedicatedでは、ディザスタリカバリの基盤インフラとフェイルオーバーのプロセスをGitLabが管理します。お客様はGeoベースのディザスタリカバリ用にセカンダリAWSリージョンを選択でき、プライマリリージョンとセカンダリリージョン間のレプリケーションの維持と、必要時のフェイルオーバーはGitLabが担います。",[12,256,257],{},"Self-Managedの場合、高可用性、ディザスタリカバリ、バックアップは、それぞれ別個でありながら互いに補完し合うレイヤーとして復旧設計に組み込む必要があります。",[19,259,260,266,272],{},[22,261,262,265],{},[40,263,264],{},"高可用性","は、プライマリ環境内のコンポーネント障害による影響を抑えます。",[22,267,268,271],{},[40,269,270],{},"ディザスタリカバリ","は、サイトやリージョンが失われた後にサービスを復旧させます。",[22,273,274,277],{},[40,275,276],{},"バックアップ","は、データの破損や削除のほか、レプリケーションによってセカンダリサイトにまで伝播しうる障害からデータを守ります。",[12,279,280],{},"さらにSelf-Managedでは、復旧目標をアーキテクチャ要件に落とし込みましょう。どこに冗長性が必要か、データをどのようにレプリケートするか、重要なデータをバックアップでどう保護するかを決めます。IDサービスやネットワークサービスといった依存関係も、復旧計画に含めてください。",[12,282,283,288],{},[128,284,287],{"href":285,"rel":286},"https://docs.gitlab.com/ja-jp/administration/geo/",[],"GitLab Geo","は、プライマリサイトから同期するセカンダリサイトを備えたアクティブ/パッシブ型のディザスタリカバリアーキテクチャを提供します。Self-Managedではフェイルオーバーにお客様自身による運用手順が必要となるため、現実に即した条件でプロセスをリハーサルし、その結果をRTOとRPOに照らして評価してください。",[12,290,291],{},"復旧を遅らせる可能性のある依存関係の障害や手動の手順を記録し、その結果をもとに設計を強化していきましょう。",[67,293,56],{"id":56},[12,295,296],{},"GitLabの導入が進むにつれて、パフォーマンス計画の重点は、想定される需要に合わせたサイジングから、実際の負荷がかかった状態でのプラットフォームの挙動の検証へと移ります。最初のステップは、どこで時間が失われているのかを特定することです。",[12,298,299],{},"GitLabではキュー待ち時間と実行時間が区別されており、これが診断の有効な出発点になります。ジョブのキュー待ち時間は開始までにどれだけ待機したかを示し、ジョブの実行時間は実際の処理にかかった時間を表します。パイプラインの実行時間はパイプラインの実行に費やされた時間を計測するもので、保留中のキュー待ち時間は含まれない点も押さえておきましょう。",[12,301,302],{},"これらの指標は、それぞれ異なる制約を示しています。キュー待ち時間が長ければRunnerのキャパシティ不足が考えられ、実行時間が長ければパイプライン設計、テストスイート、依存関係のダウンロード、リポジトリの転送などが原因となっている可能性があります。",[161,304,305],{"id":305},"パフォーマンスのベースラインを確立する",[12,307,308],{},"代表的なプロジェクトを通常時とピーク時の両方の需要下でテストし、どこからパフォーマンスが低下し始めるかを確認します。リリース期間、定期的なセキュリティスキャン、コミットが集中する時期といった条件も含め、ボトルネックを浮き彫りにする次のシグナルを追跡しましょう。",[19,310,311,314,317,320,323,326,329],{},[22,312,313],{},"キュー待ち時間",[22,315,316],{},"ジョブとパイプラインの実行時間",[22,318,319],{},"Runnerの利用率",[22,321,322],{},"リトライと失敗",[22,324,325],{},"キャッシュのパフォーマンス",[22,327,328],{},"アーティファクトの転送時間",[22,330,331],{},"インフラの飽和度",[12,333,334],{},"結果はRunnerプールやワークロードの種類ごとに分けて分析し、組織全体の平均値によって特定のチームやワークロードに影響するボトルネックが見えなくならないようにします。そこから得た知見をもとに、Runnerのキャパシティ拡張、パイプラインの最適化、GitLabアプリケーションのスケーリングを行うしきい値を設定しましょう。",[161,336,337],{"id":337},"大規模リポジトリとモノレポは個別にテストする",[12,339,340,345],{},[128,341,344],{"href":342,"rel":343},"https://docs.gitlab.com/ja-jp/user/project/repository/monorepos/",[],"大規模リポジトリとモノレポ","は、GitLabとRunnerのインフラに特有の負荷をかけます。頻繁なクローンやフェッチはCPU、メモリ、ディスク、ネットワークの使用量を増加させる可能性があり、多くのパイプラインが同じリポジトリに同時にアクセスする場合は特に顕著です。",[12,347,348],{},"その影響を見積もる際は、リポジトリのサイズだけに目を向けないようにしましょう。クローンの頻度、CI/CDの同時実行状況、ブランチの運用パターン、各ジョブが転送するデータ量は、いずれもプラットフォームの負荷を左右します。",[161,350,351],{"id":351},"キャパシティを拡張する前にワークロードを最適化する",[12,353,354],{},"パイプラインの設計次第で、プラットフォームそのものへの負荷を減らせます。独立したジョブは並列実行し、不要なパイプラインは避け、頻繁にダウンロードされる依存関係はキャッシュし、アーティファクトの保持期間は制限しましょう。モノレポでは、関連するパスが変更されたときだけジョブをトリガーし、各ジョブが転送するリポジトリデータの量を減らします。",[12,356,357],{},"ロールアウト後も、利用状況の変化に合わせて計測を続けてください。Self-Managed環境では、実際のリソース使用率とワークロードのパターンが、アーキテクチャをスケールすべきタイミングを最も明確に示すシグナルとなります。",[67,359,59],{"id":360},"kubernetesとクラウドネイティブなデプロイの検討事項",[12,362,363],{},"GitLabのアーキテクチャにおいて、Kubernetesは2つの異なる役割を担えます。Kubernetes executorは既存のクラスター内でCI/CDジョブをPodとして実行でき、GitLab Self-ManagedはKubernetes上のクラウドネイティブアーキテクチャで稼働できます。",[12,365,366],{},"これらの選択はプラットフォームの異なる部分に影響するため、個別に評価する必要があります。RunnerにKubernetesを使えばCI/CDのコンピュートのプロビジョニングとスケーリングの方法が変わり、GitLab自体をKubernetes上で動かせばアプリケーションとそれを支えるインフラの運用方法が変わります。",[161,368,370],{"id":369},"kubernetes-runnerはクラスターの一部として計画する","Kubernetes Runnerはクラスターの一部として計画する",[12,372,373],{},"Kubernetes executorでは、RunnerマネージャーがKubernetes APIを呼び出し、CI/CDジョブごとにPodを作成します。つまり、クラスターそのものがRunnerアーキテクチャの一部になるということです。",[12,375,376],{},"こうしたジョブが依存するKubernetesのリソースと制御を計画しましょう。具体的には、ネームスペース、サービスアカウント、リソースのリクエストとリミット、ワークロードの分離などです。機密性の高いデプロイジョブは、信頼性の低いビルドワークロードとより強固に分離する必要がある場合もあります。",[12,378,379],{},"設定と同じくらい重要なのがキャパシティです。クラスターのオートスケールが、キュー待ち時間の目標を満たせるスピードでノードを追加できるかをテストしてください。最終的には十分なコンピュートが確保されるとしても、ノードのプロビジョニングが遅ければ、需要の急増時にジョブが待たされることになります。",[161,381,383],{"id":382},"gitlabをkubernetes上で動かすためのアーキテクチャを選ぶ","GitLabをKubernetes上で動かすためのアーキテクチャを選ぶ",[12,385,386,387,392],{},"GitLab自体をKubernetes上で動かす場合は、より広範なアーキテクチャ上の判断が求められます。GitLabが新規のSelf-Managedデプロイ向けに推奨している",[128,388,391],{"href":389,"rel":390},"https://docs.gitlab.com/ja-jp/administration/reference_architectures/cloud_native/",[],"Cloud Nativeリファレンスアーキテクチャ","では、GitLabのコンポーネントをKubernetes上で稼働させ、PostgreSQL、Redis、オブジェクトストレージは外部に配置します。",[12,394,395],{},"特定のコンポーネントをKubernetesの外に置く必要がある場合は、Cloud Native Hybridも引き続き選択肢となります。標準のCloud NativeアーキテクチャではGitalyが非クラスター構成で稼働するため、たとえばリポジトリレベルの高可用性のためにGitaly Clusterが必要なチームは、ハイブリッド型またはVMベースのリファレンスアーキテクチャを検討すべきです。",[12,397,398],{},"どのモデルを選ぶにしても、GitLabプラットフォーム全体の運用計画にKubernetesを組み込んでください。クラスターと外部サービスをまたいだ可観測性に加え、GitLabとそのインフラ依存関係を考慮したアップグレードプロセスが必要になります。キャパシティと復旧のテストでも、クラスターを本番環境の一部として対象に含めましょう。",[12,400,401,402,407],{},"このデプロイモデルの詳細については、",[128,403,406],{"href":404,"rel":405},"https://about.gitlab.com/ja-jp/topics/cloud-native/",[],"「クラウドネイティブとは？」","をご覧ください。Kubernetesは、その運用モデルがインフラ要件に合致し、かつ確実に運用できるスキルがチームに備わっている場合に選択しましょう。",[67,409,62],{"id":62},[12,411,412],{},"ロールアウト前にこのチェックリストを活用し、デプロイ、サイジング、Runner、復旧、パフォーマンスにわたる主要なアーキテクチャ上の判断を検証してください。各項目について、判断の裏付けとなるエビデンスを文書化するか、ギャップを解消する担当者を割り当てます。",[414,415,416,429],"table",{},[417,418,419],"thead",{},[420,421,422,426],"tr",{},[423,424,425],"th",{},"検証項目",[423,427,428],{},"エビデンスまたは担当者",[430,431,432,442,449,456,463,472,479,486,493,502,509,516,523,530,537,546,553,560,567,574,583,590,597,604],"tbody",{},[420,433,434,440],{},[435,436,437],"td",{},[40,438,439],{},"デプロイモデル",[435,441],{},[420,443,444,447],{},[435,445,446],{},"選択したデプロイモデルが、データレジデンシー、分離、ネットワーク、カスタマイズの要件を満たしている",[435,448],{},[420,450,451,454],{},[435,452,453],{},"GitLab、プラットフォームチーム、インフラプロバイダーの間で責任分担が明確になっている",[435,455],{},[420,457,458,461],{},[435,459,460],{},"アップグレード、メンテナンス、サポート、キャパシティ管理について、担当者が明確で手順が文書化されている",[435,462],{},[420,464,465,470],{},[435,466,467],{},[40,468,469],{},"アプリケーションのサイジング",[435,471],{},[420,473,474,477],{},[435,475,476],{},"Self-Managedデプロイでは、想定RPSに基づいてベースラインのアーキテクチャ規模を決めている",[435,478],{},[420,480,481,484],{},[435,482,483],{},"API、Web、Gitのトラフィック構成をサイジングに反映している",[435,485],{},[420,487,488,491],{},[435,489,490],{},"大規模モノレポや大量の自動化など、一般的でないワークロードを設計で考慮している",[435,492],{},[420,494,495,500],{},[435,496,497],{},[40,498,499],{},"Runner戦略",[435,501],{},[420,503,504,507],{},[435,505,506],{},"ジョブの量、所要時間、ピーク時の同時実行数、コンピュート要件をRunnerのサイジングに反映している",[435,508],{},[420,510,511,514],{},[435,512,513],{},"Runnerスコープが、信頼境界、特権アクセス、ワークロード分離の要件に合致している",[435,515],{},[420,517,518,521],{},[435,519,520],{},"オートスケールの上限、クラウドのクォータ、起動時間、すぐに使えるキャパシティをピーク需要下でテスト済みである",[435,522],{},[420,524,525,528],{},[435,526,527],{},"キュー待ち時間とパイプラインの実行時間の目標がそれぞれ定義され、個別に監視されている",[435,529],{},[420,531,532,535],{},[435,533,534],{},"Runnerマネージャーのアーキテクチャが、重要なワークロードの単一障害点になっていない",[435,536],{},[420,538,539,544],{},[435,540,541],{},[40,542,543],{},"可用性と復旧",[435,545],{},[420,547,548,551],{},[435,549,550],{},"SLO、RTO、RPOの目標が、ビジネスと技術の両面の責任者によって承認されている",[435,552],{},[420,554,555,558],{},[435,556,557],{},"冗長性、バックアップ、レプリケーション、フェイルオーバーの手順が、想定すべき障害シナリオに対応している",[435,559],{},[420,561,562,565],{},[435,563,564],{},"復旧テストにID、DNS、シークレット、ネットワーク、外部インテグレーションが含まれている",[435,566],{},[420,568,569,572],{},[435,570,571],{},"直近の復旧訓練が目標を達成しているか、改善作業が割り当てられている",[435,573],{},[420,575,576,581],{},[435,577,578],{},[40,579,580],{},"パフォーマンスと成長",[435,582],{},[420,584,585,588],{},[435,586,587],{},"代表的なプロジェクト、モノレポ、セキュリティジョブ、リリースワークロードを、想定されるピーク需要下でテスト済みである",[435,589],{},[420,591,592,595],{},[435,593,594],{},"キュー待ち時間、ジョブとパイプラインの実行時間、エラー、インフラの飽和度、Runnerの利用率をダッシュボードで追跡している",[435,596],{},[420,598,599,602],{},[435,600,601],{},"キャパシティを追加するか、ワークロードを最適化するかを判断するスケーリングのしきい値が定義されている",[435,603],{},[420,605,606,609],{},[435,607,608],{},"利用パターンや組織要件の変化に応じて、アーキテクチャを見直す周期が定められている",[435,610],{},[612,613],"br",{},[12,615,616],{},"エンタープライズ規模では、初期のアーキテクチャ上の判断すべてに負荷がかかります。強固なGitLab環境ほど、組織が実際にどう運用されているかを反映し、需要の変化に備えた余裕を残しています。",[12,618,619],{},"こうした条件は、導入の拡大とともに変わっていきます。計測を続け、需要の変化に応じてアーキテクチャを見直し、次の判断はエビデンスに基づいて下しましょう。そうした規律を持つことで、GitLabは単により多くのユーザーを支えるプラットフォームから、組織の成長に歩調を合わせて進化し続けるプラットフォームへと変わります。",[621,622,623],"blockquote",{},[12,624,625,626,631],{},"💡 ",[128,627,630],{"href":628,"rel":629},"https://about.gitlab.com/ja-jp/dedicated/",[],"GitLab Dedicatedがエンタープライズ規模の運用をどのように支えるのか、詳しくはこちら","。",{"title":633,"searchDepth":634,"depth":634,"links":635},"",2,[636,637,643,644,649,653],{"id":47,"depth":634,"text":47},{"id":124,"depth":634,"text":50,"children":638},[639,641,642],{"id":163,"depth":640,"text":164},3,{"id":178,"depth":640,"text":178},{"id":193,"depth":640,"text":193},{"id":53,"depth":634,"text":53},{"id":56,"depth":634,"text":56,"children":645},[646,647,648],{"id":305,"depth":640,"text":305},{"id":337,"depth":640,"text":337},{"id":351,"depth":640,"text":351},{"id":360,"depth":634,"text":59,"children":650},[651,652],{"id":369,"depth":640,"text":370},{"id":382,"depth":640,"text":383},{"id":62,"depth":634,"text":62},"devsecops","2026-09-22","数千人規模のデベロッパーを支えるGitLab環境は、どのように設計すべきでしょうか。デプロイモデルの選び方からRunnerのキャパシティ計画、高可用性とディザスタリカバリ、パイプラインのパフォーマンスまで、エンタープライズ規模のロールアウトを成功に導く判断ポイントとチェックリストを解説します。","md",null,{"header":660,"groups":661},"よくある質問",[662],{"questions":663},[664,667,670,673,676],{"question":665,"answer":666},"エンタープライズ規模でGitLabを導入する際のデプロイオプションには何がありますか？","GitLabには主に3つのモデルがあります。GitLab.com（マルチテナント型SaaS）、GitLab Dedicated（AWS上でホストされるフルマネージドの単一テナント型SaaS）、そしてGitLab Self-Managed（組織が自らインスタンスをインストールして保守）です。必要な制御のレベルと、チームが担えるインフラ運用の責任範囲を踏まえて選択しましょう。",{"question":668,"answer":669},"GitLab Runnerフリートはどのようにサイジングすればよいですか？","デベロッパーの人数ではなく、ワークロードそのものに基づいてRunnerフリートをサイジングします。ジョブの量と所要時間、ピーク時の同時実行数、OSとコンピュートの要件、ネットワーク経路、機密性の高いワークロード、ピーク期間を文書化しましょう。デベロッパー数が同じ組織でも、CI/CDの需要は大きく異なる場合があります。",{"question":671,"answer":672},"GitLabにおけるキュー待ち時間とジョブの実行時間の違いは何ですか？","キュー待ち時間はジョブが開始されるまでの待機時間、ジョブの実行時間は実際の処理時間を表し、パイプラインの実行時間には保留中のキュー待ち時間は含まれません。キュー待ち時間が長い場合はRunnerのキャパシティ不足が疑われ、実行時間が長い場合はパイプライン設計や依存関係が原因と考えられます。",{"question":674,"answer":675},"高可用性、ディザスタリカバリ、バックアップの違いは何ですか？","高可用性はプライマリ環境内のコンポーネント障害による影響を抑え、ディザスタリカバリはサイトやリージョンが失われた後にサービスを復旧させます。バックアップは、データの破損や削除のほか、レプリケーションによってセカンダリサイトにまで伝播しうる障害からデータを守ります。これらは別個でありながら互いに補完し合うレイヤーとして扱いましょう。",{"question":677,"answer":678},"GitLabのアーキテクチャにおいて、Kubernetesはどのような役割を果たしますか？","Kubernetesには2つの異なる役割があります。Kubernetes executorは既存のクラスター内でCI/CDジョブをPodとして実行し、GitLab Self-ManagedはKubernetes上でクラウドネイティブに稼働できます。これらはプラットフォームの異なる部分に影響し、それぞれコンピュートまたはアプリケーションの運用方法を変えるため、個別に評価しましょう。",false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058602/epl3sinfezlzxnppxak6.png",{},true,"/ja-jp/blog/how-to-design-gitlab-for-enterprise-scale",{"config":685,"title":5,"description":656},{"noIndex":679},"how-to-design-gitlab-for-enterprise-scale","ja-jp/blog/how-to-design-gitlab-for-enterprise-scale",[689,690,691],"CI/CD","DevSecOps platform","kubernetes","BlogPost","2026-09-24","1djQ4CLAaDw0PQIc2kJ9UwFZHkZUnSiKg7U4pnrLgnw",{"logo":696,"freeTrial":701,"sales":706,"login":711,"items":716,"search":1046,"minimal":1078,"duo":1096,"switchNav":1105,"pricingDeployment":1116},{"config":697},{"href":698,"dataGaName":699,"dataGaLocation":700},"/ja-jp/","gitlab logo","header",{"text":702,"config":703},"無料トライアルを開始",{"href":704,"dataGaName":705,"dataGaLocation":700},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":707,"config":708},"デモをリクエスト",{"href":709,"dataGaName":710,"dataGaLocation":700},"/request-a-demo/","sales",{"text":712,"config":713},"サインイン",{"href":714,"dataGaName":715,"dataGaLocation":700},"https://gitlab.com/users/sign_in/","sign in",[717,802,890,895,970,1024],{"text":718,"left":682,"config":719,"menu":721},"プラットフォーム",{"dataNavLevelOne":720},"platform",{"type":722,"link":723,"columns":727,"feature":791},"lists",{"text":724,"config":725},"プラットフォームを詳しく見る",{"href":726,"dataGaName":720,"dataGaLocation":700},"/ja-jp/platform/",[728,750,773],{"title":729,"items":730},"実行とワークフロー",[731,735,740,745],{"text":689,"config":732},{"href":733,"dataGaLocation":700,"dataGaName":734},"/ja-jp/solutions/continuous-integration/","ci/cd",{"text":736,"config":737},"ソースコード管理",{"href":738,"dataGaLocation":700,"dataGaName":739},"/ja-jp/solutions/source-code-management/","source code management",{"text":741,"config":742},"アジャイルデリバリー",{"href":743,"dataGaLocation":700,"dataGaName":744},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":746,"config":747},"アーティファクト管理",{"href":748,"dataGaLocation":700,"dataGaName":749},"/ja-jp/artifact-central/","artifact management",{"title":751,"items":752},"セキュリティとガバナンス",[753,758,763,768],{"text":754,"config":755},"アプリケーションセキュリティテスト",{"href":756,"dataGaLocation":700,"dataGaName":757},"/ja-jp/solutions/application-security-testing/","application security testing",{"text":759,"config":760},"ガバナンスとコンプライアンス",{"href":761,"dataGaLocation":700,"dataGaName":762},"/ja-jp/solutions/software-compliance/","governance and compliance",{"text":764,"config":765},"シークレット管理",{"href":766,"dataGaLocation":700,"dataGaName":767},"/ja-jp/gitlab-secrets-manager/","secrets management",{"text":769,"config":770},"サプライチェーンセキュリティ",{"href":771,"dataGaLocation":700,"dataGaName":772},"/ja-jp/solutions/supply-chain/","supply chain security",{"title":774,"items":775},"コンテキストとAI",[776,781,786],{"text":777,"config":778},"エージェント型オーケストレーション",{"href":779,"dataGaLocation":700,"dataGaName":780},"/ja-jp/gitlab-duo-agent-platform/","agentic orchestration",{"text":782,"config":783},"コンテキストグラフ",{"href":784,"dataGaLocation":700,"dataGaName":785},"/ja-jp/gitlab-orbit/","context graph",{"text":787,"config":788},"可視性と測定",{"href":789,"dataGaLocation":700,"dataGaName":790},"/ja-jp/solutions/visibility-measurement/","visibility and measurement",{"config":792,"title":795,"text":796,"link":797},{"background":793,"textColor":794},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","GitLabが選ばれる理由","ひとつのプラットフォームで、ソフトウェアライフサイクル全体を通じてスピードと制御を両立できます。",{"text":798,"config":799},"詳細はこちら",{"href":800,"dataGaName":801,"dataGaLocation":700},"/ja-jp/why-gitlab/","why gitlab",{"text":803,"left":682,"config":804,"menu":806},"ソリューション",{"dataNavLevelOne":805},"solutions",{"type":722,"link":807,"columns":811,"feature":881},{"text":808,"config":809},"すべてのソリューションを表示",{"href":810,"dataGaName":805,"dataGaLocation":700},"/ja-jp/solutions/",[812,830,848],{"title":813,"items":814},"成果",[815,820,825],{"text":816,"config":817},"DevOpsモダナイゼーション",{"href":818,"dataGaLocation":700,"dataGaName":819},"/ja-jp/assessments/devops-modernization-assessment/","devops modernization",{"text":821,"config":822},"セキュリティモダナイゼーション",{"href":823,"dataGaLocation":700,"dataGaName":824},"/ja-jp/assessments/security-modernization-assessment/","security modernization",{"text":826,"config":827},"AIモダナイゼーション",{"href":828,"dataGaLocation":700,"dataGaName":829},"/ja-jp/assessments/ai-modernization-assessment/","ai modernization",{"title":831,"items":832},"規模別",[833,838,843],{"text":834,"config":835},"エンタープライズ",{"href":836,"dataGaLocation":700,"dataGaName":837},"/ja-jp/enterprise/","enterprise",{"text":839,"config":840},"スモールビジネス",{"href":841,"dataGaLocation":700,"dataGaName":842},"/ja-jp/small-business/","small business",{"text":844,"config":845},"スタートアップ",{"href":846,"dataGaLocation":700,"dataGaName":847},"/ja-jp/solutions/startups/","startups",{"title":849,"items":850},"業界",[851,856,861,866,871,876],{"text":852,"config":853},"金融サービス",{"href":854,"dataGaLocation":700,"dataGaName":855},"/ja-jp/solutions/finance/","financial services",{"text":857,"config":858},"公共部門",{"href":859,"dataGaLocation":700,"dataGaName":860},"/ja-jp/solutions/public-sector/","public sector",{"text":862,"config":863},"通信",{"href":864,"dataGaLocation":700,"dataGaName":865},"/ja-jp/solutions/telecommunications/","telecommunications",{"text":867,"config":868},"自動車",{"href":869,"dataGaLocation":700,"dataGaName":870},"/ja-jp/solutions/automotive/","automotive",{"text":872,"config":873},"教育",{"href":874,"dataGaLocation":700,"dataGaName":875},"/ja-jp/solutions/education/","education",{"text":877,"config":878},"航空宇宙",{"href":879,"dataGaLocation":700,"dataGaName":880},"/ja-jp/solutions/aerospace/","aerospace",{"config":882,"title":883,"text":884,"link":885},{"background":793,"textColor":794},"GitLabのセキュリティ標準","セキュリティを犠牲にすることなく、ソフトウェアファクトリーを強化し、自律的なAIエージェントを実現する方法をご覧ください。",{"text":886,"config":887},"標準を見る",{"href":888,"dataGaName":889,"dataGaLocation":700},"/ja-jp/gitlab-security-standard/","gitlab security standard",{"text":891,"config":892},"価格",{"href":893,"dataGaName":894,"dataGaLocation":700,"dataNavLevelOne":894},"/ja-jp/pricing/","pricing",{"text":896,"config":897,"menu":899},"関連リソース",{"dataNavLevelOne":898},"resources",{"type":722,"link":900,"columns":904,"feature":961},{"text":901,"config":902},"すべてのリソースを表示",{"href":903,"dataGaName":898,"dataGaLocation":700},"/ja-jp/resources/",[905,933],{"title":906,"items":907},"検索する",[908,913,918,923,928],{"text":909,"config":910},"製品ドキュメント",{"href":911,"dataGaName":912,"dataGaLocation":700},"https://docs.gitlab.com/ja-jp/","docs",{"text":914,"config":915},"GitLab University",{"href":916,"dataGaName":917,"dataGaLocation":700},"https://university.gitlab.com/","university",{"text":919,"config":920},"技術デモ",{"href":921,"dataGaName":922,"dataGaLocation":700},"/ja-jp/gitlab-technical-demo-series/","demo series",{"text":924,"config":925},"インタラクティブデモ",{"href":926,"dataGaName":927,"dataGaLocation":700},"/ja-jp/demo-hub/","demo hub",{"text":929,"config":930},"GitLabサービス",{"href":931,"dataGaName":932,"dataGaLocation":700},"/ja-jp/services/","services",{"title":934,"items":935},"つなげる",[936,941,946,951,956],{"text":937,"config":938},"ブログ",{"href":939,"dataGaName":940,"dataGaLocation":700},"/ja-jp/blog/","blog",{"text":942,"config":943},"コミュニティ",{"href":944,"dataGaName":945,"dataGaLocation":700},"/community/","community",{"text":947,"config":948},"お客様事例",{"href":949,"dataGaName":950,"dataGaLocation":700},"/ja-jp/customers/","customers",{"text":952,"config":953},"パートナー",{"href":954,"dataGaName":955,"dataGaLocation":700},"/ja-jp/partners/","partners",{"text":957,"config":958},"イベント",{"href":959,"dataGaName":960,"dataGaLocation":700},"/events/","events",{"config":962,"title":963,"text":964,"link":965},{"background":793,"textColor":794},"GitLabの最新情報","最新の機能と改善点に関する情報をお届けします。",{"text":966,"config":967},"最新情報を読む",{"href":968,"dataGaName":969,"dataGaLocation":700},"/ja-jp/whats-new/","whats new",{"text":971,"config":972,"menu":974},"企業情報",{"dataNavLevelOne":973},"company",{"type":722,"columns":975},[976],{"items":977},[978,983,989,994,999,1004,1009,1014,1019],{"text":979,"config":980},"GitLabについて",{"href":981,"dataGaName":982,"dataGaLocation":700},"/ja-jp/company/","about",{"text":984,"config":985,"footerGa":988},"採用情報",{"href":986,"dataGaName":987,"dataGaLocation":700},"/jobs/","jobs",{"dataGaName":987},{"text":990,"config":991},"プレス",{"href":992,"dataGaName":993,"dataGaLocation":700},"/press/","press",{"text":995,"config":996},"ハンドブック",{"href":997,"dataGaName":998,"dataGaLocation":700},"https://handbook.gitlab.com/","handbook",{"text":1000,"config":1001},"経営陣",{"href":1002,"dataGaName":1003,"dataGaLocation":700},"/company/team/e-group/","leadership",{"text":1005,"config":1006},"投資家向け情報",{"href":1007,"dataGaName":1008,"dataGaLocation":700},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1010,"config":1011},"トラストセンター",{"href":1012,"dataGaName":1013,"dataGaLocation":700},"/ja-jp/security/","trust center",{"text":1015,"config":1016},"AI Transparency Center",{"href":1017,"dataGaName":1018,"dataGaLocation":700},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":1020,"config":1021},"ニュースレター",{"href":1022,"dataGaName":1023,"dataGaLocation":700},"/company/contact/#contact-forms","newsletter",{"text":1025,"config":1026,"menu":1027},"お問い合わせ",{"dataNavLevelOne":973},{"type":722,"columns":1028},[1029],{"items":1030},[1031,1036,1041],{"text":1032,"config":1033},"お問い合わせはこちら",{"href":1034,"dataGaName":1035,"dataGaLocation":700},"/ja-jp/sales/","talk to sales",{"text":1037,"config":1038},"サポートポータル",{"href":1039,"dataGaName":1040,"dataGaLocation":700},"https://support.gitlab.com/hc/en-us","support portal",{"text":1042,"config":1043},"カスタマーポータル",{"href":1044,"dataGaName":1045,"dataGaLocation":700},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1047,"login":1048,"suggestions":1054},"閉じる",{"text":1049,"link":1050},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":100,"config":1051},{"href":714,"dataGaName":1052,"dataGaLocation":1053},"search login","search",{"text":1055,"default":1056},"提案",[1057,1060,1064,1066,1070,1074],{"text":1058,"config":1059},"GitLab Duo Agent Platform",{"href":779,"dataGaName":1058,"dataGaLocation":1053},{"text":1061,"config":1062},"コード提案（AI）",{"href":779,"dataGaName":1063,"dataGaLocation":1053},"Code Suggestions (AI)",{"text":689,"config":1065},{"href":733,"dataGaName":689,"dataGaLocation":1053},{"text":1067,"config":1068},"GitLab on AWS",{"href":1069,"dataGaName":1067,"dataGaLocation":1053},"/ja-jp/partners/technology-partners/aws/",{"text":1071,"config":1072},"GitLab on Google Cloud",{"href":1073,"dataGaName":1071,"dataGaLocation":1053},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":1075,"config":1076},"GitLabを選ぶ理由",{"href":800,"dataGaName":1077,"dataGaLocation":1053},"Why GitLab?",{"freeTrial":1079,"mobileIcon":1083,"desktopIcon":1088,"secondaryButton":1091},{"text":702,"config":1080},{"href":1081,"dataGaName":705,"dataGaLocation":1082},"https://gitlab.com/-/trials/new/","nav",{"altText":1084,"config":1085},"GitLabアイコン",{"src":1086,"dataGaName":1087,"dataGaLocation":1082},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1084,"config":1089},{"src":1090,"dataGaName":1087,"dataGaLocation":1082},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1092,"config":1093},"はじめに",{"href":1094,"dataGaName":1095,"dataGaLocation":1082},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":1097,"mobileIcon":1101,"desktopIcon":1103},{"text":1098,"config":1099},"GitLab Duoの詳細はこちら",{"href":779,"dataGaName":1100,"dataGaLocation":1082},"gitlab duo",{"altText":1084,"config":1102},{"src":1086,"dataGaName":1087,"dataGaLocation":1082},{"altText":1084,"config":1104},{"src":1090,"dataGaName":1087,"dataGaLocation":1082},{"button":1106,"mobileIcon":1111,"desktopIcon":1113},{"text":1107,"config":1108},"/switch",{"href":1109,"dataGaName":1110,"dataGaLocation":1082},"#contact","switch",{"altText":1084,"config":1112},{"src":1086,"dataGaName":1087,"dataGaLocation":1082},{"altText":1084,"config":1114},{"src":1115,"dataGaName":1087,"dataGaLocation":1082},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1117,"mobileIcon":1122,"desktopIcon":1124},{"text":1118,"config":1119},"料金ページに戻る",{"href":893,"dataGaName":1120,"dataGaLocation":1082,"icon":1121},"back to pricing","GoBack",{"altText":1084,"config":1123},{"src":1086,"dataGaName":1087,"dataGaLocation":1082},{"altText":1084,"config":1125},{"src":1090,"dataGaName":1087,"dataGaLocation":1082},{"title":1127,"titleMobile":1128,"button":1129,"config":1132},"GitLab Orbitが登場: AIエージェントのためのコンテキストレイヤー","GitLab Orbitが登場",{"text":798,"config":1130},{"href":784,"dataGaName":1131,"dataGaLocation":700},"orbit",{"layout":1133,"disabled":679},"release",{"data":1135},{"text":1136,"source":1137,"edit":1143,"contribute":1148,"config":1153,"items":1158,"minimal":1379},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":1138,"config":1139},"ページのソースを表示",{"href":1140,"dataGaName":1141,"dataGaLocation":1142},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1144,"config":1145},"このページを編集",{"href":1146,"dataGaName":1147,"dataGaLocation":1142},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1149,"config":1150},"ご協力をお願いします",{"href":1151,"dataGaName":1152,"dataGaLocation":1142},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1154,"facebook":1155,"youtube":1156,"linkedin":1157},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1159,1205,1261,1303,1346],{"title":891,"links":1160,"subMenu":1175},[1161,1165,1170],{"text":1162,"config":1163},"プランの表示",{"href":893,"dataGaName":1164,"dataGaLocation":1142},"view plans",{"text":1166,"config":1167},"Premiumを選ぶ理由",{"href":1168,"dataGaName":1169,"dataGaLocation":1142},"/ja-jp/pricing/premium/","why premium",{"text":1171,"config":1172},"Ultimateを選ぶ理由",{"href":1173,"dataGaName":1174,"dataGaLocation":1142},"/ja-jp/pricing/ultimate/","why ultimate",[1176],{"title":1025,"links":1177},[1178,1181,1183,1185,1190,1195,1200],{"text":1179,"config":1180},"営業担当へのお問い合わせ",{"href":1034,"dataGaName":710,"dataGaLocation":1142},{"text":1037,"config":1182},{"href":1039,"dataGaName":1040,"dataGaLocation":1142},{"text":1042,"config":1184},{"href":1044,"dataGaName":1045,"dataGaLocation":1142},{"text":1186,"config":1187},"ステータス",{"href":1188,"dataGaName":1189,"dataGaLocation":1142},"https://status.gitlab.com/","status",{"text":1191,"config":1192},"利用規約",{"href":1193,"dataGaName":1194,"dataGaLocation":1142},"/terms/","terms of use",{"text":1196,"config":1197},"プライバシーに関する声明",{"href":1198,"dataGaName":1199,"dataGaLocation":1142},"/ja-jp/privacy/","privacy statement",{"text":1201,"config":1202},"Cookie設定",{"dataGaName":1203,"dataGaLocation":1142,"id":1204,"isOneTrustButton":682},"cookie preferences","ot-sdk-btn",{"title":718,"links":1206,"subMenu":1219},[1207,1209,1211,1213,1215,1217],{"text":724,"config":1208},{"href":726,"dataGaName":720,"dataGaLocation":1142},{"text":777,"config":1210},{"href":779,"dataGaName":780,"dataGaLocation":1142},{"text":689,"config":1212},{"href":733,"dataGaName":734,"dataGaLocation":1142},{"text":782,"config":1214},{"href":784,"dataGaName":785,"dataGaLocation":1142},{"text":764,"config":1216},{"href":766,"dataGaName":767,"dataGaLocation":1142},{"text":795,"config":1218},{"href":800,"dataGaName":801,"dataGaLocation":1142},[1220],{"title":1221,"links":1222},"トピック",[1223,1227,1232,1237,1242,1246,1251,1256],{"text":689,"config":1224},{"href":1225,"dataGaName":1226,"dataGaLocation":1142},"/ja-jp/topics/ci-cd/","cicd",{"text":1228,"config":1229},"GitOps",{"href":1230,"dataGaName":1231,"dataGaLocation":1142},"/ja-jp/topics/gitops/","gitops",{"text":1233,"config":1234},"DevOps",{"href":1235,"dataGaName":1236,"dataGaLocation":1142},"/ja-jp/topics/devops/","devops",{"text":1238,"config":1239},"バージョン管理",{"href":1240,"dataGaName":1241,"dataGaLocation":1142},"/ja-jp/topics/version-control/","version control",{"text":1243,"config":1244},"DevSecOps",{"href":1245,"dataGaName":654,"dataGaLocation":1142},"/ja-jp/topics/devsecops/",{"text":1247,"config":1248},"クラウドネイティブ",{"href":1249,"dataGaName":1250,"dataGaLocation":1142},"/ja-jp/topics/cloud-native/","cloud native",{"text":1252,"config":1253},"コーディングのためのAI",{"href":1254,"dataGaName":1255,"dataGaLocation":1142},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":1257,"config":1258},"エージェント型AI",{"href":1259,"dataGaName":1260,"dataGaLocation":1142},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":803,"links":1262},[1263,1265,1267,1269,1271,1274,1276,1278,1280,1282,1284,1286,1288,1291,1295,1299],{"text":816,"config":1264},{"href":818,"dataGaName":819,"dataGaLocation":1142},{"text":821,"config":1266},{"href":823,"dataGaName":824,"dataGaLocation":1142},{"text":826,"config":1268},{"href":828,"dataGaName":829,"dataGaLocation":1142},{"text":852,"config":1270},{"href":854,"dataGaName":855,"dataGaLocation":1142},{"text":1272,"config":1273},"公共機関",{"href":859,"dataGaName":860,"dataGaLocation":1142},{"text":862,"config":1275},{"href":864,"dataGaName":865,"dataGaLocation":1142},{"text":867,"config":1277},{"href":869,"dataGaName":870,"dataGaLocation":1142},{"text":872,"config":1279},{"href":874,"dataGaName":875,"dataGaLocation":1142},{"text":877,"config":1281},{"href":879,"dataGaName":880,"dataGaLocation":1142},{"text":834,"config":1283},{"href":836,"dataGaName":837,"dataGaLocation":1142},{"text":839,"config":1285},{"href":841,"dataGaName":842,"dataGaLocation":1142},{"text":844,"config":1287},{"href":846,"dataGaName":847,"dataGaLocation":1142},{"text":1228,"config":1289},{"href":1290,"dataGaName":1231,"dataGaLocation":1142},"/ja-jp/solutions/gitops/",{"text":1292,"config":1293},"ソフトウェアコンポジション解析",{"href":771,"dataGaName":1294,"dataGaLocation":1142},"software composition analysis",{"text":1296,"config":1297},"バリューストリーム管理",{"href":789,"dataGaName":1298,"dataGaLocation":1142},"value stream management",{"text":1300,"config":1301},"すべてのソリューション",{"href":810,"dataGaName":1302,"dataGaLocation":1142},"all solutions",{"title":1304,"links":1305},"リソース",[1306,1311,1316,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1342],{"text":1307,"config":1308},"インストール",{"href":1309,"dataGaName":1310,"dataGaLocation":1142},"/ja-jp/install/","install",{"text":1312,"config":1313},"クイックスタートガイド",{"href":1314,"dataGaName":1315,"dataGaLocation":1142},"/ja-jp/get-started/","quick setup checklists",{"text":909,"config":1317},{"href":1318,"dataGaName":912,"dataGaLocation":1142},"https://docs.gitlab.com/ja-jp",{"text":914,"config":1320},{"href":916,"dataGaName":917,"dataGaLocation":1142},{"text":919,"config":1322},{"href":921,"dataGaName":922,"dataGaLocation":1142},{"text":924,"config":1324},{"href":926,"dataGaName":927,"dataGaLocation":1142},{"text":929,"config":1326},{"href":931,"dataGaName":932,"dataGaLocation":1142},{"text":937,"config":1328},{"href":939,"dataGaName":940,"dataGaLocation":1142},{"text":942,"config":1330},{"href":944,"dataGaName":945,"dataGaLocation":1142},{"text":947,"config":1332},{"href":949,"dataGaName":950,"dataGaLocation":1142},{"text":952,"config":1334},{"href":954,"dataGaName":955,"dataGaLocation":1142},{"text":957,"config":1336},{"href":959,"dataGaName":960,"dataGaLocation":1142},{"text":1020,"config":1338},{"href":1022,"dataGaName":1023,"dataGaLocation":1142},{"text":1340,"config":1341},"最新リリース",{"href":968,"dataGaName":969,"dataGaLocation":1142},{"text":1343,"config":1344},"すべてのリソース",{"href":903,"dataGaName":1345,"dataGaLocation":1142},"all resources",{"title":1347,"links":1348},"会社情報",[1349,1351,1353,1355,1357,1359,1361,1363,1365,1369,1374],{"text":979,"config":1350},{"href":981,"dataGaName":973,"dataGaLocation":1142},{"text":984,"config":1352},{"href":986,"dataGaName":987,"dataGaLocation":1142},{"text":990,"config":1354},{"href":992,"dataGaName":993,"dataGaLocation":1142},{"text":995,"config":1356},{"href":997,"dataGaName":998,"dataGaLocation":1142},{"text":1000,"config":1358},{"href":1002,"dataGaName":1003,"dataGaLocation":1142},{"text":1005,"config":1360},{"href":1007,"dataGaName":1008,"dataGaLocation":1142},{"text":1010,"config":1362},{"href":1012,"dataGaName":1013,"dataGaLocation":1142},{"text":1015,"config":1364},{"href":1017,"dataGaName":1018,"dataGaLocation":1142},{"text":1366,"config":1367},"Sustainability",{"href":1368,"dataGaName":1366,"dataGaLocation":1142},"/sustainability/",{"text":1370,"config":1371},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":1372,"dataGaName":1373,"dataGaLocation":1142},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1375,"config":1376},"現代奴隷制の透明性に関する声明",{"href":1377,"dataGaName":1378,"dataGaLocation":1142},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1380},[1381,1383,1385],{"text":1191,"config":1382},{"href":1193,"dataGaName":1194,"dataGaLocation":1142},{"text":1201,"config":1384},{"dataGaName":1203,"dataGaLocation":1142,"id":1204,"isOneTrustButton":682},{"text":1196,"config":1386},{"href":1198,"dataGaName":1199,"dataGaLocation":1142},[1388],{"id":1389,"title":1390,"body":658,"config":1391,"content":1393,"description":658,"extension":1396,"meta":1397,"navigation":682,"path":1398,"seo":1399,"stem":1400,"__hash__":1401},"blogAuthors/en-us/blog/authors/gitlab.yml","Gitlab",{"template":1392},"BlogAuthor",{"name":7,"config":1394},{"headshot":1395,"ctfId":7},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","yml",{},"/en-us/blog/authors/gitlab",{},"en-us/blog/authors/gitlab","XCBKIcPoCs6zi2oHG7o-bAp52Jhaw8_zGhIJ2jNrEjU",[1403,1410,1418],{"title":1404,"description":1405,"heroImage":1406,"category":654,"date":1407,"authors":1408,"slug":1409,"externalUrl":658},"DevOpsプラットフォームの総保有コスト（TCO）を算出する方法","ツールチェーンのコストに見直しが求められていませんか。DevOpsプラットフォームの総保有コスト（TCO）を構成する要素を、CI/CDのコンピューティングからAI利用、セキュリティ、ツールの乱立まで整理し、年間コストの算出手順、比較の進め方、削減できる領域を解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778087000/qdfsf8kz6ebfnopx9v2e.png","2026-09-11",[7],"how-to-calculate-devops-platform-total-cost-of-ownership",{"title":1411,"description":1412,"heroImage":1413,"category":654,"date":1414,"authors":1415,"slug":1417,"externalUrl":658},"GitLabで実現するGemini Enterpriseエージェント開発の内製化【イベントレポート】","Google Cloud Next Tokyo 26の来場者向けセッションに、GitLab合同会社、小松原つかさが登壇した模様をお伝えします。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1786927099/yslrrlhphzmll0fxjozt.jpg","2026-08-18",[1416],"GitLab Japan Team","event-report-google-cloud-next-tokyo-26",{"title":1419,"description":1420,"heroImage":1421,"category":654,"date":1422,"authors":1423,"slug":1424,"externalUrl":658},"GitLabとKiroで実現する「AI駆動開発基盤」のホントのところ【イベントレポート】","AWS Summit Japan 2026の来場者向けセッションで、GitLab小松原つかさとソニービズネットワークス株式会社濱田一成氏が登壇した模様をお伝えします。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1784079710/ow23ysfsonekilhwnhfp.jpg","2026-07-16",[1416],"event-report-aws-summit-2026",{"header":1426,"text":1427,"button":1431,"disclaimer":1434},"無料の\n\n30日間のGitLabトライアルを開始\n",[1428,1429,1430],"GitLab Duo Agent Platformへのアクセス","GitLabの最も高度な機能を試す","AIで複雑なタスクを自動化する",{"text":702,"config":1432},{"href":1433,"dataGaName":705,"dataGaLocation":940},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/blog/","クレジットカードなしでご登録いただけます。",{"header":1436,"blurb":1437,"button":1438,"secondaryButton":1442},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":702,"config":1439},{"href":1440,"dataGaName":705,"dataGaLocation":1441},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":1025,"config":1443},{"href":1034,"dataGaName":710,"dataGaLocation":1441},1791944937243]