サーバーレスアーキテクチャ(AWS Lambda / Amazon DynamoDB)

サーバレスとは?

use_case_img

サーバー管理不要

セキュリティパッチや各種アップデートなどの日々のサーバ保守・管理を行う必要はありません。ユーザはランタイム上で稼働するコードのみ用意して管理するだけでOK

use_case_img

柔軟なスケーリング

アクセス数が増えてきた際のスケーリングや、ストレージ容量の自動的な増量など、柔軟なスケーリング処理が自動的に行われます。

use_case_img

高可用性の自動化

利用するサービスの裏では、常に高可用性が保たれた構造が提供されており、実際に稼働しているホストがダウンした場合なども自動的な復旧処理が行われます。

use_case_img

価値に対する支払い

リクエストが行われた際に処理に使用したリソースや、ユーザの専用リ ソースとして確保した 分の時間など、価値に対して支払いを行うだけ

煩雑な管理・保守はAWSに任せ、これらが自動化されたマネージドサービスを組み合わせて設計

AWS Lambda パートナー

クラウドパートナーは、AWSサービスデリバリープログラムのAWS Lambdaパートナーとして認定されています。

AWSサービスデリバリープログラムは、AWSの個別サービスにおいて、 専門知識と経験を持つパートナーを認定する制度です。これらの認定を受けたパートナーには、 対象となるサービスをベストプラクティスに則った形でお客様に提供した実績があることが証明されます。

クラウドパートナーは、サーバーレスコンピューティングを活用する上で重要なサービスとなる AWS Lambdaについて、深い専門知識と経験を有していることが、 AWSによる厳格な技術審査を通じて確認されています。

クラウドパートナーは、サーバーレスアーキテクチャで構成されたアプリケーションについて、 様々なノウハウを活かしてお客様のビジネスを支援していくことが可能です。

運用方法ごとの責任範囲と運用

AWS LambdaをはじめとするAWSのマネージドサービスを組み合わせて構築したサーバーレスアプリケーションの場合、 従来のサーバー管理を自社で全て行っていたオンプレミス環境や、AWSの仮想サーバーサービスであるEC2などのIaaSを 使用する場合と比較した場合、下記のように責任範囲や運用を行わなければならない範囲が異なります。

AWS Lambdaの特徴

AWS Lambdaはフルマネージドサービスとして提供されています。そのため、 OSやミドルウェアのインストールやパッチ管理は不要で、リクエストが増えた際のスケーリングや、 ホストサーバーの障害復旧等も全て自動で行われます。 ユーザーは自らが実行したいアプリケーションコードを準備するだけで、コードを実行することが可能です。

AWS LambdaはネイティブでJava、Go、PowerShell、Node.js、C#、Python、Rubyをサポートしています。 これらのネイティブでサポートされた言語で書かれたコードは、サーバー設定やランタイムのインストール等を行うことなく、すぐに実行が可能です。

また、その他の言語で実行をしたい場合も、Runtime APIによりC++、Rust、PHP、COBOLなど様々な言語を実行することが可能です。

AWS Lambdaは他の多くのAWSサービス連携しイベントを処理することが可能です。 例えばAmazon API Gatewayで受け付けたAPIリクエストを、AWS Lambdaで処理を行い、 結果をAmazon API Gatewayに返却することで、サーバーレスなREST APIの構築が実現します。

その他SNS、SQS、S3、DynamoDB、AppSync、Kinesis、Cognito、IoT、EventBridge、Configなど 様々なサービスのイベントを受け付けることが可能です。

AWS Lambdaは、コードを実際に実行した時間についてミリ秒単位で課金が行われます。

仮に1つの処理プログラムを実行するために掛かった時間が50ミリ秒の場合、 50ミリ秒分の課金のみ行われます。例えばWebサイトを運営するためのAPIを実行するプログラムを動かす場合、 EC2で実現しようとした場合は、常時リクエストを待ち受ける必要があるため、365日24時間分の課金が発生します。

Amazon API GatewayとAWS Lambdaを使用して同様のAPIを提供する場合は、 リクエストが実行された時間分の課金のみ行われるため、コストを最適化出来ます。

Amazon DynamoDBの特徴
低レイテンシー 一貫したパフォーマンス

1桁ミリ秒単位の安定したパフォーマンス、 ほぼ無制限のスループットとストレージ、 自動マルチリージョンレプリケーションを備えたアプリケーションを提供します。

リレーショナルデータベースではデータ量が増えてくると性能劣化が起きますが、 DynamoDBではデータ量が増えても性能劣化が起きにくく、分散型データベースのため、 トラフィックの予測しにくいワークロードにも柔軟に活用できます。

データが複数のAZ(Availability Zone)に保存される仕組みになっています。

そのため、AZのどれかに障害が発生しても他のAZが機能し、システムを継続稼働することができます。

また、ポイントインタイムリカバリ、オンデマンドバックアップおよび復元を設定することで、 DynamoDBテーブルのデータの完全なバックアップを作成してアーカイブできます。

DynamoDBには、プロビジョニングやパッチ、管理用のサーバーだけでなく、 インストール、メンテナンス、または運用するソフトウェアもありません。

DynamoDBではテーブルを自動的にスケーリングして容量を調整し、 パフォーマンスを維持します。管理は必要ありません。

DynamoDBは、トランザクション向けにサーバー側のネイティブサポートを提供しているため、 テーブル内およびテーブル間の複数の項目を調整したり、 変更しないといった、開発者のエクスペリエンスを簡素化します。

トランザクションのサポートにより、開発者は、DynamoDBのスケール、 パフォーマンス、およびエンタープライズの利点を、 より広範なミッションクリティカルなワークロードに拡張することができます。

AWS Lambda / Amazon DynamoDBを使用したユースケース
use_case_img

ウェブ/モバイルバックエンド

ウェブサービスや社内向けウェブツール、モバイルアプリケーションのバックエンドをサーバーレスで構築する

use_case_img

動画配信

ユーザーからアップロードされたMPEG4形式の動画をHLS形式へ自動変換を行い、CDNを使用してストリーミング配信する

use_case_img

データ加工/処理

様々なデータの収集や画像データの加工、PDFデータの生成、データ解析のためのETL処理などをサーバーレスで構築する

サーバーレスアーキテクチャ導入支援の流れ

1 ヒヤリング

現在のお客様が抱える課題や、目指すべきゴールについて、サーバーレスアーキテクチャに精通したシニアソリューションアーキテクトが、ヒヤリングを実施いたします。

このヒヤリングの場で、目指すべきゴールの確認をさせていただくことや、どのような形で解決を図れるかなどをお伝えさせていただきます。

2 ご提案

ヒヤリングをさせていただいた内容を基に、弊社がご提供させていただく内容や、 サーバーレスアーキテクチャ導入におけるメリット、導入におけるコスト等の詳細をまとめご提案させていただきます。

3 PoC(概念実証) ご希望のお客様

お客様のプロジェクトにおいて、実現性が不透明な部分の検証や、 費用対効果やパフォーマンスの検証などをプロトタイプを作成し検証します。

4 設計・構築・内製化支援

具体的な構築フェーズについて、お客様と共にアジャイルチームを形成し (お客様側にエンジニアが不在の場合などは、弊社エンジニアのみで進めることも可能です)、設計・構築について進めます。

その際、設計内容についての考え方などをお客様側エンジニアに共有しながら進めるため、 サーバーレス開発についての具体的な考え方を身に着けていただくことが可能です。

また、開発においては原則としてテスト駆動型開発(TDD)にて進めていくため、 常に質の高いアプリケーションに仕上がります。

5 運用

サーバーレスアーキテクチャにおけるモニタリング項目を必要に応じてアラーム等の設定を行い、 日々の動きをモニタリングいたします。

また、AWSアカウントはCloud Partner Billingによりご提供させていただくことにより、 原則として3%割引にて各種AWSサービスをご利用いただけます。

6 フィードバックの収集・改善

運用における様々なフィードバックを収集を行い、アプリケーションの改善や新機能の追加、 新サービスの立ち上げについて、継続して支援いたします。