社内開発ツール
1)開発者プラットフォームの役割と責任(IDP)
内部開発者プラットフォームは、ユニフォームツールで一般的なエンジニアリングタスクをカバーする「セルフサービス」レイヤーです:- fast start(サービステンプレート、APIスケルトン、パイプライン);
- 予測可能なアセンブリ/テスト/展開;
- 秘密、依存関係、およびアーティファクトの安全な管理
- デフォルトの可視性(ログ/メトリック/トレイル)
- プロバイダのテストデータ、モック、サンドボックスへのアクセス。
- 典型的なシナリオのためのドキュメントと「黄金のパス」。
目標は、認知負荷、時間から最初のPR、リードタイムを削減し、リリースの信頼性とコンプライアンスを向上させることです。
2) DX設計原則(開発者eXperience)
Convention over configuration:標準は手動設定よりも重要です。
ゴールデンパス:ケースの80%をカバーする「デフォルト」ソリューションの最小セット。
コードとしてのすべて:パイプライン、インフラストラクチャ、ダッシュボード、政治家-Gitで。
Secure-by-default: SAST/DAST、 SBOM、アーティファクト署名、依存性ポリシー。
Observability-first:サービスとツールは自動的にテレメトリを送信します。
環境の移植性:ローカル=CI=stage=prod(可能な限り)。
数分でフィードバック:クイックテスト、リント、プレビュー環境、PRステータス。
3)プラットフォームアーキテクチャと主要コンポーネント
DevPortal:サービスのディレクトリ、テンプレート、ドキュメント、プラットフォームのステータス、「ワンクリック」パイプラインと環境の起動。
CLI/skeletizer: 1つのスタック(ロギング、ヘルス、OpenAPI/Proto、 observability)でサービス/関数/ジョブを生成します。
ビルドシステムとモノレポツール:キャッシュ、増分アセンブリ、決定的アーティファクト。
CI/CD blooprints:サービスの標準パイプライン(ユニット、契約、統合、e2e、セキュリティ分析、展開)。
テストコントロール:プロバイダのテストコンテナ/ローカルサンドボックス、一般的なデータ工場および治具。
すぐに観察可能:1つのモジュールを介したOTel/Prometheus/logger接続。
秘密管理:KMS/HSM、回転、アクセスポリシーとの統合。
Ficheflags/experiments:プログレッシブローリング用のSDKとコンソール。
4) DevPortal: 中央エントリーポイント
機能性:- サービス/ライブラリ/スキームのディレクトリ(所有者、SLA、バージョン、脆弱性);
- ボタン「Create service」 by template(直ちにパイプラインとアラートで);
- ドキュメント(コードスタイル標準、リリースガイド、インシデントプレイブック);
- プラットフォームサービスのステータス、容量、変更(changelog);
- RunbooksとGolden Paths:「エンドポイントを追加する方法」、「移行を開始する方法」、「プロバイダを接続する方法」。
5) CLIとテンプレート(スケレタイザー)
テンプレートは次のとおりです:- 健康チェック、/metrics 、/ready;を含むREST/gRPC/GraphQLサービスフレームワーク;
- readyミドルウェア:リクエスト相関、認証、レート制限;
- OpenAPI/Protobuf autogen+checking circuits for CI;
- モジュラーロガー、トレース、メトリック;
- dockerfile+ローカル開発のための構成;
- テストの基本セットとlinters/formatters/prechukovの設定。
- 'devx new service --name payment-api --stack go-grpc --db postgres --events kafka --template v2'
6)ローカル開発およびリモート環境
Dev Containers/Codespaces-analogue:誰もが同じ環境で、迅速な初期登録が可能です。
Docker Compose+Testcontainers: DB/キャッシュ/バスは1つのコマンドでローカルにリフトされます。
Kubernetesクラスタ「dev」へのライブリブートのチルト/スカフォールド。
リモート開発:リソース集約型のビルド/テストは専用プールで実行されます。
グッドプラクティス
ツール・バージョン用のシングル'。tool-versions '/lockfiles;
make/just-screen: 'make test'、 'make run-local'、 'make seed';
「dotenv」を介したローカル秘密と開発ロールを持つ秘密プロバイダ。
7)スキームと契約の管理
互換性ポリシーを持つスキーマレジストリ(JSON/Avro/Proto);
CIの必須ジョブとしての契約テスト(Pact/Buf);
APIバージョン管理(SemVer)、デュアルバージョンサポート、自動SDK生成;
データベース移行(migrate/flyway/liquibase)-パイプラインの標準化されたステップ。
8)テストのピラミッドおよびデータ
ユニットテスト:クリティカルロジックをカバーするための高速、並列、バインディング。
契約テスト:消費者↔ API/イベントプロバイダ。
統合:コンテナ内の実際の依存関係を使用します。
E2E:最小限だが代表的なドラフトのセット。
テストデータ:工場/修正、PIIのない合成、環境のためのサイダー;DBスナップショット-非対称性のみ。
9) CI/CD: 標準化されたパイプライン
マイルストーン(デフォルト):1.Lint/Format/License/SBOM生成。
2.SAST(静解析)+依存ポリシーブロッキング「criteria」。
3.ユニット→コントラクト→インテグレーション→アーティファクトとレポートとのE2E。
4.決定的なイメージ、署名(sigstore/cosign)を作成し、レジストリにプッシュします。
5.展開:- PRごとのfeature-env/preview URL;
- ステージでカナリア/ブルーグリーン;
- ficheflag/trafficによるプログレッシブプロダクションリリース。
6.導入後のチェック:アラート、エラー予算、劣化時の自動ラッピング。
10) Observabilityおよびローカルdebag
モジュール「telemetry-starter」: OTel SDK、エクスポート、相関'trace_id';
ダッシュボードをコードとして:ダッシュボードとアラートはGitで説明されています。
トレースドリブン開発: ローカルおよびプレビュースタンドでのプロファイリング要求;
構造化ログ(JSON)、 PIIに対する保護、機密フィールドのマスキング。
11)コードの品質とレビュー
単一のlinters/formattersおよびプリセット(言語固有);
プリコミットフック(リント/小容量テスト);
主要なアーティファクト(スキーム、移行、ポリシー)のコードオーナーと必須レビュー。
PRチェックリスト: "何が変更されましたか?""、セキュリティ?""、下位互換性?""、移行?».
12)安全な開発(SSDL)およびサプライチェーン
SCA(依存性解析)およびallowlistソース;
アーティファクトタイプによるSAST/DAST/IAST;
ビルドごとにSBOM、アーティファクト・リポジトリ内のストレージ。
画像署名、証明(SLSAレベル)
秘密ポリシー:Gitの秘密、ローテーション、一時的なクレジットはありません。
インフラPRのためのPolicy-as-Code (OPA/Conftest)。
13) Ficheflags、実験およびプレビュー環境
テンプレート内のフィッシュフラグのSDK、区切り: ops-flags vs product;
進歩的な圧延(1%→25%→100%)、速い畳み込み;
各PR(一意のURL、トレース、テストデータ)のプレビュー環境、マージ/クローズ後の自動削除。
14)ボットとオートメーション
チャットボット: /deploy 、/rollback 、/logs 、/runbook;
バグトラッカーの自動ラベルとオートリッジ。
チケットテンプレート(インシデント、変更、RFC)
butchingとgreenブランチによる依存関係の自動更新。
15)ドキュメントとトレーニング
真実の源としての「live」スペック(OpenAPI/Proto);
tech notes/RFC、 Gitからの一般的なテンプレート、自動パブリッシング;
ビデオデモ「10分でプロジェクトを立ち上げる方法」;
ステップバイステップスクリプトを使用したDevPortalサンドボックス。
16)パフォーマンス指標(DORA/SPACE)
DORA: 調達期間、配備頻度、MTTRの変更の失敗率;
スペース: 満足、性能、活動、コミュニケーション;
第4四半期の目標:リードタイムが30%、チャストタリリースが30%、 vremya onboardingがN時間になりました。
17)アクセス制御および複数のテナント
エンジニアリングプロファイルの役割(開発者、レビュアー、releng、プラットフォーム)
環境ポリシー:dev/stage/prodで使用できます。
プレビュー/フィーチャーブランチの個々のクォータ/リミットと名前空間の分離。
18)データおよび分析ツール
ローカルイベント読み取りプロファイル(Kafka/NATS)とリプレイ
合成ジェネレータとダンプアノニマイザ;
ラップトップ/アドホックスクリプトは、サービス品質のメトリックとリリースを分析するためのものです。
19)実装ロードマップ
M0-M1 (MVP): DevPortal、サービステンプレート、基本的なCI (lint+unit+build)、 dev-containerによるローカルアセンブリ、logging/metrics。
M2-M3:契約テスト、プレビュー環境、テストコンテナとの統合テスト、SAST/SCA、 SBOM。
M4-M6: phicheflags、 progressive rollouts、 Dashboards as Code、 policy-as-code、 remote dev pools、 SDK autogen。
M6+:リリースオーケストレーション、ワンボタンエクスペリエンス、内部コンポーネント/ライブラリショーケース、DevPortalのDORA/SPACEメトリック。
20)プラットフォーム成熟度チェックリスト(抜粋)
- ワンクリックサービスを作成すると、メトリック/ログ/トラックを含む作業フレームワークが作成されます。
- PRごとにプレビュー環境が自動的に上昇します。
- テスト契約は必須であり、互換性のない変更をブロックします。
- SBOMはビルドごとに公開され、イメージは署名されます。
- Observability/alertsとdashboards-コードとリポジトリで。
- Ficheflagsはコンソールから入手でき、ロールアウトはプログレッシブです。
- Runbooks/Playbookはアラートに関連付けられ、DevPortalに表示されます。
- DORA/SPACEのメトリックがDevPortalのホームページに表示されます。
- 最初のPRの前日の1営業日≤新しい開発者のオンボーディング。
概要
強力な内部開発者プラットフォームは、異機種混在スタックを「サービスの作成」から「安全なローリングを伴うプロッド」まで、単一の「パイプライン」に変換します。"標準化されたテンプレート、DevPortal、契約テスト、プレビュー環境、オブザビリティ、セキュリティのデフォルトは、品質とコンプライアンスを損なうことなく、高速で予測可能なリリースに。