2017.02.13 Mon |

サーバー管理から解放される! サーバーレスアーキテクチャ(AWS Lambda)の魅力

コンピュータ

 

サーバーレスアーキテクチャという単語を聞いたことはありますか?

結論から申しますと、サーバーレスと名前に含まれている通り、アプリケーションを起動するサーバーを必要とすることなくアプリケーションを運用することができる仕組みです。(多少意味に幅があるようですが、ここでは次に述べるAWS Lambdaでの意味で使用しています。)

 

私も経験したことがあるのですが、アプリケーションの運用で面倒なのってサーバーを管理することなんです。落ちてしまわないように対策を立てたり、電源を入れっぱなしにしないといけなかったり。。
それが必要なくなるってどういうこと!? と、いうことで最近耳にして気になったので調べつつまとめてみたいと思います。

 

AWS(Amazon Web Service)とは、2006年にAmazonが提供を開始した企業向けのITインフラストラクチャのサービスのことで、現在一般的にはクラウドコンピューティングとして知られています。クラウドコンピューティングは、インターネット経由でITリソースを使用できるためハードウェアの管理に資金や時間を投入する必要がなくなります。

 

その中のサービスであるAWS Lambdaは2014年11月に発表されました。この頃からサーバーレスアーキテクチャという言葉が広まり始めたようです。AWS Lambdaは、イベント発生時にカスタマーのコードを実行しその他バックグラウンドの処理を全部代わりに行う、というサービスです。少しわかりにくいかもしれませんが以降で詳細を述べていきます。

 

先ほどサーバーが必要ないと書きましたが、決してサーバーが存在しないわけではありません。サーバー周りの環境は提供元(AWS Lambdaで言えばAWS)が管理しているということです。

 

従来は何かアプリケーションサービスを提供しようとした時、サーバーを購入するかレンタルしてそこに環境を作ることでようやくプログラムを動かすことができました。さらに、何かサーバーに問題が起きた場合の対応も全て自分でしなければなりませんでした。

 

一方、サーバーレスアーキテクチャ(AWS Lambda)ではサーバーを自分で用意して管理する必要がありません。さらには常駐プロセスを用意する必要もありません。そのような運用や手間は全てAWSが負担してくれるため、ユーザーはイベント(例えばリンクがクリックされるなど)に応じて実行されるプログラムだけを管理すれば良いのです。

 

shutterstock_427473061
さらに料金システムも異なります。一般的なサーバー使用型は、プログラムが動いた回数に関係なくサーバーが起動している時間分課金されます。一方、AWS Lambdaでは、「プログラムの実行時間(100ミリ秒単位)」×「実行回数」で課金されます。

 

例えば、あまり使用頻度の高くないアプリケーションがあったとします。従来のサーバー使用型だとずっとサーバーを起動して待機しておく必要があるので、あまり使用しないにもかかわらず1日分課金されてしまいます。一方AWS Lambdaならその使われた時間と回数のみで課金されるので、コストを抑えることができるというわけです。

 

一見非常に使いやすく便利に思えるAWS Lambdaですが、その一方でいくつか制約もあります

 

まず、一回の処理時間が5分以内に制限されていることです。開発者はこの時間以内に処理が終わるようプログラムを組まなくてはなりません。
さらに、開発言語がpython、javascript(Node.js)、Javaのみに限られていること、同時起動数がアカウントあたり100に限られていること、などが制約となっています。

 

いくつかの制約はあるものの、サーバーを自ら管理せずともアプリケーションを運用できるサーバーレスアーキテクチャは非常に魅力的な選択肢のように思われます。
さらに、リアルタイムのイベント処理が得意なのもサーバーレスアーキテクチャの強みだそうなので、今流行りのIoT(Internet of Things)にも応用が期待されています。

 

以上をまとめるとサーバーレスアーキテクチャ(AWS Lambda)とは、

・実行されるプログラムの管理だけでアプリケーションの運用ができる。
・プログラムが呼ばれたときのみ課金される。
・処理時間、使用言語、同時起動数などに制限がある。

といった特徴をもつサービスだとわかりました。

 

サーバーレスアーキテクチャにはAWS Lambdaの他にもGoogle Cloud Functions(Google)、OpenWhisk(IBM)、Azure Functions(Microsoft)など様々なサービスが存在します。
自分の作りたいアプリケーションに合わせて、サーバー管理型、サーバーレスアーキテクチャを使い分けていけたら良いのかもしれません。

 

shutterstock_208387039

 

【出典】
http://www.sbbit.jp/article/cont1/32603
http://www.publickey1.jp/blog/16/qcon_tokyo_2016.html
http://qiita.com/zerobase/items/3bc0d15980b472af841d
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html

 

K.M
東京大学
工学部航空宇宙工学科 4年

2024.1  
給料も教育もガッツリと!メンター制度開始します  詳しく