ども、@kimihomです。
HerokuやGoogle App Engine, Bluemix などを利用しているPaaSユーザーにとって、インフラ周りはあまり手を出したくない領域だろう。AWSは従来、IaaSとしての役割をになってきたが、最近はどんどんレイヤーの高いサービスが登場してきている。これらを知っていると知らないとで開発効率に大きく影響を与えるものがある。今回はそんなPaaSユーザーのための、AWSサービスを紹介する。
まず個人的に思っていることだが、AWS のサービスは大きく分けて2種類あると考えている。
- AWS をサーバーとして利用する場合のAWSサービス群
- AWS をサービス(アドオン)として利用する場合のAWSサービス群
前者でいう AWS を利用する場合、サーバーをどうするか、デプロイをどうするか、ネットワークをどうするか、データベースをどうするかなどあらゆることを設計する必要がある。サーバーは基本的に常に起動するものであるため、AWS の料金は高額になりがちである。実際のところ、ほとんどのAWSサービスはこの部類に入る。ここはPaaSユーザーである読者の皆様は知る必要のない部分であり、PaaSがやってくれる部分でもある。
反対に後者は必要な時に必要なだけ使う類いのサービスであるため、料金は低価格に抑えられるだけでなく、通常では大変な実装もAPIなどを通じて簡単に呼び出せるようになり、開発コストを大幅に抑えられることが可能だ。そして既存の PaaSサービスを強化してくれるサービスがいくつか存在する。本日はこちらにフォーカスを当てて、サービスを紹介する。
IAM
はじめにちょっとしたユーザーアカウントのお勉強をする必要がある。これの勉強なしでいきなりAWSアカウントを運用すると、そこで使う認証トークンは、ルート権限のように何でもできるトークンをあらゆるソースコードに記述してしまう恐れがある。それを例えばGithubとかに公開で出しちゃったりすると、恐ろしいことになる。
そんなことを防ぐためにも、まずはこのAWSにおけるIAMの概念を学習しよう。
Amazon S3
S3はシンプルなファイルのストレージを提供してくれる。ここに例えば画像を置くだけで、安全で耐久性があり拡張性の高い公開ファイルを実現できる。ここにHTMLを置けば、公開可能なウェブサイトを作ることだって可能だ。もちろん公開したくないファイルも置くことができる。
AWS アカウントを作ってIAMの設定を終えたら、まずはS3を使うことをお勧めする。それほどシンプルで使い易いサービスだ。
Amazon Cognito
Amazon Cognito は、ユーザーアイデンティティおよびデータ同期に関する機能を提供するサービスだ。この特に"ユーザーアイデンティティ"というわかりにくい表現がとても大事な機能で、スマホアプリやJavaScript上で各種AWSサービスを利用する上で必ず設定する必要がある項目となっている。
Amazon Cognito で認証を終えたら、自由に AWS JavaScript SDK をはじめとした SDKを操ることができる。例えばJavaScriptだけでファイルをアップロードしたり、データをAWS上に保存したりすることも容易に行える。そうしたAWSの恩恵を得るのに必要な入り口とも言えるサービスだ。
AWS Lambda
去年登場したばかりのAWSサービスだが、Lambdaはすべてのエンジニアが必須と言っていいほど重要なテクノロジーだ。
AWS Lambdaを使えば、自分が書いたコードを好きなタイミングで実行することができる。それは時にバックグラウンドで動くジョブのような役割も果たせるし、Cronのようなタスクもセットできるし、Webアプリケーションサーバーのコードとしても使える。
従来のEC2などの常時起動型のAWSサービスは、立て続けに料金が増える問題があったが、これは必要な時に必要なだけ起動すればいいだけなので、コストを劇的に抑えることができる。しかもスケールの心配もAWSに任せておける。今後はAWS Lambdaによってあらゆるアプリケーションの開発スタイルが変わっていくものと思われる。
AWS SNS
シンプルなプッシュ通知を送るための基盤だ。これは多くのMBaaS製品に搭載されているものではあるが、特筆すべき点としてはTopicという単位でユーザーを分類し、その一つのTopicに対してメッセージを送るとそれをSubscribeしているユーザーすべての通知を送るといった仕組みが構築できる点にある。
よくある通知サービスだとユーザーをそれぞれ指定して通知、みたいなやり方だと思うが、モバイルサービスを作るならAmazon SNSで作るのがより柔軟性が得られるのではないか、と思う。
終わりに
PaaSを使っているのであれば、知らなければならない AWSサービスは案外少ない。しっかりと見極めて、賢くAWSを使えば、コストを抑えてより強力なアプリケーションを構築することが可能だ。
今までAWSから逃げてきたPaaSエンジニアもぜひこの機会に目を向けていただけたら幸いだ。