昨今、クラウドネイティブソリューションを活用したアプリケーション開発の普及に伴い、「DevOps」という言葉がクローズアップされるようになってきました。AWSサービスでもDevOpsを実現するサービスがラインナップされています。
今回は概念編として、DevOpsの概念と、AWSサービスを有効活用し当社マネージドサービスと組み合わせてDevOpsを実現する方法について事例を交えながらご紹介します。
次回は実装編として、実際にDevOpsを実装されたお客様の事例についてご紹介する予定です。
目次
DevOpsって何?
DevOpsとは、端的に言うとDevelop(開発)とOperation(運用)のことです。
実際、当社内のアプリケーション開発チームでも下記のようなケースが散見されることがあります。
- インフラを含めた他チームと協力することなくDevOpsを進めてしまう
- DevOpsツールの導入を目的として、ツールによって実現する目的を定義していない
実際、クラウドサービスを利用していく中で、開発者が運用者不在でリリースの自動化を推し進めることも可能ですが、果たしてそれは、DevOpsの目的を達成出来ていると言えるのでしょうか?
AWSでは、DevOpsの文化と考え方について以下のように述べています。
(引用:https://aws.amazon.com/jp/devops/what-is-devops/)
つまり、「顧客に提供するサービスの質の向上」を目的とし、開発者の生産性(ビジネスアジリティ)と運用の信頼性(リスク低減)を最適化するため、チーム内で開発と運用が協力し合う組織活動のことを、「DevOps」ということとなります。
AWSサービスを利用した自動化は、あくまでそのためのツールと考えられます。
なぜ今DevOps?
冒頭でご紹介した通り、クラウドサービスを活用したアプリケーションの開発は、もはやデファクトスタンダード(事実上の標準)であり、サーバレスでの開発もスタンダードになりつつあります。開発者は物理の制限から解放され、より気軽に開発を行えるようになりました。
こうした流れから、気軽に開発出来るようになったことで、管理可能な指標がなくなりました。
開発したサービスの信頼性を担保するために、DevOpsのような考え方が必要になってきたのだと考えられます。
DevOps導入のポイント(CI/CDについて)
DevOpsと合わせてよく聞くのが、「CI/CD」という言葉です。これは、
- CI(継続的インテグレーション):「パッチ当てる」、「一部機能の変更」など改修作業(ソースのコミット)をトリガーとして開始されるビルド・テスト作業の自動化
- CD(継続的デリバリー):CIにて作成された成果物のリリースの自動化
ということを意味します。
CI/CDはAWSでは、DevOpsのためのベストプラクティスであり、DevOpsイニシアティブの重要なパートとされています。
CI/CD導入には「リリース作業の改善」と「デプロイリスクの軽減」の2点を考慮する必要があり、各項目で特に重要なポイントを抜粋してご紹介します。
①リリース作業の改善
- バージョンコントロールにより変更とリリースを管理していること
- 変更に関するテストと検証を実施していること
- 動作確認や負荷テストのために複数の環境を(本番環境だけでなく)使用していること
- CI(継続的インテグレーション)ツールなどを用い、ビルド・デプロイ・テストを自動化していること
②デプロイリスクの軽減
- ロールバック出来るように、(既存環境とは異なる)並行環境にデプロイしていること
- テストが失敗した場合のロールバックを自動化していること
AWSのDevOpsソリューション
AWSではCI/CDを実現するために、様々なサービスが用意されています。代表的なサービスについて、いくつかご紹介します。
AWS各サービスのご紹介
- CloudFormation
- AWSリソースの構築・管理を行うサービス。
ソフトウェアのようにインフラをコード化させデプロイのオートメーション化をさせるサービス。JSONもしくはYAML形式によるテンプレートテキストを記述していく。
CloudFormationに関する詳細は、前記事の「Infrastructure as Codeで実現する運用のオートメーション化」でもご紹介しておりますので、こちらも是非ご一読ください。 - CodeCommit
- Gitベースのリポジトリをセキュアにホストする完全マネージド型のソース管理サービス。
ソースコードの管理(バージョンやセキュリティ)を可能とし、AWSの各サービスだけでなく、Webhookを利用して外部のSaaSなどとの連携も可能。 - CodeDeploy
- Amazon EC2 インスタンス、およびオンプレミスで稼働するインスタンスを含む、さまざまなインスタンスへのコードのデプロイを自動化するサービス。
LambdaやFargateなどのコンピューティングサービスにもデプロイすることが可能。 - CodePieline
- ソフトウェアのリリースに必要な各工程の制御を行うことが出来るサービス。
コード変更に伴い発生するアプリのデプロイ・テスト・実稼働環境への反映などを行い、継続的デリバリーを実現可能にする。 - S3
- オブジェクトを保管するストレージサービス。
CI/CD環境において作成されるアーティファクトを保 存する際に多く利用される。
当社のマネージドサービスとDevOpsソリューション
当社のマネージドサービスは、ITILの組織・機能に従い、サービスデスク、IT運用管理、技術管理を形成しています。
サービスオペレーションフェーズを担い、運用を開始したシステム課題にも対応出来ます。システム課題は、営業・提案SEと連携し、お客様に改善のご提案を定期的に行っています。
当社のマネージドサービスを利用することで、お客様のDevOps運用を強力にサポートすることが可能となります。
まとめ
当社で担当しました案件では、開発者であるお客様と密に連携をとったうえで、構築を行いました。
双方で密な連携をとったことにより、お互いに新しい気づきもあり、問題なくDevOpsが行える環境が構築出来ました。
次回の実装編では、当社で担当したお客様のDevOps実装例をご紹介し、DevOpsに関する理解を深めて頂けるような内容を掲載します。
当社は、お客様のDevOpsをインフラの観点から支援することが可能です。クラウドやサーバレス開発の導入に際し、安定したアプリケーションの運用にお悩みがありましたら、是非当社へご連絡ください。
関連サービス
おすすめ記事
-
2020.06.23
Amazon Connectで在宅勤務でも対応できる問合せ窓口を立ち上げてみた
-
2020.08.17
Datadogで実現するモニタリングとオペレーションのオートメーション化
-
2020.04.27
Amazon FSx for Windows ファイルサーバーへの移行と活用方法
-
2020.06.11
Amazon WorkSpacesとは?その特長をまとめてみた
-
2020.06.23
AWSのDevOpsサービスと当社マネージドサービスを活用したDevOpsの実装①~概念編~