イラストで理解するサーバレス
はじめに
概要
最近、勉強会をしていた際に「サーバレスは何を持ってサーバレスなんですか?なにがいいんですか?」という質問を受けました。
自分の頭では理解できているつもりでも言葉に詰まってしまったので、今回あらためて整理してみたいと思います。
私はAWSを使用することが多いので、今回はAWSを基準に考えていきます。
サーバレスって?
では結論から、サーバレスは私たちユーザーがサーバーの管理をしなくていいという状態です。
記事を書いてて思いましたが、クラウド=サーバレスではありません。
まずは言葉を分解していきましょう。
サーバー
サーバーはよくサービスを提供するものと説明されます。
皆さんがネットサーフィンをするのにwebページのURLをクリックしますね?
そのwebページはどこから送られてくるのでしょうか?
その正体がサーバーです
サーバーにはいろんな種類が存在します。
- webサーバー
- アプリケーションサーバー
- データベースサーバー
- DNSサーバー
他にもたくさんあります。
それぞれ提供しているものが違います。
先ほどの例では、webサーバーはwebページを提供してくれるサーバーでした。
レス
レスは「キャッシュレス」とか「ペーパーレス」の「レス」です。
レスは「無い」や「持たない」という意味として使われます。
現代社会はどんどんレス化が進んでいますね。
サーバレスもサーバーを「持たない」という意味になります。
では逆にサーバーを「持つ(管理する)」のは何が大変なのでしょうか。
物理サーバーと比較してみよう
リソース
アプリケーションを動かすにはどのようなリソースが必要でしょうか?
- アプリケーションを動かすサーバー
- プログラミング言語の実行環境
- ソースコードを置くストレージ
他にも色々
管理が大変ですね。
しかし、サーバレスではこの面倒な管理をAWSが管理してくれます。
私たちはその上で動くものだけを気にすればいいのです。
コスト
サーバレスのコストは使った分だけ!です。
従量課金については、
EC2のようなクラウドサービスでは使用している間ずっと課金されました。
Lambdaのようなサーバレスでは関数などのサービスが動いている時間だけ課金されます。
ちょっと分かりにくいので、手洗いの水で考えてみましょう。
オンプレミス→川を引く
EC2→蛇口開けっぱなし
Lambda→センサーに手をかざした時だけ
川から水を引くのは大変ですよね。
そして蛇口を開けっぱなしにすればいつでも手は洗えますが、洗ってる間は勿体無いですよね。
そこで、センサー式の使いたい時にだけ使える水道は大変便利。という訳です。
スケーリング
物理サーバーの難点は、最初に予測して設計をする必要があるという点です。
サーバーを準備する時は、余裕を見たスペックのものを用意することが多いと思います。
また、急なトラフィック増加によりサーバーの増築も考えられます。
たまに旅行会社が大きなセールをするとサーバーがダウンしたというようなニュースを見ますよね。
サーバレスではそういった事前の準備やトラフィック増加によるスケーリングに悩まされることがありません。
それは、サーバーを追加したりパワーアップさせるという面倒な手間をAWSがやってくれるからです。
まとめ
最初にも書きましたが、クラウドサービス=サーバレスではありません。
サーバレスはあくまでもAWSが管理するクラウド上で成り立つ機能です。
これは、よくFaaSやSaaSという言葉で表されます。
Lambda関数(Function)やS3(Service)はAWSが保有するサーバーの上で成り立っています。
私たちが操作するのは、FunctionやServiceといった「機能」の部分だけですね。
これは言い換えると
「Functionをサービスとして使用する」→「Fanction as a Service」→「FaaS」
となります。
所感
形のないものを理解するのは難しいですよね。
個人的な感想としては実際に触ってみるのが一番理解がしやすいと思います。
サーバレスのサービスを使うことで私たちは余計な事を考えず開発に集中できるようになりました。
私はこういった「楽」をできるシステムは大好きなのでばりばり使っていきたいと思います。
Discussion