サーバーレスアーキテクチャの概要
こんにちは。
初めて投稿します。りんだです。
現在プログラミングを勉強している非エンジニアです。
このブログでは、自分がプログラミングを学んでいく中で、分かったことや分からなかったことを少しずつ整理していきたいと思っています。
同じくプログラミング初学者の方や、現役エンジニアの方から記事の内容にコメントいただけたりするとありがたいです。よろしくお願いします。
ということで、初めての今日はサーバーレスに関する基本的な情報をまとめていきたいと思います。
従来のサーバーまわりの構成もいまいち分かっておらず、もちろん業務で触ったこともない自分が本来手を出していい領域ではないかもなのですが、、
今週から知り合いのエンジニアの方にこの領域について学ばせていただけることになったので、教わる前に何かしておこうということで基本の情報を整理してく次第です。
まずサーバーとは
サーバーとは、ネットワークを介して他のコンピューターに情報を提供するコンピューターのことです。
一方で情報をもらう側のコンピュータのことをクライアントと言い、これらが相互に通信し合う仕組みをクライアントサーバモデルと言います。
クライアントの役割は「情報を要求する」「ユーザに情報を提示する」に限られるのに対し、サーバーの役割は多様です。
そのためネットワーク上には、Webページを表示するための情報(HTML, CSSなど)をクライアントに提供するWebサーバー、クライアントから送信されたドメインを受け取ってそれに紐づいたIPアドレスを教えてくれるDNSサーバーなど、様々なサーバーが存在します。
で、サーバーレスとは
言葉だけ見るとサーバーが存在しない構成なのかなと思えますが・・・
そうではなく、サーバーの存在を意識しないでいい構成のことをこう呼ぶようです。
ではサーバーの存在を意識しないでいいとはどういうことなのでしょう。
通常、何かWebサービスを運営していく際には、サーバーに関する以下の作業を行う必要があります。
- サーバーの立ち上げ
- サーバーの運用
- サーバーの保守
立ち上げとは、オンプレミスかクラウドによるサーバーの用意をしたのち、サーバーにミドルウェアのインストールなどをする作業のこと。
運用とは、システムが停止しないようにする作業のこと。
保守とは、システムの改修や修理のことを指しています。
これまでエンジニアはこれらの作業をすることに時間を取られていました。
しかしサーバーレスな構成を採用すると、これらの作業をクラウドの提供会社に任せることができるため、サーバーの存在を意識することなく、本来最も優先度の高い作業であるサービスの開発に専念することができるのだそうです。
サーバーレスは他にどんなメリットがあるのか?
イベントドリブン
従来のサーバーは基本的に常時稼働していましたが、サーバーレスアーキテクチャでは何らかのイベントが発生したときにだけサーバーが稼働します。
イベントとは、例えば、Webぺージやアプリでボタンが押される、ファイルがアップロードされる、データベースにデータが追加される、といった事例です。
イベントが発生していないときは機能は実行されず、サーバーがリクエストを待ちながらずっと稼働するようなこともありません。利用者が行うことは機能の開発と、それを駆動させるトリガーを設定することだけで、あとは全てクラウドの提供会社に任せることができます。
サーバーレスのデメリット
遅延
ネットワークを介して処理が実行されるため、遅延が生じることがあります。
ベンダーロックイン
AWSやMicrosoft、Googleなどがサーバーレスのサービスを提供していますが、それぞれかなり独自の技術・仕様となっています。
そのため、一度開発したものを他社のクラウドに移行することが難しかったり、新たな仕様を理解するための学習コストがかかったりします。
参考
なぜ今はサーバレスの時代か?ーーそのメリットと従来型の開発と比較 | Fixel株式会社
サーバーレスの理解とメリット・デメリット(2020年版) - Qiita
ゼロから学ぶサーバーレスアーキテクチャ(FaaS)入門 | サーバーレスのメリットやAWS事例
https://pages.awscloud.com/rs/112-TZM-766/images/20200827_serverless_essential.pdf