作業ログ7/20〜7/21

しばらくシステム開発から離れていたので、最近は新しいトレンドを探っています。

Dockerについて

ちょうど一年前にDockerとElastic Beanstalkを使ってWebアプリを作ったのですが、
GoogleやAWSがコンテナサービスを始めていたりDocker関連のサービスが増えているようでした。興味はあるのですが、今は次の内容に取り組んでいます。

サーバーを使わないウェブシステム構築について

AWSのサービス一覧を見ていて、Lambdaというのが気になりました。
Lambdaはイベントをトリガーにして、プログラムコードを実行できるサービスです。最初はS3への記事のアップロードをイベントソースにして何かをやろうかと思いましたが、サンプルをいじっているうちに、サーバーを使わないシステム構成の可能性に気が付きました。AWSで言えばEC2を使わないということですが、Lambdaをアプリケーションサーバーと捉えて、S3上のJSからKinesisなどを経由すればアプリが作れるのではないかと考えました。
EC2を使わないメリットは、まずはLinux管理者としての能力が不要になることだと思います。EC2を使う時点でOSの管理がつきまといます。
あとはコスト的なメリットで、時間単位の課金から解放されます。規模の小さいサービスであれば、時間単位で課金されるよりは実行回数単位で課金のほうが安くすむのではないでしょうか。
それで、今日はhello worldを作ろうかと思っていたのですが、AWSのサービス一覧を見ていて、また気になるサービスがありました。
API Gatewayというサービスなのですが、これはまさにやってみたかったことに適しているサービスでした。例えば、RESTでLambda関数を呼び出してレスポンスを取得することができます。
それで今、VPS上で動いているWebアプリを次の構成に移行しようとしています。あえてWebサーバー、アプリサーバー、DBサーバーという言葉を使うとすると、次のような対応になります。

  • Webサーバー:Amazon S3
  • アプリサーバー:Amazon API Gateway(Lambda関数実行)
  • DBサーバー:Amazon DynamoDB

そしてEC2は使いません。
これができればかなり楽な気がしますが、まずはやってみようと思います。