2020.06.23 AWSのDevOpsサービスと当社マネージドサービスを活用したDevOpsの実装①~概念編~

昨今、クラウドネイティブソリューションを活用したアプリケーション開発の普及に伴い、「DevOps」という言葉がクローズアップされるようになってきました。AWSサービスでもDevOpsを実現するサービスがラインナップされています。
今回は概念編として、DevOpsの概念と、AWSサービスを有効活用し当社マネージドサービスと組み合わせてDevOpsを実現する方法について事例を交えながらご紹介します。
次回は実装編として、実際にDevOpsを実装されたお客様の事例についてご紹介する予定です。

DevOpsって何?

DevOpsとは、端的に言うとDevelop(開発)とOperation(運用)のことです。

実際、当社内のアプリケーション開発チームでも下記のようなケースが散見されることがあります。

  • インフラを含めた他チームと協力することなくDevOpsを進めてしまう
  • DevOpsツールの導入を目的として、ツールによって実現する目的を定義していない

実際、クラウドサービスを利用していく中で、開発者が運用者不在でリリースの自動化を推し進めることも可能ですが、果たしてそれは、DevOpsの目的を達成出来ていると言えるのでしょうか?

AWSでは、DevOpsの文化と考え方について以下のように述べています。

DevOps の文化と考え方 DevOps に移行するには、文化と考え方を変化させる必要があります。簡単に言うと、DevOps はこれまでサイロ化されていた開発と運用の 2 つのチームの間の障壁を取り除きます。一部の組織では、開発チームと運用チームを分けることなく、エンジニアが両方の役割を担う場合さえあります。DevOps では、2 つのチームが一緒に作業することで、開発者の生産性と、運用の信頼性がともに最適化されます。さらに、頻繁にコミュニケーションを取ることで、効率性を高め、顧客に提供するサービスの質が向上するように努めます。これらのチームはサービスに対する完全なオーナーシップを持ちます。エンドカスタマーのニーズと、そのニーズを満たす方法を考慮して、従来規定されてきた役割、または役職によって定められた範囲を超えることがあります。 品質管理チームとセキュリティチームも、これらのチームと緊密に統合される場合があります。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):自動展開 <計画>計画の立案→<実行>アプリケーションの変更→<チェック>自動展開、自動テスト→<アクション>結果のレビュー→<計画>計画の立案... 継続的インテグレーション(CI)を行い、そこで作成された成果物のリリースの自動化を行うのが継続的デリバリ(CD)です。

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運用を強力にサポートすることが可能となります。

<お客様>管理者、アプリケーション管理担当者 <運用担当者>サービスデスク、IT運用管理、技術管理(保守SE) <営業・提案SE> <AWSサポート> <お客様>は<運用担当者>に運用を依頼。<運用者>は<営業・提案SE>および<AWSサポート>と連携。<営業・提案SE>は<お客様>に提案を実施。

まとめ

当社で担当しました案件では、開発者であるお客様と密に連携をとったうえで、構築を行いました。

双方で密な連携をとったことにより、お互いに新しい気づきもあり、問題なくDevOpsが行える環境が構築出来ました。

次回の実装編では、当社で担当したお客様のDevOps実装例をご紹介し、DevOpsに関する理解を深めて頂けるような内容を掲載します。

当社は、お客様のDevOpsをインフラの観点から支援することが可能です。クラウドやサーバレス開発の導入に際し、安定したアプリケーションの運用にお悩みがありましたら、是非当社へご連絡ください。

関連サービス

おすすめ記事

導入のお問い合わせはこちら

AWSやAmazon WorkSpacesの導入から接続回線、運用・保守まで何でもお任せください。

お問い合わせ・資料請求