Amazon Web Services ブログ

Category: DevOps

Amazon DevOps Guru が一般サービス提供開始となり東京リージョンでもお使いいただけます

みなさん、こんにちは。アマゾン ウェブ サービス ジャパン、シニアエバンジェリストの亀田です。 2020年の re:Invent でアナウンスされた Amazon DevOps Guruが一般サービス提供開始となり、東京リージョンでもご利用いただけますのでお知らせいたします。 Amazon DevOps Guru DevOps Guru はアプリケーションの可用性を向上させる 機械学習 駆動のクラウドオペレーションサービスであり、これを用いることでアプリケーションの運用パフォーマンスと可用性を簡単に向上させることができます。機械学習が通常の運用パターンを学習し、そこから逸脱した動作を検出し、迅速に運用上の問題を特定することができます。例えば、異常なアプリケーションの動作となる、レイテンシーの増加、エラー率、リソースの制約などを特定し、ダッシュボードに情報を集約させ、さらに、アラートを管理者に自動的に送信し、関連する異常の概要、考えられる根本原因、および問題が発生した時期と場所に関する情報を提供します。そして、可能な場合、DevOps Guru は、問題を修正する方法に関する推奨事項もあわせて提供するため、運用者は問題の特定と修正アクション開始が容易になります。 DevOps Guru は、Amazon CloudWatch、AWS Config、AWS CloudFormation、AWS X-Ray などの複数のソースからの運用データを継続的に分析および統合し、運用データの異常を検索して視覚化を行い、以下のような、単一のコンソールダッシュボードを提供します。 ダッシュボードに集約された情報はさらに、個別の項目をドリルダウンしていくことが可能で、問題が検知された日時、その原因の推察、対処方法の推奨項目などが以下に表示されます。 発見された問題は、DevOps GuruとAmazon SNSの連携により、管理者に通知を自動で送出するや、サードパーティツールとの連携を構築することが可能です。 DevOps Guru はVPC エンドポイントを用いることで、VPC内部から検知された異常の詳細を取得可能なAPIに対してセキュアにアクセスさせることが可能です。 AWS CloudFormation との連携と予防的/事後的インサイト DevOps Guru でリソースを監視対象に設定させるためには、2種類の設定方法があります。設定を行うAWSアカウントの当該リージョンでサポートされているすべてのリソースを監視対象に含める方法と、個別にCloudFormationでリソース群を指定する方法です。CloudFormationで管理されていないリソースを個別に管理対象に登録はできないことに留意してください。DevOps Guru がサポートするリソースは、AWS Lambda を中心としたサーバレスサービス群だけではなく、Amazon EC2 やAmazon RDS、Amazon S3等幅広いAWSのサービスをサポートしています。 2020年 re:Invent でのアナウンス後提供されていたプレビューでは、問題が発生してからインサイトが提供される、事後的インサイト、の機能のみが提供されていましたが、一般サービス提供開始時点で新たに、予防的インサイト、が提供されるようになります。この予防的インサイトは運用上のデータメトリックスをもとに、将来発生すると予測される問題に対処するための推奨事項が出力されます。例えば、ディスク使用率などの有限のリソースメトリックを監視し、日々の増加状況からディスクキャパシティにかかわる問題が発生することを予測し、ダッシュボードに問題を出力します。 上記のように1方向にデータが遷移するパターンは検知が容易ですが、例えば定期的なスパイクを迎えているシステムの場合、一時的なリクエスト増は定常状態にあるとも言えます。このようなデータを取り扱う場合、一般的な閾値モデルでは対処が難しいケースがあります。DevOps Guru は機械学習を異常検知に用いるため、そのデータ増が異常なのか定常的なものなのかを自動で判別します。 これはAPIリクエストの定常的なスパイクを記録したグラフです。このようなケースではDevOps […]

Read More

Modern Apps Live – サーバーレスやコンテナなどに関する 5 月のセッション

Modern Apps Live は、モダンアプリケーション開発に関して 5 月に Twitch でライブストリーミング配信されるイベントシリーズです。 セッションのトピックには、サーバーレス、コンテナ、モバイルおよびフロントエンドの開発などが含まれます。 あまり馴染みのない方のために、モダンアプリケーションの特徴を以下に紹介します。 数百万のユーザーに迅速に拡張できます。 グローバルな可用性があります。 膨大なデータを管理します (エクサバイト単位)。 応答はミリ秒単位です。 このようなアプリケーションは、マイクロサービスアーキテクチャ、サーバーレス運用モデル、およびアジャイル開発者プロセスを組み合わせて構築されます。モダンアプリケーションでは、イノベーションの加速に加えて、リスク、市場投入までの時間、TCO (総所有コスト) の削減を実現することができます。 Modern Apps Live は、4 つの仮想イベントで構成されるシリーズです。 Container Day x Kubecon (5 月 4 日) Serverless Live (5 月 19 日) Mobile and Front-end Live (5 月 25 日) Container Day x DockerCon (5 月 26 日) 開始したばかりの方にとっても、クラウドの経験が豊富な方にとっても、これらのセッションは、モダンアプリケーションの構築と設計を検討している開発者、ソリューションアーキテクト、または IT および […]

Read More

AWS CDKでエンタープライズアプリケーションを開発する

エンタープライズのお客様は、ガバナンスやコンプライアンス・品質管理のために Infrastructure as Code (IaC)を標準化しなければならない場合があります。さらに、IaCのライブラリやそのアップデートを中央集権的に管理しなければならない場合もあるでしょう。それらを実現するため、この記事では AWS Cloud Development Kit (AWS CDK) を利用してIaCのパターンを定義する方法や、AWS CodeArtifactを利用してIaCの更新リリースを統制する方法を紹介します。

Read More

AWS CDKでクラウドアプリケーションを開発するためのベストプラクティス

この記事では、AWS Cloud Development Kit (AWS CDK) を中心とした、大規模なチームで複雑なクラウドアプリケーションの開発を組織化するための戦略について説明します。AWS CDK では、開発者や管理者は、TypeScript、Python、Java、C#などの使い慣れたプログラミング言語を使ってクラウドアプリケーションを定義することができます。アプリケーションは、Stage、Stack、Constructに整理されており、ランタイムロジック (AWS Lambda コードやコンテナ化されたサービスなど) と、Amazon Simple Storage Service (Amazon S3) バケット、Amazon Relational Database Service (Amazon RDS) データベース、ネットワークなどのインフラストラクチャコンポーネントの両方において、モジュール化された設計手法を可能にしています。 この記事では、AWS CDKの基本的なコンセプトに関する簡単なチュートリアルではなく、より実践的な内容について説明します。ローカルでコードを書きテストする方法や、本番環境や様々なステージングアカウントにデプロイする方法、そしてチームのアプリを整理して、より大きな組織で活用する方法について説明します。 AWS CDKを初めてご利用になる方は、AWS CDK Intro Workshop から始めることを強くお勧めします。この記事では、いくつかの高度なトピックを扱っていますが、基礎を把握しておくと良いでしょう。詳細については、AWS CDKリファレンスドキュメントとGitHub リポジトリにある aws-cdk-examples  のサンプルコードを参照してください。 CDKの哲学 前回の記事では、AWS CDKの歴史とモチベーションについて説明しました。AWS CDKを設計するにあたり、私たちはお客様や社内のチームのニーズを詳しく調査し、複雑なアプリケーションのデプロイや継続的なメンテナンスの際に発生する一般的な障害パターンを分析しました。例えば、本番環境でアプリケーションの設定ファイルを編集すると、テスト環境では見られなかったエラーが発生する、などです。AWS CDKは、アプリケーション全体をコードで定義し、ソースリポジトリへのプッシュによってのみデプロイされたアプリケーションへの変更をするというモデルを可能にしています。 組織では、インフラストラクチャを作成するチーム、ソフトウェア開発を行うチーム、設定とデプロイを行う運用チームなど、一つのアプリケーションを別々の役割で担当する複数のチームが存在する場合があります。あるいは “two-pizza-team” のような小さなチームであっても、アプリケーションは次の図のように、インフラストラクチャーとコードが別々のリポジトリで管理されていて、デプロイがすべて独立したCI/CDシステムで管理されている事があります。 AWS CDKを使用すると、これらすべてを一つにまとめて、単一のリポジトリに格納された単一のアプリケーションを作成することができます。このアプリケーションでは、VPC、S3バケット、Amazon Elastic Compute Cloud (Amazon EC2)インスタンス、セキュリティグループなどの基本的なコンポーネントを定義します。また Typescript で書かれた Lambda関数のコードや、Java […]

Read More

Docker コンテナイメージを使用した PHP Lambda 関数の構築

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 re:Invent 2020 で、AWS Lambda 関数をコンテナイメージとしてパッケージ化してデプロイできる機能が発表されました。AWS Lambda 関数をコンテナイメージとしてパッケージ化すると、PHP などのカスタムランタイムを実行する開発者にいくつかの注目すべき利点がもたらされます。このブログ投稿では、これらの利点について説明し、Lambda 関数の新しいコンテナイメージサポートを使用してサーバーレス PHP アプリケーションを構築する方法を示します。 概要 多くの PHP 開発者は、デプロイを容易にするために、ポータブルなアーティファクト作成としてコンテナを利用したアプリケーションの構築方法をご存知のことでしょう。アプリケーションをコンテナとしてパッケージ化すると、複数の環境で一貫した PHP バージョン、パッケージバージョン、および構成設定を維持しやすくなります。

Read More
.NET on AWS

AWSで.NET 5を利用する

AWSには長い間.NETでの開発に携わってきた者が多数在籍しており、私たちは.NET 5がGAリリースされたことに大きい喜びを感じています。2020年夏に.NET Conf 2020で発表されたベンチマーク結果によると、旧バージョンの.NET Core 3.1に比べ特に性能改善に力が注がれたことがよく分かります。この記事では、AWSが.NET 5での開発をサポートするためにどんなサービスやツールをご用意しているか、コンピューティング・ネットワーク・開発者ツール・データベースといった4つの領域に分けて解説していきたいと思います。これらの情報をもとに、皆様がAWS上で.NETを最大限活用できれば幸いです。

Read More

新登場 – アプリケーションのエラーと修正の特定に役立つ Amazon DevOps Guru

本日、完全マネージド型運用サービスの Amazon DevOps Guru を発表します。Amazon DevOps Guru は、運用上の問題を自動的に検出して修正を推奨することで、デベロッパーやオペレーターがアプリケーションの可用性を容易に向上させることができるようにするサービスです。DevOps Guru は、Amazon.com とアマゾン ウェブ サービス (AWS) の長年にわたるオペレーショナルエクセレンスを習得した機械学習を適用し、アプリケーションメトリクス、ログ、イベントなどのデータを自動的に収集および分析し、通常の運用パターンから逸脱した動作を特定します。 動作が運用上の問題またはリスクとして特定されると、DevOps Guru はデベロッパーとオペレーターに問題の詳細を通知し、問題の範囲と原因の可能性を迅速に把握できるようにします。DevOps Guru では問題を解決するためのインテリジェントな推奨事項が提供されるため、解決までにかかる時間を節約できます。DevOps Guru では、ハードウェアやソフトウェアをデプロイする必要はなく、分析されたデータに対してのみ課金されます。前払いコストやコミットメントは発生しません。 分散された/複雑なアーキテクチャとオペレーショナルエクセレンス アプリケーションの分散化と複雑化が進むにつれ、オペレーターはアプリケーションの可用性を維持し、運用上の問題の検出、デバッグ、および解決に費やす時間と労力を削減するために、より自動化されたプラクティスを必要とします。例えば、設定ミス、不均衡なコンテナクラスター、またはリソースの枯渇などによるアプリケーションのダウンタイムは、企業にとって大きな収益損失につながる可能性があります。 多くの場合、企業は、メトリクス、ログ記録、トレース、イベントなどの複数のモニタリングツールをデプロイおよび管理し、それらをさまざまな場所に保存して分析するといった、デベロッパーの作業にかかる時間に投資する必要があります。また、デベロッパーやオペレーターは、ロードバランサーでのエラーのスパイクやアプリケーションのリクエストレートの異常な低下などの問題を警告するために、カスタムアラームの開発と保守に時間を費やしています。問題が発生すると、オペレーターは同じ問題に関連する複数のアラートを受け取り、アラートを組み合わせて、すぐに対応しなければならないアラートに優先順位を付けます。 DevOps Guru の仕組み DevOps Guru の機械学習モデルは、過去 20 年にわたって、AWS の専門知識を活用して世界最大の電子商取引ビジネス向けに高可用性アプリケーションを実行しています。DevOps Guru は、運用上の問題を自動的に検出し、考えられる原因を詳述し、修復アクションを推奨します。DevOps Guru は、Amazon CloudWatch、AWS Config、AWS CloudTrail、AWS CloudFormation、AWS X-Ray をサポートする複数のソースにまたがるデータを統合することにより、運用データを検索および可視化する単一のコンソールエクスペリエンスをお客様に提供し、複数のツールを使用する必要がなくなります。 DevOps Guru の開始方法 DevOps Guru のアクティブ化は簡単で、AWS マネジメントコンソールにアクセスして [Enable (有効)] をクリックだけです。DevOps Guru […]

Read More

サーバーレス LAMP スタック – Part 6: MVC からサーバーレスマイクロサービスへ

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 本シリーズの他のパートは以下のリンクからアクセスできます。また、関連するサンプルコードはこちらの GitHub リポジトリにあります。 パート1:サーバーレス LAMP スタックの紹介 パート2:リレーショナルデータベース パート3:Webサーバーの置き換え パート4:サーバーレス Laravel アプリの構築 パート5:CDK コンストラクトライブラリ この投稿では、マイクロサービスを使用してサーバーレス PHP アプリケーションを構築する方法をご理解いただけます。これまでご紹介してきた MVC フレームワークを利用した単一の Lambda 関数によるスケーラブルな Web ホスティングから、分離されたマイクロサービスモデルに移行する方法を示します。なお、このブログ投稿に付随するコード例は、この GitHub リポジトリにあります。 MVC アーキテクチャパターン 従来の LAMP スタックでは、多くの場合、Model-View-Controller(MVC)アーキテクチャを使って実装しています。これは、アプリケーションロジックをモデル、ビュー、およびコントローラの3つの部分に分離して実装する、確立された手法です。 モデル:この部分はアプリケーションのデータを管理する役割を果たします。その役割は、データベースから生データを取得したり、コントローラからユーザー入力を受け取ることです。 ビュー:このコンポーネントは表示に焦点を当てています。モデルから受け取ったデータをユーザーに提示します。ユーザーからの応答が認識され、コントローラコンポーネントに送信されます。 コントローラ:この部分はアプリケーションロジックを担当します。ユーザー入力に応答し、データモデルオブジェクトに対して相互作用を実行します。 データ、ロジック、およびプレゼンテーション層を分離するという MVC の原則により、1つの層での変更が他の層に与える影響を最小限に抑えることが可能です。これにより、開発プロセスがスピードアップし、レイアウトの更新、ビジネスルールの変更、および新機能の追加が容易になります。コンポーネント化によって、再利用とリファクタリングの適用性があがり、同時/並行開発がしやすくなります。 サーバーレス LAMP スタック サーバーレス LAMP スタックアーキテクチャについては、この投稿で説明しています。そこでは Webアプリケーションが 2つのコンポーネントに分割されています。アプリケーションにおける MVC フレームワークの役割をはたす単一の AWS Lambda 関数と、各応答を同期的に返す […]

Read More

サーバーレス LAMP スタック – Part 5: CDK コンストラクトライブラリ

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 本シリーズの他のパートは以下のリンクからアクセスできます。また、関連するサンプルコードはこちらの GitHub リポジトリにあります。 パート1:サーバーレス LAMP スタックの紹介 パート2:リレーショナルデータベース パート3:Webサーバーの置き換え パート4:サーバーレス Laravel アプリの構築 パート6:MVC からサーバーレスマイクロサービスへ この投稿では、サーバーレス LAMP スタック用の新しい CDK コンストラクトライブラリが、開発者によるサーバーレス PHP アプリケーションの構築にどのように役立つかを学びます。 AWSクラウド開発キット(AWS CDK)は、クラウドアプリケーションリソースをコードで定義するためのオープンソースソフトウェア開発フレームワークです。開発者は、TypeScript、Python、C#、Javaなどの使い慣れたプログラミング言語でインフラストラクチャを定義できます。開発者は、インターフェイス、ジェネリクス、継承、メソッドアクセス修飾子など、言語が提供する機能を利用できます。AWS Construct ライブラリは、CDK アプリケーションで AWS リソースを定義するための API を公開するモジュールの広範なセットを提供します。 「サーバーレス LAMP スタック」ブログシリーズでは、ベストプラクティス、コード例、多くのサーバーレスコンセプトの詳細を紹介し、これらが PHP アプリケーションにどのように適用されるかを示しています。また、PHP 開発者のインスピレーションを刺激するのに役立つ、コミュニティからの貴重な貢献に焦点を当てています。 このサーバーレス LAMP スタックの各コンポーネントについては、一連のブログ記事で詳しく説明しています。 パート1:サーバーレス LAMP スタックの紹介 パート2:リレーショナルデータベース パート3:Webサーバーの置き換え パート4:サーバーレス Laravel アプリの構築 サーバーレス LAMP […]

Read More
CDK

CloudFormation テンプレートから AWS Cloud Development Kit への移行

AWS CloudFormation を使用すると、開発者やシステム管理者は、関連する AWS リソースのコレクションを簡単に作成および管理し、それらを整然かつ予測可能な方法でプロビジョニングおよび更新できます。AWS CloudFormation のサンプルテンプレートの使用、または独自のテンプレートの作成によって、アプリケーションの実行に必要な AWS リソース、相互の依存関係、および実行時パラメーターを定義できます。AWS サービスのプロビジョニングの順序や、それらの依存関係を解決するための詳細を把握する必要はありません。CloudFormation はあなたに代わってこれを処理します。AWS リソースをデプロイしたら、制御され予測可能な方法で変更し更新できます。これにより、ソフトウェアと同じ方法で AWS インフラストラクチャにバージョン管理を適用できます。 2019 年 7 月、AWS Cloud Development Kit(CDK)がリリースされました。開発者が AWS インフラストラクチャを TypeScript、JavaScript、Python、C#、Java などの使い慣れたプログラミング言語のコードで定義できるようになったことで、お客様の選択肢が増えました。CDK では、より高いレベルの抽象化を使用してインフラストラクチャを定義できますが、その背後では CloudFormation が使われています。つまり、自動ロールバックやドリフト検出など、CloudFormation のすべてのメリットを享受できます。 多くの開発者は、アプリケーションコードに使用するのと同じ使い慣れたプログラミング言語でインフラストラクチャを定義することを好むため、CDKを使用したいと考えています。しかし一方で、実証済みのインフラストラクチャパターンと重要な構成設定をエンコードした CloudFormation テンプレートの広範なライブラリをすでにお持ちです。これらのテンプレートは、構築と維持に時間と労力を要します。一方で既存のスタックを再現する CDK コードを手動で記述することは、面倒でエラーが発生しやすくなります。 今日まで、既存のテンプレートで定義されたインフラストラクチャを活用する唯一の方法は、コアモジュールの CFnInclude クラスでした。これにより、CDK アプリケーションに CloudFormation テンプレートを組み込み、変更せずに出力することができました。ただし、このソリューションにはいくつかの制限があります。 テンプレートに含まれるリソースは、インクルードした後で変更することはできません。 テンプレートから取り込んだリソースは、その論理 ID を使用して手動で参照します。これはエラーが発生しやすく、この方法で作成された参照は、CDKが提供する強力な機能である CDK の自動クロススタックリファレンス生成機能を利用できません。 CloudFormation-Include CDK モジュールの発表 既存の CloudFormation スタックを CDK コードに移行するために特別に開発された CloudFormation-include […]

Read More