初心者のためのDevOps原則紹介
DevOpsは一般的に使われるバズワードですが、実際にはプログラマーの頭脳からサーバーまで、開発プロセス全体を効率化し、管理するための原則のセットです。
基本
ほとんどのチームは、おそらく開発者を二つの主要なカテゴリーに分けることができます:
- コードベースの更新、バグの修正、全般的なプログラミングを担当する開発者たち。ウェブデザイナーやUIデザイナーなど、他の役割もこのカテゴリに含めることができます。一般的に、あなたの製品を実際に構築することに関与している人々が含まれます。
- システム管理者、または「オペレーションチーム」。これらの人々は、新しいコードでサーバーを更新し、公開用および内部用のサーバーインフラを管理し、すべてを正常に稼働させることを担当しています。
簡単に言えば、DevOpsはこれらの2つのチームを一緒に統合することに関するものです(そのため、このポートマントーの名前があります)。開発者をシステム管理者にしたりその逆にしたりするものではありませんが、彼らが一緒に働くのを助けるはずです。
各側面とフェーズは、この全プロセスを容易にするツールで補完されています。DevOpsは単なるツールや自動化以上のものであり、一連の「DevOpsツール」を導入したからといって、自動的にチームの作業が2倍の速さになるわけではありませんが、これらのツールはプロセスの主要な部分であり、それらのいくつかなしでは同じように効率的に作業することは難しいでしょう。
「DevOps」という傘の下にさまざまな流行語が投げ込まれることが多いですが、基本的な概念は非常にシンプルです。チームが適切に機能しているとき、DevOpsは一般的に以下のように流れます:
説明すると、監視フェーズから始めます。これは、サーバーを監視し、分析データを見て、ログを分析し、コードベースの問題を特定することを含みます。この大部分はコードに関連していますが、ビジネス面でも多くのことが関係しています。あなたの目標は効果的に達成されていますか?お客様は満足していますか?このフェーズは、適切な目標を設定するために何が問題なのかを見つけ出すことがすべてです。人気の監視ツールには、Nagios、AWS CloudWatch、Google Analyticsなどの分析ソフトウェアが含まれます。
おそらく、クライアントから直接チケットをもらい、計画段階から始めるでしょう。ここでは、リード開発者と一緒に座って、チケットを完了するために何をする必要があるかを議論します。Jiraのようなソフトウェアを使用している場合、大きなチケットを個別のストーリーや問題に分解し、より簡単に追跡できるようにし、各開発者に割り当てることができるでしょう。来週か2週間のコードスプリントを計画している場合は、コードを繰り返すのにかかる時間を削減するために、計画を明確に示しておく必要があります。
すべてが完成したときに一度だけテストとビルドを行うのではなく、DevOpsの環境では、理想的には各開発者が問題が解決されたり小さなマイルストーンに達したりするたびに、1日に複数回ソースコード管理に変更を提出します。これにより、ビルドおよびテストのフェーズが早期に開始され、どの開発者もマスターソース管理のHEADから遠ざかりすぎないようにします。この段階は主に適切なソース管理に関するものであり、GitHub、GitLab、またはBitBucketのような効果的なgitサービスを持つことは、継続的インテグレーションを円滑に運営するために重要です。
すべてのコミットをすぐに本番環境にデプロイする必要はありませんが、迅速な自動デプロイは迅速なリリースを行う上で重要な要素です。さらに、オペレーションチームの負担が軽減され、新しいコードでサーバーを手動で更新するよりも、より重要なことに集中できるようになります。
新しい変更が展開されると、サイクルは再び始まります。追加した新機能がステージングデータベースサーバーの負荷を増している可能性があり、本番環境に展開する前にパフォーマンスレビューのためにマークし、修正が必要かもしれません。すべてが適切に流れる場合、DevOpsは固定された一連の手順ではなく、誰もが自然に従う文化になります。
継続的インテグレーション/継続的デリバリーパイプライン
自動化とツールは、どのDevOps環境においても重要な部分です。おそらく最も重要なツールは、継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインです。これは、ソースコードから始まる自動化されたプロセスで、ビルド、テスト、およびサーバーへのデプロイメントのプロセスを管理します。
AWSのCodePipelineはこれの良い例です。ソースコントロール(GitHub、BitBucket、またはAWS CodeCommitのいずれか)で変更が検出されると、それはビルドおよびテストのためにAWS CodeBuildに送信されます。また、ビルドフェーズを処理するためにJenkinsが非常に頻繁に使用されます。
通常、ビルドが完了したら、直接本番環境に移行する前にテスト環境に送ることが望ましいです。それでも、テストサーバーと本番サーバーの両方へのデプロイを自動化することで、反復作業の時間を大幅に短縮できます。AWSのパイプラインでは、これをCodeDeployが処理します。Jenkinsもデプロイを管理でき、Ansibleのようなソフトウェアも使用できます。
総じて、CI/CDパイプラインは、ビルドからデプロイメントまでのDevOpsフローの大部分を自動化できるため、効率的に作業を行うことを希望するチームにとって重要な要素となります。


