AWS Startup ブログ

【開催報告&動画公開】アプリ開発に集中するためのインフラ選定。運用工数を低減できるサービスとは -AWS Startup.fm

AWS Startup.fm は、スタートアップ出身の AWS エンジニアが特定のテーマに沿ってオンラインで AWS のサービスや最新事例を紹介するイベントです。

2021年8月10日(火)に「AWS Startup fm – アプリ開発者に捧ぐ!AWS でアプリ開発に集中するためのインフラ選定」というテーマで、ソリューションアーキテクトの永山 大輔(じゃが, @jagaimogmog)が本イベントに登壇しました。

スタートアップ企業のアプリ開発者は、人手や時間などのリソースが限られている中で、可能な限り開発効率を向上させてビジネスに貢献する必要があります。その際に有効なのが、 Amplify Console (Amplify Hosting) や AWS App Runner などを活用すること。これらのサービスを用いることで、インフラの管理・運用工数を低減させることができます。

本セッションでは永山が、Amplify ConsoleAWS App Runner の特徴やアプリケーションの種類に応じた使い分け方を解説しました。

セッション動画

インフラの管理・運用の負荷を軽減するために

スタートアップ企業の開発組織において「インフラに関連する課題を解決したい」というニーズは高い。多くのエンジニアが自社アプリの開発に注力するため、インフラに対し以下のような願望を持っています。

・インフラのコストを抑えたい
・インフラ専任のメンバーがいないため、インフラの管理・運用を簡単にしたい
・インフラ関連の知識の習得に時間をかけたくない
・難しい設定を何も意識しなくてもセキュリティが守られるようにしたい
・将来的なサービス成長を見越してスケーラビリティは担保したい

こうした要件を実現するには、AWS のマネージドサービスや開発者フレンドリーなサービスを使うことが有効な選択肢です。

マネージドサービスとは、AWS の利用者自身がサーバーの管理・運用を行う必要のないサービスのこと。OS セキュリティパッチの更新やミドルウェアのバージョンアップなどを利用者側で対応する必要がないため、インフラ関連の作業工数が低減できセキュリティも向上します。

システム負荷に応じて自動的にスケールアウト・スケールインするサービスが多いため、スケーラビリティも担保。マネージドサービスは利用量に応じた従量課金のものがほとんどであり、アプリのユーザーが少ないうちはかかるコストも低く抑えられます。

さらに、永山が開発者フレンドリーなサービスだと考えている Amplify Console や AWS App Runner であれば、インフラ関連の知識が少なくても使用でき、セットアップも簡単です。本セッションでは永山が Amplify Consoleと AWS App Runner のそれぞれの特徴と、適しているアプリの種類を解説しました。

Amplify Console – ウェブアプリの静的ホスティング

Amplify Consoleは静的ウェブサイトをグローバルにデプロイおよびホストするためのフルマネージドサービスです。Amplify Consoleが適しているのは、SPA(Single Page Application)や SSG(Static Site Generation)静的サイトホスティング。さらに最近、Next.js の SSR(Server Side Rendering)にも対応しました。

Amplify コンソールを経由してアプリのコードリポジトリ情報を登録しておくだけで、コードをコミットするたびに変更内容を自動的にワークフローにデプロイします。現在は GitHub や Bitbucket、GitLab、AWS CodeCommit に対応しております。

大きく以下の6つの特徴があります。

環境の分割

異なるブランチの場合は別々の環境にホスティングが行われます。さらに、ブランチごとに別々の URL が発行されます。

Pull Request プレビュー

Pull Requestが作成されるたびに、動作確認用の一時的なウェブサイトをホスティングしてくれます。ウェブサイトの URL は GitHub の Pull Request 内に記載されます。

モニタリング

アプリケーションのメトリクス情報をほぼリアルタイムで監視できます。Amplify コンソールから、リクエスト数やデータ転送量、4系エラーの数、5系エラーの数、Time to first byte の平均値という5つのメトリクスを確認することが可能です。

ベーシック認証

ブランチごとにユーザーネームとパスワードを設定してベーシック認証をかけることが可能になっています。全ブランチに対して一括でかけることも可能です。

Webhook

これは主に SSG で用いられる機能です。Headless CMS を使用している場合などに、管理画面でデータを変更すると Webhook をトリガーにしてコンテンツをビルドし直すなどの設定ができます。

E2E テスト

Amplify Console では E2E テストフレームワークの Cypress に対応しています。

AWS App Runner – フルマネージド型のアプリ実行環境

AWS App Runner は、コンテナ化されたウェブアプリや API を開発者が簡単かつ迅速にデプロイできるフルマネージドサービスです。AWS App Runner がアプリを自動的にビルドおよびデプロイし、トラフィック量に応じて自動的にスケールアップ・スケールダウンします。ウェブフレームワークや Nuxt.js の SSR の場合は、AWS App Runner が適しています。

セットアップも非常に簡単です。リポジトリを紐づけて、ビルドの設定をし、最後にサービス設定を行うのみです。サービス設定では仮想 CPU やメモリ、オートスケーリング、ヘルスチェック、セキュリティなどの項目があり、ユーザーの用途に合わせて調節します。また、ソースコードベースのデプロイとコンテナベースのデプロイの両方に対応しています。

ソースコードベース

・ソースコードリポジトリへの push をフックにしてデプロイ
・Python 3系、Node.js 12系のランタイムを提供

コンテナベース

Amazon ECR への push をフックにしてデプロイ

AWS App Runner はコンソールからログ情報の確認も可能になっています。また、リクエスト数や応答のレイテンシ、HTTP ステータス2系、4系、5系などのメトリクスもコンソールで閲覧でき、利用者のユースケースにマッチしていれば生産性を大きく向上できます。

AWS のサービスを活用し、アプリ開発に集中できる環境を

今回ご紹介した Amplify Console や AWS App Runner などを活用することでインフラの運用・管理コストを下げ、スタートアップ企業のエンジニアが開発に集中できる環境を生み出すことができます。ぜひ、これらのサービスをビジネスの成長に役立てていただけると嬉しいです。