AWS クラウド
AWS クラウド
AWS の使用を開始する

DevOps では、従来型のソフトウェア開発と、インフラストラクチャ管理プロセスを使用するよりも速いペースで製品の進歩と向上を達成し、企業がアプリケーションやサービスを高速で配信できるように、文化的な基本方針、プラクティス、ツールが組み合わされています。この高速化により、企業は顧客により良いサービスを提供し、市場競争力を高めることができます。

DevOps とは?

DevOps モデルでは、開発と運用が "サイロ化" されることはありません。 場合によっては、開発チームと運用チームは 1 つのチームに統合されます。エンジニアは、開発とデプロイのテストからオペレーションに至るアプリケーションのライフサイクル全体にわたって作業するため、1 つの職務にとどまらず、幅広くスキルを磨くことができます。

採用する DevOps モデルによっては、品質管理チームとセキュリティチームもアプリケーションのライフサイクル全体にわたって開発と運用にさらに緊密にかかわります。DevOps のチーム全員がセキュリティに焦点を当てる場合、これは DevSecOps と呼ばれます。

こうしたチームは、これまで手動で時間がかかっていた処理を自動化する手法を使用します。また、迅速かつ確実にアプリケーションを運用して展開するために役立つテクノロジースタックとツールを使用します。これらのツールは、通常、他のチームのサポートを必要とするタスク (例えばコードのデプロイ、インフラストラクチャのプロビジョニングなど) をエンジニアが単独で実行するためにも役立ちます。これにより、チームの作業速度はさらに向上します。

DevOps-What-is_scale

迅速な実行により、顧客のためにより迅速に革新を進めることができ、変化し続ける市場によりよく適合し、ビジネスの成果をより効率的に得られるようになります。DevOps モデルによって、開発チームと運用チームでこうした効果を発揮できます。例えば、マイクロサービス継続的デリバリーによって、チームにサービスの所有権が与えられ、更新をすばやくリリースできます。

DevOps-What-is_delivery

リリースの頻度とペースが増えるため、製品の革新と改善をより迅速化できます。新機能のリリースやバグの修正をよりすばやく行えることで、より迅速に顧客のニーズに応えることができ、競争優位性を高めることができます。継続的インテグレーション継続的デリバリーは、ビルドからデプロイまでソフトウェアのリリース処理を自動化する手法です。

DevOps-What-is_reliability

アプリケーションの更新とインフラストラクチャの変更についての品質が保証されているため、ポジティブなエンドユーザーエクスペリエンスを保ちながら、より迅速なペースで確実な配信が可能です。継続的インテグレーション継続的デリバリーなどの手法を使用して、それぞれの変更が機能的で安全であることをテストします。モニタリングとロギングの手法はリアルタイムのパフォーマンス情報を常に把握するために役立ちます。

DevOps-What-is_scale

規模に応じたインフラストラクチャと開発のプロセスの運用と管理を行います。オートメーションと整合性は、複雑なシステムや変化するシステムを効率的に管理し、リスクを減らすために役立ちます。例えば、Infrastructure as code は、開発、テスト、本番環境を反復し、より効率的な方法で管理するために役立ちます。

DevOps-What-is_collaboration

DevOps の文化的なモデルに基づく、より効果的なチームを構築し、所有権や責務などの価値を強調します。開発チームと運用チームは緊密に共同作業し、多くの責任を共有し、それぞれのワークフローを組み合わせます。これにより非効率性を低下させ、時間を節約できます (例えば、実行する環境を考慮に入れてコードを記述して、開発と運用の間での引き渡しにかかる時間を短縮します)。

DevOps-What-is_security

制御を保持してコンプライアンスを順守しながらすばやく移行できます。自動化されたコンプライアンスポリシー、きめ細かい制御、および構成管理の技術を使用することにより、セキュリティを保ちながら DevOps モデルを導入できます。例えば、Infrastructure as Code と、コードとしてのポリシーを使用して、規模に応じたコンプライアンスを定義し、状況を追跡できます。

ソフトウェアとインターネットにより、ショッピング、エンターテイメント、銀行業務に至る業界とその産業は一変しました。今やソフトウェアは単にビジネスに役立つものというだけでなく、ビジネスのあらゆる部分での不可欠な構成要素となっています。企業は、オンラインサービスまたはアプリケーションとして配信されたソフトウェアを通して、あらゆる種類のデバイスで、顧客と相互にやりとりを行います。また、ソフトウェアを使用して、流通、通信、運用といったバリューチェーンにおける各分野を変革することで運用効率を向上させています。物理的な商品を扱う企業が 20 世紀に産業のオートメーションによって製品を設計、製造、配送する方法を変革したのと同じように、今日、企業はソフトウェアの作成、配信方法を変革する必要があります。

DevOps に移行するには、文化と考え方を変える必要があります。簡単に言うと、DevOps はこれまでサイロ化されていた開発と運用の 2 つのチームの間の障壁を取り除きます。一部の組織では、開発チームと運用チームを分けることなく、エンジニアが両方の役割を担う場合さえあります。DevOps では、この 2 つのチームが一緒に作業することで、開発者の生産性と、運用の信頼性がともに最適化されます。さらに、頻繁にコミュニケーションを取ることで、効率性を高め、顧客に提供するサービスの質が向上するように努めます。これらのチームはサービスに対する完全なオーナーシップを持ちます。エンドカスタマーのニーズと、そのニーズを満たす方法を考慮して、従来規定されてきた役割、または役職によって定められた範囲を超えることがあります。 品質管理チームとセキュリティチームが、これらのチームに緊密に統合されることもあります。DevOps モデルを使用している組織では、組織構造にかかわらず、各チームが開発とインフラストラクチャのライフサイクル全体を自らの責任の一部であると見なします。

ソフトウェア開発とインフラストラクチャ管理のプロセスの自動化と合理化を通して、組織がより迅速に革新するために役立ついくつかの主な手法があります。これらの手法の多くは、適切なツールを使うことで達成されます。

1 つの基本的な手法は、頻繁に小さな更新を実行することです。これは、組織が顧客のためにより迅速に革新を実行する方法です。通常、この手法による更新頻度は、従来型のリリース手法で実行する更新頻度よりも高くなります。頻繁に小さな更新をすることで、各デプロイのリスクを減らすことができます。この方法の場合、チームはエラーが発生した最後のデプロイを特定できるため、より迅速にバグに対処できます。更新の回数やサイズはさまざまですが、DevOps モデルを使用している組織は、従来のソフトウェア開発の手法を使用する組織よりも頻繁に更新をデプロイします。

組織はマイクロサービスアーキテクチャを使用し、アプリケーションをより柔軟にして革新をすばやく実現することもできます。マイクロサービスアーキテクチャにより、大きく複雑なシステムを、シンプルで独立したプロジェクトに切り離すことができます。アプリケーションは、多くの個別のコンポーネント (サービス) に分割されます。各サービスは 1 つの目的または機能のみに限定され、同等のサービスとアプリケーション全体から独立して動作します。このアーキテクチャによってアプリケーションの更新における連携オーバーヘッドが低減されます。そして、各サービスに対してそれぞれのオーナーシップを持つ小さなアジャイルチームが存在する場合、組織での実現速度はさらに速くなります。

しかし、マイクロサービスと増大するリリース頻度の組み合わせは、より多くのデプロイにつながり、運用上の課題をもたらします。そのため、継続的インテグレーションや継続的デリバリーのような DevOps の手法は、これらの問題を解決し、安全で信頼できる方法で組織が迅速に配信できるようにします。Infrastructure as Code や構成管理などのインフラストラクチャをオートメーションする手法は、頻繁に生じる変化に対してコンピューティングリソースを伸縮自在に対応できる状態に保つのに役立ちます。さらに、モニタリングとログ記録の使用により、エンジニアはアプリケーションとインフラストラクチャのパフォーマンスを追跡して、問題にすばやく対応できます。

これらの手法を併せて使用することで、組織はより迅速に信頼性のある方法で顧客に更新を配信することができます。これが重要な DevOps の手法に関する概要です。


DevOps のベストプラクティスは以下のとおりです。 

それぞれのベストプラクティスについての詳細は以下のとおりです。
継続的インテグレーション

継続的インテグレーションは、開発者が自分のコード変更を定期的にセントラルリポジトリにマージし、その後に自動化されたビルドとテストを実行するソフトウェア開発の手法です。継続的インテグレーションの主な目的は、バグを早期に発見して対処すること、ソフトウェアの品質を高めること、そしてソフトウェアの更新を検証してリリースするためにかかる時間を短縮することです。

継続的インテグレーションの詳細 »


継続的デリバリー

継続的デリバリーは、コードの変更を自動的にビルドし、テストし、運用環境にリリースする準備を行うソフトウェア開発の手法です。継続的デリバリーは継続的インテグレーションを拡張したもので、すべてのコード変更が、ビルド段階の後にテスト環境または本番環境、あるいはその両方にデプロイされます。継続的デリバリーを適切に実装することにより、開発者は、標準化されたテストプロセスに合格し、デプロイ準備の整ったビルドの成果物を常に手元に持つことになります。

継続的デリバリーと AWS CodePipeline の詳細 »


マイクロサービス

マイクロサービスのアーキテクチャは、1 つのアプリケーションを小さなサービスのセットとして構築するためのアプローチとして設計されています。各サービスは独自のプロセスで実行され、軽量のメカニズムで明確に定義されたインターフェイスによって他のサービスと通信します。通常は HTTP ベースのアプリケーションプログラミングインターフェイス (API) を使用します。マイクロサービスはビジネスコンピューティングを中心に構築され、各サービスは 1 つの目的に範囲が限定されています。さまざまなフレームワークやプログラミング言語を使用してマイクロサービスを作成し、単一のサービスまたはサービスのグループとして、それらを単独でデプロイできます。

Amazon Container Service (Amazon ECS) の詳細 »

AWS Lambda の詳細 »


Infrastructure as Code

Infrastructure as Code は、バージョン管理や継続的インテグレーションといったコードとソフトウェア開発技術を使用してプロビジョンおよび管理されるインフラストラクチャの手法です。クラウドの API によるモデルでは、開発者とシステム管理者がプログラムでスケールに応じてインフラストラクチャを操作できます。手動でリソースをセットアップして設定する必要はありません。そのため、エンジニアはコードベースのツールを使用してインフラストラクチャを操作でき、アプリケーションコードと同じ方法でインフラストラクチャを扱えます。コードで定義されるため、インフラストラクチャとサーバーは標準化されたパターンですばやくデプロイされ、最新のパッチまたはバージョンで更新され、反復可能な方法で複製されます。

AWS CloudFormation を使用した Infrastructure as Code の管理についてはこちらをご覧ください »

開発者とシステム管理者はコードを使用してオペレーティングシステムを自動化し、設定、運用タスクなどをホストします。コードを使用することで、設定変更は反復可能になり、標準化できます。開発者とシステム管理者がオペレーティングシステム、システムアプリケーション、サーバーソフトウェアを手動で設定する必要がなくなります。

Amazon EC2 Systems Manager を使用した Amazon EC2 とオンプレミスシステムの設定と管理については、こちらをご覧ください »

AWS OpsWorks を使用した構成管理の活用についてはこちらをご覧ください »

インフラストラクチャとクラウドで体系化された設定では、組織はスケールに応じて動的にコンプライアンスを監視して適用できます。つまり、コードで記述されたインフラストラクチャによって、自動化された方法で追跡、検証、再設定が可能になります。これにより、組織にとってリソース全体の変更を管理することが容易になり、セキュリティ対策が分散された方法で適切に実施されます (例えば、情報セキュリティ、PCI-DSS 準拠、または HIPAA 準拠)。準拠していないリソースについては、詳細に検査するように自動的に警告することや、コンプライアンスに自動的に戻すことさえできるので、組織内のチームはよりすばやい速度で作業できます。

AWS Config と Config Rules を使用して、インフラストラクチャのコンプライアンスを監視し、実施する方法についてはこちらをご覧ください » 


モニタリングとロギング

組織は、メトリクスとログをモニタリングし、アプリケーションおよびインフラストラクチャのパフォーマンスが製品のエンドユーザーエクスペリエンスにどのように影響しているかを確認できます。アプリケーションとインフラストラクチャで生成されたデータとログの取り込み、分類、分析によって、組織は、問題または予期しない変更の根底にある原因をとらえながら、変更や更新がどのようにユーザーに影響するかを理解できます。24 時間年中無休で使用可能なサービスが求められるにつれて、またアプリケーションとインフラストラクチャの更新頻度が増大するにつれて、アクティブモニタリングはますます重要になっています。アラートを作成してデータのリアルタイム分析を実行することも、組織がより積極的にサービスをモニタリングするために役立ちます。

Amazon CloudWatch を使用してインフラストラクチャのメトリクスとログをモニタリングする方法についてはこちらをご覧ください »

AWS CloudTrail を使用して AWS API コールを記録してロギングする方法についてはこちらをご覧ください »


コミュニケーションと共同作業

組織におけるコミュニケーションと共同作業の向上は、DevOps の主な文化的側面の 1 つです。DevOps のツールとソフトウェア配信プロセスのオートメーションを使用すると、開発と運用におけるワークフローと責任を物理的に一緒に担うことになるため、共同作業が定着します。それに加えて、これらのチームは、チャットアプリケーション、課題やプロジェクトの追跡システム、および wiki の使用を通して、情報共有やコミュニケーションの促進について強力な文化的基準を定めます。これにより、開発者、運用、マーケティングや営業など他のチームの全体にわたりコミュニケーションがスピードアップします。組織のあらゆる部分が目標とプロジェクトに向かってより緊密に連携します。

DevOps モデルでは、チームが顧客のために迅速かつ確実にデプロイして、革新を進めることをサポートする効果的なツールを使用しています。これらのツールを使用することで、手動タスクの自動化、規模に応じた複雑な環境を管理するチームのサポート、エンジニアによる DevOps で達成可能な高速性の制御が可能になります。AWS では DevOps 向けに設計され、最初に AWS クラウドで使用するように作られたサービスを提供しています。これらのサービスは、前述のような DevOps の手法を使用するために役立ちます。

AWS DevOps サービスについての詳細はこちらをご覧ください »

AWS パートナーソリューションについての詳細はこちらをご覧ください »