AWS公式で「形で始めるサーバーレス設計」が紹介されています!
はじめに
サーバーレス開発部の藤井元貴です。
サーバーレスな設計や開発は意外と難しいものです。特に「やりたいこと」が「サーバーレス」で実現できるのか? を常に意識し続け、トライ・アンド・エラーを繰り返すことが重要です。
そこで、先日みつけた形で始めるサーバーレス設計をご紹介します。簡単ですが、ひとことコメントもあります。
上記の内容を知らなくとも、結果的に「あ、同じ構成(考え方)だ!」となる場合が多いです。 そのため、事前に知っておくことで手札を増やすことができ、より効率よくサーバーレスな設計を実現できると思います。
おすすめの方
- サーバーレスに興味がある
- サーバーレスな設計を知りたい
形で始めるサーバーレス設計
下記となります!
動的 Web / モバイルバックエンド
API Gateway
を用いる王道パターンです。業務でもプライベートでも、よく使う構成ではないでしょうか。
インタラクティブモバイル
モバイルアプリなどのバックエンドにGraphQL
を用いたリアルタイムデータ同期サービスです。
業務 API / グループ企業間 API
VPCを用いて、プライベートな空間に構築しています。Lambdaの特性(VPCだと起動が遅い)などに注意です。
配信系・インタラクティブ API
配信系はさっぱりです……。API GatewayがWebSocketをサポートしたので、チャットアプリとかは作りやすくなりましたね!
画像処理 / シンプルなデータ加工
S3バケットに何らかのファイルをアップロードし、それを検知してLambdaが起動して処理する構成ですね。まさにイベントドリブン!
分散並列処理
大量データをLambdaで処理するときに、効率よく処理するための分散処理ですね。1つのLambdaで数時間かかる処理でも、分散並列に処理することで数分になったりします!
イベント駆動の業務処理連携
SNSやSQSを使うことで、何らかのポーリング処理が不要になります。これもイベントドリブンですね!
アプリフロー処理 / ワークフロー
Step Functionを使ってイイカンジにできます。コレ使えるとかなり便利みたいです。(勉強せねば)
ストリーミング処理
たくさんのデータをKinesis DataStreamで扱って、順番に処理するのも王道パターンです。お世話になってます。
IoT バックエンド
IoTに特化したサービスですね。自宅でIoT CoreとRaspberry Piを使って遊んでます。証明証などセキュリティも考慮されており安心です。
チャットボット / Alexa スキル
これは未知の領域です……(個人的に)。
データ変更トリガー処理
DynamoDB Streamを用いる構成ですね。DynamoDBのデータが更新されたらLambdaを起動して、、、といった形です。
ログデータ収集処理
Kinesisシリーズのひとつ、Firehoseを用いる構成です。ログをイイカンジにS3バケットに保存するときなどに役立ちます。
データレイクからのデータ加工
大量データをGlueで処理し、データレイクに入れる構成ですね。例えば、毎日S3バケットに格納されるログを整理・整形し、データレイクに格納する処理をサーバーレスで実現できます。
機械学習パイプライン
これも未知の領域です……(個人的に)。(大量データによる機械学習を効率よく行う仕組み?)
スケジュール・ジョブ/CRON
「毎日朝8時に実行」などの事がお手軽にできます。
パターンの組み合わせ
上記のパターンが単体で完結することは少ないです。
実際にサーバーレスな設計を実現する場合は、下記のように、組み合わせることが多くなります。
これらの組み合わせを考えるのも、サーバーレス設計の面白いところです!
さいごに
今回ご紹介したサイトに
開発担当・エンジニアの方に ≫ 実例の話を聞きたい方へ 「Serverless Tech/事例セミナー(3/27)」
とあります。
「AWS Serverless Tech/事例セミナー - サーバーレスで Ruby 他、いろんな言語が使えるよ」にクラスメソッドの和田(サーバーレス開発部!!)も登壇します。
16:00-16:40 Webアプリエンジニアに贈る アプリケーション開発におけるサーバーレス流の考え方 昨今、アプリケーションをつくるのに、様々な手段があります。「フルサーバーレス」はその一つで、マネージドサービスを駆使し効率的にアプリケーション開発を行うことができます。とはいえ、「アプリ開発」とひとことでいっても、必要な作業は多岐に渡ります。本セッションでは、Amazon EC2 に Play Framework + Scala で Webアプリ を構築する流れを比較対象の例にとり、サーバーレスで開発する場合の「考え方」を話します。言語や実装パターンの話よりも、典型的なWebアプリの開発手法がサーバーレスにおいても適用できるのか、またはまったく考え方を変えなければいけないのか、という議論が焦点です。以下のトピックに言及します: ・Webアプリ開発(API・UI)、IDE、構成管理・ビルド・デプロイ、テスト、ロギング、プロジェクトの進め方とアプリケーション設計 クラスメソッド株式会社 和田祐介氏
ほかにも魅力的な内容がありますので、興味がある方はぜひご参加ください!
クラスメソッドのサーバーレス開発部に興味がある方は、こちらなどいかがでしょうか!