Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf
Search
Senoue
January 18, 2025
Programming
1
40
App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf
Senoue
January 18, 2025
Tweet
Share
More Decks by Senoue
See All by Senoue
チャンネルを完全に理解する
senoue
0
33
Real-time Communication in Go with Melody and WebSockets
senoue
0
130
Adobeの生成AIのこと を調べてみた
senoue
0
160
ソフトウェア開発におけるAI :CopilotとGenie
senoue
0
160
Sendai.go x GDG Cloud 仙台 ハンズオン
senoue
0
47
GoでMecab
senoue
0
340
GKEとGoでエフェメラルなサービス
senoue
0
360
GAEのlogはStackDriverがいろいろやってくれている
senoue
1
530
GCPUG 仙台
senoue
1
440
Other Decks in Programming
See All in Programming
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.2k
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
1
500
Linux && Docker 研修/Linux && Docker training
forrep
23
4.1k
Azure AI Foundryのご紹介
qt_luigi
1
260
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
8
1.3k
Immutable ActiveRecord
megane42
0
120
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
140
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
0
230
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
980
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
600
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
230
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
260
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Cult of Friendly URLs
andyhume
78
6.2k
Unsuck your backbone
ammeep
669
57k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
520
Automating Front-end Workflow
addyosmani
1367
200k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Agile that works and the tools we love
rasmusluckow
328
21k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
6
220
How to train your dragon (web standard)
notwaldorf
89
5.8k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Transcript
App RunnerとRDSを活用した スケーラブルな Web API構築と インフラの自動化 Gopher's Gathering 2025.1.18
概要
AWSのApp RunnerとRDSを使って、スケーラブル で効率的な Web APIを構築する方法について解説 します。 また、構築には Terraformを活用した、インフラスト ラクチャをコードとして管理しながら、自動化を実現 したプロジェクトの事例を紹介します。
概要
Web API開発に興味がある方 構築やデプロイプロセスを学びたい、または効率的に管理したい方。 AWSのサービスに興味がある方 App RunnerやRDSを実際に使ってみたい方。 インフラの自動化に関心がある方 Terraformを通じて、インフラストラクチャをコードとして管理し、効率化を 図りたい方。 対象読者
瀬上 祐匡(せのうえ ひろまさ) 株式会社クラウドスミス テクニカルマネージャー • AWS,GCP, Go, Python等,BI,データ分析 •
@senoue,@hiromasa.senoue • モノノフです。 • 好きなものは、Cloud Function • Sendai.go やってます • TynyGo-keebなど 自己紹介 株式会社クラウドスミス 仙台を拠点とした、Webシステム中心の開発会社です。
None
スープがすごく、 おいしかった 一幸舎
最終的なアーキテクチャ
本日のレシピの結果 Repo:https://github.com/Senoue/aws-rds-apprunner-with-terraform
App Runner
App Runnerとは? AWS App Runnerは、AWSが提供するフルマネージド型のサービスであり、開発者が簡単に アプリケーションをデプロイ、管理できるように設計されています。 特にコンテナ化されたウェブアプリケーションや APIのホスティングに適しており、インフラストラ クチャの管理を最小限に抑えつつ迅速にサービスを公開できます。 ユースケース
App Runner: 小規模から中規模のウェブアプリケーションや APIを迅速にデプロイしたい場合 インフラ管理の手間を削減し、開発に専念したいチーム向け ECS: より高度なカスタマイズや特定のネットワーク要件がある場合 大規模なクラウドネイティブアプリケーションのデプロイ、運用を行う場面で最適 App Runner
高可用性とスケーラビリティ 自動スケーリング : トラフィック量に応じて自動でスケールアップ・ダウンする機能。 フェイルオーバー : サービス障害時の自動復旧によって高可用性を確保。 セキュリティ IAMロールの統合 :
権限管理や監査ログを効率的に行うための IAMとのシームレスな統合。 VPCアクセス : プライベートリソースへの安全なアクセスを可能にする設定オプション。 ビルトイン CI/CDサポート: GitHubやAmazon ECRとの統合により、コードの変更が自動的にデプロイされ、継続的なアッ プデートや改善が容易になります。 App Runner
Cloud Runとの比較 Google Cloud PlatformのCloud Runもまた、サーバーレス環境でコ ンテナを実行するためのサービスです。以下にそれぞれの特徴と違い をまとめます。 共通点 サーバーレス
: 両方ともサーバーレスアプローチを採用しており、ユー ザーは基盤となるインフラの設定や管理が不要です。 コンテナ: コンテナ化されたアプリケーションのデプロイをサポートして います。 App Runner
“ ハマったポイント
ハマりポイントと対策 ARMアーキテクチャの未対応 : 問題: App RunnerではARMアーキテクチャのイメージを利用できません。 2025年1月現在 対策: x86アーキテクチャ向けのコンテナイメージを準備します。 データベースマイグレーション
: 問題: デプロイ時に DBも自動生成する必要があります。 対策: デプロイメントパイプライン内にマイグレーションツール(例:など)を組み込み、初期化プ ロセスを自動化します。※今回ここは手動で実行します。 デプロイメントの柔軟性 : 問題: 特定のランタイムや構成に制約を感じることがあります。 対策: 必要な依存関係や環境変数を Dockerfileやスタートアップスクリプトで事前に設定し、カ スタマイズ性を向上させます。 App Runner
より深い技術ハマりポイントと対策: バージョン管理とロールバック : 問題: 特定のデプロイを簡単にロールバックする機能が不足。 対策: CI/CDパイプラインでバージョン管理をしっかりと設計し、必要に応じて手動で ロールバックを実施。 ネットワーク設定の複雑さ :
問題: 外部APIとの通信におけるネットワーク制約が存在。 対策: VPCおよびパブリックIP設定を正しく構成し、必要なアウトバウンドアクセスを許 可するための設定必要になる App Runner
制約とその克服方法 制約: App Runner自体にデータベースのホスティング機能はない。 解決策: RDSやDynamoDBなどAWSの他のサービスと連携し、データ ストレージを構成。 ログ管理機能 制約: App
Runnerには詳細なログ管理機能は含まれていない。 解決策: CloudWatchやログエクスポーターを組み合わせてリアルタイ ムのモニタリングを実現。 App Runner
Terraform
概要 Terraformは、インフラストラクチャをコードとして管理するためのオープンソースツールです。 HashiCorpによって開発されており、さまざまなクラウドプロバイダーやオンプレミス環境でイン フラのプロビジョニングを自動化します。 主な特徴 - 宣言的な構成: インフラ構成を記述する際に、どのリソースが必要かを宣言的に定義します。 - マルチクラウド対応:
AWS、Azure、Google Cloudなど複数のクラウドプロバイダーを一元管理できま す。 - 状態管理: リソースの実際の状態を保持し、変更を追跡・管理します。 - モジュール化: 再利用可能な設定をモジュールとして管理することで、効率的な構成をサポートします。 - コミュニティのサポート : 多くのプロバイダーやモジュールが公開されており、コミュニティによるサポート が充実しています。 Terraform
基本的なコンセプト 1. プロバイダー (Provider): - リソースを作成・管理するための APIへの抽象層を提供します。例えば AWS用のプロバイ ダーを使用して、 EC2インスタンスなどを操作します。
2. リソース (Resource): - 実際にプロビジョニングするインフラ要素。例 : 仮想マシン、データベースインスタンス、ネッ トワーク設定など。 3. モジュール (Module): - 1つ以上のリソースをまとめて再利用できるようにしたもの。共通する構成をモジュール化 し、独立して適用可能にします。 4. 状態ファイル (Terraform state): - 現在のインフラストラクチャの状態を記録したファイル。これを基に変更や差分の管理を行 います。 Terraform
Terraform $ terraform plan
Terraform $ terraform apply
迅速なプロビジョニング : - 素早くインフラをプロビジョンできるため、開発やテストの環境構築が迅速に行えま す。 - 一度定義した設定を使い回すことで、新しい環境を同じ状態で即座にデプロイできま す。 安全な削除操作 :
- terraform destroy コマンドで一貫してリソースをクリーンアップできるため、不要に なったインフラの完全削除が簡単です。 - 急なスケールダウンやテスト終了後の環境クリーンアップが容易になります。 Terraform
まとめ
今回、Amazon App RunnerとAmazon RDSを使用して、 高速でスケーラブルな Web APIを構築し、インフラの自動化を実現しま した。 App Runnerはアプリケーションのデプロイとスケーリングを自動化し、
RDSは高可用性と信頼性のあるデータベース管理を提供します。 これにより、リソースの最適化、一貫した環境管理、および迅速な機能 更新が可能となり、柔軟性と効率を高めることができます。
自社紹介 株式会社クラウドスミス 私たちは仙台を拠点に活動するWebシステム開発会社です。 多岐にわたる技術を駆使し、お客様のニーズに応じた最適なソ リューションを提供しています 強みと特徴: 柔軟な開発プロセス: Agile開発手法を採用し、クライアントとの密な コミュニケーションを通じて迅速なプロジェクト進行を実現。 高い専門性:
各分野に特化したエンジニアが在籍し、 高品質なプロダクト開発をお約束します。 地域密着: 仙台を中心に、地域の企業や団体と連携して地域経済の発展に貢献。
自社紹介 事業内容と技術スタック バックエンド開発: 主にPHP、Python、Goを使用し、スケーラブルで堅牢なサーバーサイドアプリケーションを構築。データベース 設計からAPI開発まで幅広く対応。 フロントエンド開発: React、Vue.js、Flutterなどのモダンなライブラリとフレームワークを活用。 ユーザー体験を重視したインタラクティブでレスポンシブな UIの実現。 クラウドサービス:
AWSやGoogle Cloud、Azure等のクラウドプラットフォームを 利用したインフラストラクチャの設計・運用。 システム統合: 既存システムとの連携や新規システムへの移行も含め、 包括的なソリューションを提供。
自社紹介 福岡オフィス立ち上げメンバー大募集! 🚀 来週の転職イベントに出展します、 ぜひ遊びにきてください! 仙台へのIターン・Uターンも熱烈歓迎! 🏯🌟
Thank You