DynamoDBでのAWSシステム構成図を書いてみた
前置き
DynamoDBで開発する機会があり、システム構成を考える機会があったので
実際にシステム構成図の書き方を整理してみたいと思います。
まずは今回利用するAWSの主要なサービスの概要を説明します。
AWS Lambda
サーバレスを実現するためのサービス。従来であればプログラムを実行するのに必要なWebアプリケーションサーバー、Webサーバー、サーバーOS環境を用意することなくプログラムを実行することができる。
メリット:サーバーの運用管理コストがかからずに実際に実行された時間のみに課金されるためコストダウンができる。
AWS EC2
仮想サーバー構築サービス。インスタンスという単位でサーバーの構築ができる。
複数のインスタンスを作成して実行することもできる。
メリット:システム構築にかかる時間を短縮できる。冗長化を簡単にできる。
スペックの変更を柔軟に対応できる。
EC2に関わるサービスとしてイメージ、EBS、ロードバランシングなどがある。
AWS S3
データを格納・管理できるオブジェクトストレージサービス。
アプリケーションのバックアップやファイル、画像、動画などを格納することができる。
メリット:ストレージリソースを柔軟にスケールアップ・ダウンすることができる。
障害やエラー、脅威などに対する高いデータ耐久性がある。
容量制限が無く、容量を気にすることなくアップロードすることができる。
AWS CouldFront
静的および動的なウェブコンテンツの配信速度を高速化することができるサービス。
"エッジロケーション"と呼ばれる世界中のネットワークを軽有して、ウェブコンテンツを配信できる。
CloudFrontキャッシュを使用して、ユーザーから近いエッジロケーションからオブジェクトを提供することで負荷が軽減し、レイテンシーが減少する。
メリット:高速配信により海外へのコンテンツビジネスを手軽に展開することができる。
ネットワークレベルとアプリケーションレベルの両方で保護されており、高いセキュリティも特徴。
システム構成図の作成
図のような構成でシステム構成図を作成しました。
ユーザー側のブラウザからリクエストをして、CloudFrontを経由して、LambdaからDynamoDBへと接続します。
API GatewayはLambdaへブラウザからのイベントを受け取りLambdaへ渡します。
LambdaからDynamoDBへのCRUD処理はAWSから様々な言語で処理を行えるようにSDKが提供されており、GoやJava,Node.js,PHP,Python,Rubyなどほぼ網羅的にあらゆる言語を用いて利用することができます。
まとめ
AWSは様々なサービスが提供されており、その一つ一つは理解することは難しいですが、
ポピュラーに使われているサービスをシステム構成図から役割を整理することによってかなり理解を深めることができました。
各々のサービスの役割を理解して、今後はスムーズにより良いシステム構成図を作成できるようになれればと思います。
Discussion