クラウドを使いこなす - マネージド/サーバーレスで運用/保守中心の作業から脱却し、機能開発/サービス提供に注力したいと考える企業が増えています。情報はあちこちにあるけれどどこから始めたら良いかわからない、そんな開発者のための「今から始めるサーバーレス」情報です(随時更新)。
サーバーレスを始めよう ≫ エンジニア/開発者の方へ | アーキテクトの方へ | プロジェクト責任者の方へ

サーバー管理が不要
(準備、OS 保守)

柔軟なスケーリング
(拡張/縮退)

十二分に考慮された
高可用性

アイドル時の
リソース確保が不要
- まずは体験 - 最初は「Hello World!」
- 記述したコードがそのまま動く - 当たり前のことですが、この手順ではサーバーの準備も実行環境の設定もしていません。実際の処理実行時に必要なサーバーリソースが自動割り当てられているのです。それでいて、冗長化が考慮された構成になっています。
- 一つのアプリケーションを作る
- 初めての動的 Web アプリ構築(2h 程度)
- オンラインで学ぶ、作る(5-10分 × 11本)
- AWS Hands-on for Beginners 〜Serverless 編〜 - あらためて、サーバーレスを理解する
- サーバーレスのおさらい(PDF資料)
「なぜサーバーレス?」 それに対する答えとなるビジネス上の意味はいくつかあります。
- 代表的な効果
- 開発生産性
[実例] 33% の生産性向上
- 運用・保守の効率化
[実例] ほぼゼロの運用作業
- アジリティ
[実例] 展開スピード 5 倍向上 - 参考ホワイトペーパー
- 企業エコノミクスの最適化
(技術的な観点から経済的な効果を解説)
次のステップ: 開発環境やフレームワークを整備するとともに、典型的なパターンを認識すれば全体デザインを迅速に進められます。
タブを選択してその情報にアクセスしてください。
-
1. 開発環境・フレームワーク、サービスの理解
- 利用する開発言語を選ぶ : 好みの言語で始められます
- Java、Go、PowerShell、Node.js、C#、Python、Ruby
- [New] .Net5 Container Image
- または、カスタムランタイムで言語を持ち込むこともできます
(C++、Rust、[Update] PHP、Elixir、Erlang、Haskell...)
- [参考: 中級/上級者向け] AWSome Lambda Layers
有志によるライブラリ/カスタムランタイム集 - 開発環境(IDE)を選ぶ
- クラウドで使える開発環境: AWS Cloud9
[Tutorial] Cloud9 を使った構築とローカルデバッグ
- または、使い慣れた開発環境を使う
- Eclipse: ツールキット、ローカルデバッグ
- PyCharm: ツールキット、開発/ローカルデバッグ
- IntelliJ: ツールキット、開発/ローカルデバッグ
- Visual Studio: ツールキット、開発/ローカルデバッグ
- VS Code: ツールキット、開発/ローカルデバッグ
- テンプレートベースのサーバーレス App 作成
- ユースケースを選ぶと、対応した App テンプレートと CI/CD 環境を一気に作成。フレームワークや CI/CD 環境にこだわりがなければ便利! こちらで機能を紹介しています。
フレームワークを選別したい、CI/CD 環境を整備したいなら、「サーバーレスアプリケーション開発環境」で全体感を理解しましょう。実際に利用可能なフレームワークや CI/CD として代表的なものには以下があります。
- フレームワークを選ぶ : 必須ではないですが生産性や保守性でメリットがあります
デプロイ関連
- Severless Application Model(SAM)、Serverless Framework、Terraform...
- SAM を使ったサーバーレス構築ハンズオン
アプリ開発関連
- モバイルフロントエンド: Amplify - [Tutorial] (英語)
- Python向け: Chalice - [Tutorial] (英語)
- Node.js向け: Serverless Express
- Java Spring : Serverless Java Container
[参考] Serverless Express/Java Container 紹介
- Ruby on Rails ライク: Ruby on Jets
- CI/CD 環境(継続的な統合/デプロイ環境)
- AWS CODE シリーズ - [Tutorial] Cloud9 との構築
- モバイル Web アプリなどの個別 Project 向けお手軽版 : Amplify コンソール
- [Tutorial] フロントエンドとともにバックエンドをデプロイ
- GitHub などももちろん利用可能です
サーバーレス学習ガイド
これからの人向けの典型的ステップ本ページ上部でご紹介しているハンズオンのその後で参考にすると良い技術資料や次のステップとなるハンズオンを、おすすめの順番で紹介しています(こちら)。
- [Updated] AWS サービス別資料(BlackBelt)
- Lambda : Part1/2、Part3、Part4
- API Gateway、Step Functions、EventBridge
- SQS、SNS、MQ
- AppSync、Amplify
- Cognito
- その他の資料 - 一般書籍
- Amazon Web Services を使ったサーバーレスアプリケーション開発ガイド
- まだまだあります、関連書籍 ≫ こちら
- 利用する開発言語を選ぶ : 好みの言語で始められます
-
2. ユースケースパターン
動的Webシステム、REST API、ログデータ処理、データの連続加工処理など、
やりたいこと(ユースケース)から典型的なパターンを選択して、その形/アーキテクチャをベースに検討できます。
-
3. データ設計・エラー制御・監視・再利用
- データ設計関連
- サーバーレス + RDS(利用方法 / 技術情報)
- サーバーレスアプリケーション向きの DB 設計(for DynamoDB)
- エラー制御/リトライ
- エラー制御の勘所とモニタリング
- 複数ファンクションをまたがるエラーフロー: [Tutorial] - チューニング/最適化/チェック項目
- チューニング: Compute Optimizer
- [New] 設定チェック: Trusted Advisor
- 設計の考慮点の抜け漏れチェック: Well-Architected
→ PDF で見る / AWS Well-Architected Tool で使う - セキュリティ: アクセス制御、データ保護、インフラ保護
- サーバーレスがやってくれること、開発者が考えるべきことの整理
→ 実践 Serverless セキュリティプラクティス
(関連ホワイトペーパー[中上級者向け]) - 監視/追跡/分析
- 全体観の解説 → Serverless モニタリング
- [New] 関数の監視(Lambda Insights)
- アプリの分散トレース: X-Ray、CloudWatch ServiceLens
- 3rd パーティ監視ツール(Lambda Extensions 対応)
Datadog、New Relic、AppDynamics、Splunk...
- Observability ワークショップ - 成果物の再利用
- CloudFormation として再利用する
- SAM として再利用する
- Serverless Application Repository 経由で再利用する
- 開発関連
- Java で開発するなら AWS SDK for Java v2
v1 よりも起動時間が改善されています(参考)
- 共通利用ライブラリ・ネイティブモジュールの利用
→ Lambda Layers が有用です
例: お客様による Ruby 環境での native extensions 活用
- [New] デプロイサイズが大きくなる(ライブラリが大きい)
→ Lambda Containerイメージを使うと 10G まで対応できます
- [Update] ML モデルを使って推論したい
→ EFS に ML モデルを配置して Lamdba からアクセスできます - ローカル環境での開発・テスト
- [New] Lambda Containerイメージによるローカルテスト
- SAM CLI(SAM Local): Lambda/API Gateway - 関連記事
- Step Functions のローカルテスト
- DynamoDB Local または LocalStack: オープンソースプロジェクト - 本番環境を使ったテスト:
API 公開前にテスト用サーバーからのみアクセスできるようにしたい
→ リソースポリシーで設定できます - バージョン管理・ステージング
- Lambda: バージョニング、エイリアス(ステージ管理)
- API Gateway: ステージ機能
- 異なるバージョンへ徐々にトラフィック移行させたい
- Lambda: エイリアスを利用したトラフィックの移行
- API Gateway: Canary リリース機能の利用
- データ設計関連
-
4. その他の考慮事項
- よくある質問
- Lambda 実行時間: 最大 15分 に処理を区切って設計する。サービス単位のマイクロ化の一つの指針として使うこともできます。
- Lambda 同時実行数: 初期設定はアカウントで 1,000。
上限緩和が可能です。高負荷テストなどは、徐々に負荷を上げながら緩和リクエストしていただくことをオススメします。
関数ごとに同時実行数の上限を設定して処理の優先度を管理することもできます。 - 処理が細分化すると問題が起きたときの識別やエラー制御が難しい: Step Functions を使うのが一案です。一連のフローの可視化やエラー制御として有効です。
- 処理が細分化すると問題分析やパフォーマンス分析が難しい: X-Ray や CloudWatch ServiceLens を使うのが一案です。処理横断型での処理状況の可視化が可能になります。
- その他: こちらも参照ください
- よくある質問
- ファンクション: AWS Lambda | API インタフェース: Amazon API Gateway | モバイル/ GraphQL: AWS AppSync | オーケストレーション/ステート管理: Step Functions | 認証/認可: Amazon Cognito | 開発環境: AWS Cloud9 | メッセージキュー: Amazon SQS | メッセージ通知: Amazon SNS | イベントバス: Amazon EventBridge

関連情報・ご相談
サーバーレスのビジネス価値を数字で理解
≫ 「サーバーレスのビジネス効果とは」
アーキテクト・設計担当にご紹介したい
全体設計の考え方のページ
≫ 「形で考えるサーバーレス設計」
資料請求やユースケース相談がしたい
≫ AWS クラウドの無料相談
技術的なディスカッションがしたい
≫ AWS Loft Tokyo - Ask an Expert
などが利用可能です