プラットフォーム エンジニアリングとは

プラットフォーム エンジニアリングとは、ソフトウェア エンジニアリング企業がセルフサービス機能を利用できるようにするツールチェーンとワークフローを設計および構築するプロセスです。これには、開発プロセスを合理化してビジネスの複雑さを排除するために、一元化されたツール、サービス、自動化されたワークフローを備えた IDP (内部開発者プラットフォーム) を構築することが含まれます。

プラットフォーム エンジニアは、これらのプラットフォームの設計、実装、および保守を担当します。アップデートを提供し、インフラストラクチャを監視し、プラットフォームとアプリをサポートして、セルフサービス機能とワークフロー自動化を適用します。

この記事では、プラットフォーム エンジニアリングの主要コンセプト、主な役割、およびサンプル プラットフォーム ワークフローについて解説します。また、プラットフォーム エンジニアリングのメリットと課題、使用されるツールやテクノロジーについても説明します。

プラットフォーム エンジニアリングの主要コンセプト

プラットフォーム エンジニアリングは、ソフトウェア開発プロセスにおいて DevOps の原則および IDP と相互に結びついています。これらのコア コンセプトの定義は以下のとおりです。

DevOps は、開発 (Dev) と Ops (運用) を統合し、コラボレーション、自動化、および継続的改善を重視する、一連のプラクティスとツールです。このアプローチでは、効率的なソフトウェア デリバリーをサポートするために、CI/CD (継続的インテグレーション、継続的デプロイ)、および IaC (Infrastructure as Code) を推奨しています。

Compass のような IDP は、この DevOps アプローチを使用して、ツールへのアクセス、CI/CD パイプラインの自動化、環境の管理、パフォーマンスの監視を行うための統合インターフェイスを開発者に提供します。

プラットフォーム エンジニアリングは、IDP の設計、構築、および維持を担当し、組織の複雑さの限界を引き上げるうえでも不可欠です。複雑さの限界とは、仕事の満足度、ソフトウェアの品質、およびソフトウェア開発の効率に影響が及ぶ前に、チームが対処できる複雑さのレベルのことです。

プラットフォーム エンジニアの主な責務

プラットフォーム エンジニアリング チームは、開発者が開発やデプロイに使用する内部ツールと環境を構築する役割を担っています。プラットフォームを組織の特定の要件に確実に適合させつつ、開発者エクスペリエンスを向上させる必要があります。プラットフォーム エンジニアは、プラットフォームを使いやすく、安全で、効率的にするために、自動化、セキュリティ、スケーラビリティに重点を置いています。

また、プラットフォーム エンジニアリング チームは、組織の複雑さを日常業務から排除することで、ソフトウェア チームの認知的負荷を軽減しようと努めます。プラットフォーム エンジニアリングを適切に実施すれば、チームはソフトウェア開発により多くの時間を割けるようになります。

プラットフォーム エンジニアの主な責務には、次のようなものがあります。

  • インフラストラクチャの設計と実装: プラットフォーム エンジニアは、IaC ツールを使用して、スケーラブルで信頼性が高く、自動化されたインフラストラクチャを設計および実装します。設計と実装により、一貫性のある反復可能なインフラストラクチャ管理が実現し、手作業によるエラーが削減されて、デプロイ プロセスが迅速化します。

  • CI/CD パイプラインの構築: ソフトウェアのデリバリーを自動化するために CI/CD パイプラインを構築および保守します。このプロセスでは、コード変更を適用し、自動テストを実行して、アップデートをシームレスにデプロイすることで、迅速かつ信頼性の高いソフトウェア リリースを実現します。

  • プラットフォームの保守と拡張: プラットフォーム エンジニアは、組織の高まる要求に対応するため、プラットフォームを保守および拡張します。このプロセスには、高可用性と最適化されたパフォーマンスを保証するオーケストレーション ツールを使用して、コンテナー化されたアプリを管理することが含まれます。プラットフォーム エンジニアは、プラットフォームを変化する要件に適応させるために、カスタム ツールや新しいサービスを追加したり、既存のワークフローを変更したりします。

  • セキュリティ対策の実施: エンジニアは、インフラストラクチャとアプリを保護するために、堅牢なセキュリティ対策と標準を実装します。この実装には、セキュリティ スキャンの自動化、コンプライアンス ポリシーの適用、アクセス制御の管理が含まれます。これにより、脆弱性から保護し、確実に規制に準拠します。

  • コラボレーションとサポート: プラットフォーム エンジニアは、開発および運用チームと協力してサポートを提供し、プラットフォームの円滑な運用を確保します。これらのチームと密接に連携して作業し、ニーズを理解し、課題を解決し、プラットフォームを継続的に改善して、開発者の生産性と運用効率を向上させます。このコラボレーションを促進するために、ワークフロー管理ツールを使用する場合があります。

プラットフォーム エンジニアリングのワークフロー

プラットフォーム エンジニアリングのワークフローは、堅牢でスケーラブルかつセキュアなプラットフォームを構築および保守するための構造化されたアプローチを実現します。

  1. 要件収集: プラットフォーム エンジニアは関係者と協力して開発チームと運用チームのニーズと要件を理解します。この段階では、会社のゴールをサポートするために必要なツール、テクノロジー、プロセスを特定します。多くの場合、フローチャートを作成してプラットフォームのコンポーネントと相互作用を視覚化します。

  2. 設計とアーキテクチャ: エンジニアは、収集した要件に基づいてインフラストラクチャとアーキテクチャを設計します。このプロセスには、スケーラビリティ、信頼性、セキュリティを確保するための、適切なテクノロジーの選定、システム コンポーネントの定義、詳細なアーキテクチャ図の作成が含まれます。

  3. 実装と開発: プラットフォーム エンジニアは、IaC やその他の自動化ツールを使用して、インフラストラクチャおよびプラットフォーム コンポーネントを実装します。エンジニアは CI/CD パイプラインを作成し、コンテナー オーケストレーションを設定し、必要なサービスを統合して、一体化したプラットフォームを構築します。

  4. テストと検証: 包括的なテストでは、開発中のすべての変更を本番環境に移行する前に、プラットフォームの機能、パフォーマンス、およびセキュリティを検証します。このステップには、プラットフォームがすべての要件と基準を満たしていることを確認するための、自動テスト、負荷テスト、およびセキュリティ評価が含まれます。

  5. デプロイと保守: エンジニアはプラットフォームを本番環境にデプロイします。継続的な保守により、その安定性とパフォーマンスが確保されます。このステップには、監視、スケーリング、必要に応じたアップデートやパッチの適用が含まれます。

  6. フィードバックとイテレーション: ユーザーや関係者からの継続的なフィードバックにより、改善点を特定します。エンジニアはプラットフォームでイテレーションを行い、変化する企業のニーズにより適切に対応するために必要な調整や強化を行います。これらのイテレーションを管理するために、スクラムやカンバンなどのアジャイル手法を使用する場合があります。

プラットフォーム エンジニアリングのメリット

プラットフォーム エンジニアリングは、組織のソフトウェア開発およびデリバリー プロセスを大幅に向上させるさまざまなメリットをもたらします。主なメリットは次のとおりです。

開発者の生産性の向上

プラットフォーム エンジニアリングは、さまざまなタスクやプロセスを効率化および自動化することを目的としています。これにより、開発者はコードの記述や機能の提供により集中できるようになります。セルフサービス プラットフォーム、自動化されたワークフロー、再利用可能なコンポーネントにより、開発者は反復的な手作業に費やす時間を減らし、付加価値を生み出す活動により多くの時間を費やすことができます。

アプリの市場投入までの時間の短縮

プラットフォーム エンジニアリングによる自動化、標準化、プロセスの合理化を通じて、企業はソフトウェア デリバリー ライフサイクルを加速させることができます。CI/CD パイプライン、自動テスト、および IaC プラクティスは、より迅速かつ頻繁なリリースを可能にし、新しいアプリや機能の市場投入までの時間を短縮します。

アプリのスケーラビリティと信頼性の向上

プラットフォーム エンジニアリングは、コンテナー化やオーケストレーション ツールなどのクラウドネイティブ テクノロジーの導入を促進します。これらのテクノロジーにより、拡張性が高く、回復力と耐障害性に優れたアプリを実現し、高負荷やシステム障害の発生時でも安定したパフォーマンスを確保できます。

運用コストの削減

プラットフォーム エンジニアリングは、インフラストラクチャのプロビジョニング、構成管理、およびデプロイのプロセスを自動化することで、リソース利用の最適化や運用コストの削減を支援します。標準化されたプラットフォームと再利用可能なコンポーネントは、作業の重複と技術的負債を最小限に抑え、コスト削減にも貢献します。

開発者エクスペリエンスの向上

プラットフォーム エンジニアリングは、開発者にツール、リソース、環境へのセルフサービス アクセスを提供することで、スムーズで効率的な開発エクスペリエンスを構築することを目指しています。ワークフロー管理ソリューションとプロジェクト計画ツールが、このエクスペリエンスをサポートします。開発者はより自律的に作業できるようになり、摩擦やボトルネックを減らして、イノベーションの文化とコラボレーションを存分に活かすことができます。開発者エクスペリエンスの向上は仕事の満足度を高め、主要な人材の獲得と定着に役立ちます。

プラットフォーム エンジニアリングの課題

効率的で信頼性の高いシステムを維持するために、プラットフォーム エンジニアリングではいくつかの複雑な課題に対処する必要があります。

イノベーションと安定性の両立

プラットフォーム エンジニアは、安定性と信頼性を確保しながら、システムを改善するためのイノベーションを起こす必要があります。急激な変化はリスクをもたらす可能性があります。新しいテクノロジーの導入と安定した環境の維持との間で適切なバランスを見つけることは重要であり、慎重なプロジェクト計画とプロジェクト ロードマップによって達成できます。

技術的負債の管理

企業が目先のニーズを満たすために、応急処置や最適ではない解決策を導入すると、技術的負債が蓄積します。プラットフォーム エンジニアは、このような負債が今後の開発の妨げになるのを防ぎ、システムの長期的な健全性を維持するために、この負債に対処する必要があります。

進化するテクノロジーへの対応

テクノロジー環境は常に進化しています。プラットフォーム エンジニアは、最新のツール、フレームワーク、ベスト プラクティスを常に把握しておく必要があります。新しいテクノロジーを効果的に取り入れるには、継続的な学習と適応が必要です。

プラットフォームのセキュリティの確保

エンジニアは、脆弱性から保護し、規制基準に準拠するために、堅牢なセキュリティ対策を実装する必要があります。これには、セキュリティ プロトコルの継続的な監視と更新が含まれます。

プラットフォーム エンジニアリングで使用されるツールとテクノロジー

開発手法を決定する際、プラットフォーム エンジニアは多くの場合、カンバンとスクラムを比較して、どちらのアプローチがチームのニーズとゴールに最適かを判断します。

具体的なツールの選択は、企業のテクノロジー スタック、クラウド プロバイダー、および要件によって異なります。ただし、プラットフォーム エンジニアリングで使用される必須のツールやテクノロジーには、次のようなものがあります。

  • IDP は、ソフトウェア チームが自律的かつより迅速にソフトウェアをデリバリーできるようにする、ツール、サービス、プロセスで構成される社内プロダクトです。

  • クラウド プラットフォームは、プラットフォーム エンジニアリングの基盤となるインフラストラクチャとサービスを提供します。Compass のようなクラウドベースの IDP オプションは、独自のプラットフォームを維持するコストや諸経費を伴わずに、シンプルなオンボーディングと拡張性を提供します。

  • CI/CD ツールは、アプリのビルド、テスト、デプロイを自動化します。これらは、IDP 内で信頼性が高く反復可能なソフトウェア デリバリー パイプラインと主要なインテグレーションを実装する上で不可欠です。CI/CD パイプラインによって、コードの変更がシームレスに統合およびデプロイされます。マルチクラウドの継続的なデリバリー プラットフォームは、デプロイ パイプラインを自動化してリリースが本番環境に移行するタイミングを制御することで、高いベロシティと信頼性をもってソフトウェアの変更をリリースできます。前回のロールアウトが失敗した場合に次のロールアウトが実行されないようにし、ロールバックを容易にします。

  • インシデント管理機能により、チームが課題に迅速に対応して解決できます。IDP を Jira Service Management などのツールに接続すると、自動アラート、根本原因分析、インシデント追跡が提供されるため、チームがサービスの健全性と信頼性に影響を与えている要因を 1 か所で確認できるようになります。

  • IaC ツールは、コードを通じてクラウド インフラストラクチャの定義と管理を可能にし、一貫性のある反復可能なインフラストラクチャのプロビジョニングを実現します。

  • コンテナー テクノロジーは、アプリをポータブルで分離されたコンテナーにパッケージ化します。コンテナー オーケストレーション プラットフォームは、コンテナー化されたアプリのデプロイ、スケーリング、管理を自動化します。

  • 可観測性ツールと監視ツールは、アプリとインフラストラクチャの健全性とパフォーマンスを可視化するために、メトリック、ログ、トレースを収集する機能を提供します。IDP は、アプリのパフォーマンス監視、ロギング、エラー追跡、トレースなどの可観測性ツールを統合し、アプリのパフォーマンスやリソースの使用状況に関するリアルタイムのインサイトを提供します。チームはプラットフォームからアプリを監視できるため、問題の特定と解決がより迅速かつ簡単になります。

  • セキュリティ ツールとコンプライアンス ツールは、セキュリティ スキャン、シークレット管理、ポリシーの適用、コンプライアンスをサポートします。自動での脆弱性スキャンなどの連携されたセキュリティ ツールと、既定のコンプライアンス管理とセキュリティ スコアカードを組み合わせることで、アプリが組織のセキュリティ基準を確実に満たすようにして、開発者が手動でセキュリティ管理を行う必要性を軽減します。

  • サービス メッシュ ツールは、マイクロサービス アーキテクチャにおけるサービス間の通信を管理するための専用インフラストラクチャ レイヤーを提供します。これにより、トラフィック管理、セキュリティ、可観測性などの機能が利用可能になります。

Compass でプラットフォーム エンジニアリングを改善する

プラットフォーム エンジニアリングは、ソフトウェア開発において複雑でありながらも極めて重要な分野であり、イノベーションと安定性の微妙なバランスが求められます。プラットフォーム エンジニアリングを適切に導入することで、開発者にセルフサービス機能が提供され、ソフトウェアのデリバリーを加速させ、アプリの信頼性を向上させます。

アトラシアンの IDP である Compass は、プラットフォーム チームが開発者エクスペリエンスとソフトウェア開発を拡張して向上できるよう、すでに何千もの組織をサポートしてきました。