Upgrade to Pro — share decks privately, control downloads, hide ads and more …

App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf

Senoue
January 18, 2025

 App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf

Senoue

January 18, 2025
Tweet

More Decks by Senoue

Other Decks in Programming

Transcript

  1. 瀬上 祐匡(せのうえ ひろまさ) 株式会社クラウドスミス テクニカルマネージャー • AWS,GCP, Go, Python等,BI,データ分析 •

    @senoue,@hiromasa.senoue • モノノフです。 • 好きなものは、Cloud Function • Sendai.go やってます • TynyGo-keebなど 自己紹介 株式会社クラウドスミス 仙台を拠点とした、Webシステム中心の開発会社です。
  2. App Runnerとは? AWS App Runnerは、AWSが提供するフルマネージド型のサービスであり、開発者が簡単に アプリケーションをデプロイ、管理できるように設計されています。 特にコンテナ化されたウェブアプリケーションや APIのホスティングに適しており、インフラストラ クチャの管理を最小限に抑えつつ迅速にサービスを公開できます。 ユースケース

    App Runner: 小規模から中規模のウェブアプリケーションや APIを迅速にデプロイしたい場合 インフラ管理の手間を削減し、開発に専念したいチーム向け ECS: より高度なカスタマイズや特定のネットワーク要件がある場合 大規模なクラウドネイティブアプリケーションのデプロイ、運用を行う場面で最適 App Runner
  3. 高可用性とスケーラビリティ 自動スケーリング : トラフィック量に応じて自動でスケールアップ・ダウンする機能。 フェイルオーバー : サービス障害時の自動復旧によって高可用性を確保。 セキュリティ IAMロールの統合 :

    権限管理や監査ログを効率的に行うための IAMとのシームレスな統合。 VPCアクセス : プライベートリソースへの安全なアクセスを可能にする設定オプション。 ビルトイン CI/CDサポート: GitHubやAmazon ECRとの統合により、コードの変更が自動的にデプロイされ、継続的なアッ プデートや改善が容易になります。 App Runner
  4. Cloud Runとの比較 Google Cloud PlatformのCloud Runもまた、サーバーレス環境でコ ンテナを実行するためのサービスです。以下にそれぞれの特徴と違い をまとめます。 共通点 サーバーレス

    : 両方ともサーバーレスアプローチを採用しており、ユー ザーは基盤となるインフラの設定や管理が不要です。 コンテナ: コンテナ化されたアプリケーションのデプロイをサポートして います。 App Runner
  5. ハマりポイントと対策 ARMアーキテクチャの未対応 : 問題: App RunnerではARMアーキテクチャのイメージを利用できません。 2025年1月現在 対策: x86アーキテクチャ向けのコンテナイメージを準備します。 データベースマイグレーション

    : 問題: デプロイ時に DBも自動生成する必要があります。 対策: デプロイメントパイプライン内にマイグレーションツール(例:など)を組み込み、初期化プ ロセスを自動化します。※今回ここは手動で実行します。 デプロイメントの柔軟性 : 問題: 特定のランタイムや構成に制約を感じることがあります。 対策: 必要な依存関係や環境変数を Dockerfileやスタートアップスクリプトで事前に設定し、カ スタマイズ性を向上させます。 App Runner
  6. より深い技術ハマりポイントと対策: バージョン管理とロールバック : 問題: 特定のデプロイを簡単にロールバックする機能が不足。 対策: CI/CDパイプラインでバージョン管理をしっかりと設計し、必要に応じて手動で ロールバックを実施。 ネットワーク設定の複雑さ :

    問題: 外部APIとの通信におけるネットワーク制約が存在。 対策: VPCおよびパブリックIP設定を正しく構成し、必要なアウトバウンドアクセスを許 可するための設定必要になる App Runner
  7. 制約とその克服方法 制約: App Runner自体にデータベースのホスティング機能はない。 解決策: RDSやDynamoDBなどAWSの他のサービスと連携し、データ ストレージを構成。 ログ管理機能 制約: App

    Runnerには詳細なログ管理機能は含まれていない。 解決策: CloudWatchやログエクスポーターを組み合わせてリアルタイ ムのモニタリングを実現。 App Runner
  8. 概要 Terraformは、インフラストラクチャをコードとして管理するためのオープンソースツールです。 HashiCorpによって開発されており、さまざまなクラウドプロバイダーやオンプレミス環境でイン フラのプロビジョニングを自動化します。 主な特徴 - 宣言的な構成: インフラ構成を記述する際に、どのリソースが必要かを宣言的に定義します。 - マルチクラウド対応:

    AWS、Azure、Google Cloudなど複数のクラウドプロバイダーを一元管理できま す。 - 状態管理: リソースの実際の状態を保持し、変更を追跡・管理します。 - モジュール化: 再利用可能な設定をモジュールとして管理することで、効率的な構成をサポートします。 - コミュニティのサポート : 多くのプロバイダーやモジュールが公開されており、コミュニティによるサポート が充実しています。 Terraform
  9. 基本的なコンセプト 1. プロバイダー (Provider): - リソースを作成・管理するための APIへの抽象層を提供します。例えば AWS用のプロバイ ダーを使用して、 EC2インスタンスなどを操作します。

    2. リソース (Resource): - 実際にプロビジョニングするインフラ要素。例 : 仮想マシン、データベースインスタンス、ネッ トワーク設定など。 3. モジュール (Module): - 1つ以上のリソースをまとめて再利用できるようにしたもの。共通する構成をモジュール化 し、独立して適用可能にします。 4. 状態ファイル (Terraform state): - 現在のインフラストラクチャの状態を記録したファイル。これを基に変更や差分の管理を行 います。 Terraform
  10. 迅速なプロビジョニング : - 素早くインフラをプロビジョンできるため、開発やテストの環境構築が迅速に行えま す。 - 一度定義した設定を使い回すことで、新しい環境を同じ状態で即座にデプロイできま す。 安全な削除操作 :

    - terraform destroy コマンドで一貫してリソースをクリーンアップできるため、不要に なったインフラの完全削除が簡単です。 - 急なスケールダウンやテスト終了後の環境クリーンアップが容易になります。 Terraform
  11. 今回、Amazon App RunnerとAmazon RDSを使用して、 高速でスケーラブルな Web APIを構築し、インフラの自動化を実現しま した。 App Runnerはアプリケーションのデプロイとスケーリングを自動化し、

    RDSは高可用性と信頼性のあるデータベース管理を提供します。 これにより、リソースの最適化、一貫した環境管理、および迅速な機能 更新が可能となり、柔軟性と効率を高めることができます。