サーバーレスとは?弊社事例をもとにサーバーレス構築をご紹介!:入門編
こんにちは、ネッコスの井口です!
最近たまに話題に上がるサーバーレス、皆さんも聞いたことありませんか?
LINEアプリ開発でも利用したことのあるサーバーレスについて、簡単ながら入門編ってことで今回はまとめていきたいと思います!
今後さらに活用されていく可能性が高いのでぜひ皆様に共有させていただけたらと思います!
ハウツーサーバーレス①『そもそもサーバーレスってなんぞ?』
さて、サーバーレスについて語るにはまずサーバーレスが何なのかをちょっとばかり解説させていただきたいと思います。
聞いたことがあるけど実際どういうことなのか知りたい、というケースの方向けなので、もしもうご存じでしたらこの項目は読み飛ばしてもらっちゃって問題ないです!
早速ですがサーバーレスっていうと言葉の通りサーバーを利用しない、サーバーが無い状態って意味合いに感じられると思います。
実際普段私たちが利用しているアプリケーションはどんなものでも、どこかにサーバーがあってそこに置かれているものと通信をして、動かしている状態です。
ウェブサイトでもウェブアプリでもメールでもスマホのアプリでも…つまりそういったサービスはサーバーが動いていないと利用することができなくて
サーバーは24時間365日常にそれを受け入れられるように稼働をしているのが普通です。
つい先日もAmazonのAWSで障害が起こってウェブアプリやページだけではなく様々なサービスが停止していたのが記憶に新しいんじゃないかと思います。
本来はこのようにサーバーがあって動いていることで利用できるアプリケーションなのにサーバーレスになっちゃったらどうなるの?と思ってしまいますよね。
実はサーバーレスとはサーバーレスと言いながらもサーバーは利用しているものなんです。
え?じゃあサーバーレスって何なの?
こう思われた方もいるんじゃないかって思いますが、要はアプリケーションにしろなんにしろサーバーがあって実際に動かしに来るタイミングというのはほぼ決まっていません。
ですが常に利用者に対応するために24時間365日上記の通り動かしておかないといけません、そしてその性能というのは常に最大数の処理をさばけるようにしておかないといけません。
そしてそのサーバーを動かすためにアプリを動かす環境などの構築も全部用意して、対応をしないといけないというのがいろいろと
構築・保守・運用といった形で工数や費用的にのしかかってきてしまいます
それを解決するのがサーバーレスというものです!
サーバーレスというのはつまり運用方法になります。
自分たちでサーバー環境を用意して色々するのではなく、サーバーの提供会社がそういう環境を用意して運用、保守を行ってくれるのがサーバーレスになります。
またそのサーバーについても必要なリソースは必要になった時だけスケーリングしてくれてアプリを動かしたいときに、必要なリソースで動かさせてくれる、そしてかかる費用は利用した時間とスケーリングで決まるという形なのでコスト面でも優れているといえます。
必要な環境を構築してくれて、必要な時だけ動かして確認をしたりスケーリングして負荷に耐えたりとこちら側でサーバーを持たないからサーバーレスになるんですね。
ハウツーサーバーレス②長所は…『早い!安い!うまい!』あーんど…?
さて、簡単にサーバーレスのことについて語ってきましたがじゃあ実際サーバーレスにする利点は何?という事で
説明の際に軽く触れていますがそれ以外にもいろいろありますので説明していきたいなって思います。
サーバーレスの『早い!』
サーバーレスの早い部分とは一度しっかり準備をしてしまえば、好きな時に利用できるところです!
こちら側でサーバーの構築を行わなくていい「マネージドサービス」を利用することでまずは開発環境づくりのスピードを上げることができます、つまりここの設定と知識をしっかりしておけば今後も必要になったときにすぐに開発環境を構築することができます。
これが早い!という部分になります。
スタートがすぐ動けるっていうのはストレスフリーでいいですよね、サービス側が必要な部分を受け持ってくれるので♪
サーバーレスの『安い!』
サーバーレスの安いの部分は説明でも書いていた通りの構築、運用費用がまず挙げられます!
常に開発環境を持っておくケースで維持のためにつき1万円かけていたとしたら、常に利用するわけではないそのサーバーを必要な時だけ動かせるその費用を数分の1に圧縮することができたりと従量課金で利用できるシステムのために安価で必要なものを今まで通りそろえて置ける効率的な運用が可能になります!
出来るだけスモールスタートで開発を開始したい場合、ランニングコストを抑えたい場合、今後の開発規模の拡大を見据えている場合などやはりコストは押さえたいですよね!
そして環境構築もその環境の運用・保守の人件費や工数も抑えることができるのでサーバーレスは安いのです!
サーバーレスの『うまい!』
サーバーレスのうまい!に当たる部分はやはり対応スタッフにとってありがたい、おいしい部分になりますよね…それは何かといえば…?
「マネージドサービス」を利用することで保守の費用や工数がかからない=トラブルで呼び出されたり、無茶を言われる機会が減るという事です!顧客はどうしてもサービスがきちんと動いていないとそこに対して苦情・クレームが来ます。頼んでいるものが履行されていないんだから当然です。そうなるとエンジニアにしろ営業にしろすぐさま対応をしなければいけなくなり、24時間365日の対応になることもあるでしょう。
対応しないといけないとはいえ、これではストレスも多くなってしまいます。
サーバーレスで保守運用を対応せずにいられるのであれば、実際に夜中に必死に復旧作業を行ったりという不意のストレスを受けることもなくなり対応スタッフにとって美味しい形で運用ができるのがサーバーレスの利点です!
サーバーレスのメリット、いい部分は簡単に言うとこう言った所になります!
まさに3拍子揃っていますよね!
さらにサーバーレスにはこんなメリットもあります!
サーバーレスのあーんどメリットはセキュリティ!
サーバーレスのメリットとなるもう一つの部分、それは
セキュリティ面でも強い!
というサーバーレスならではのメリットがあります!
どうしてサーバーレスを利用するとセキュリティ面で強くなれちゃうのか!?についても教えちゃいます♪
・OSの脆弱性に強い!
よくあるセキュリティ面のデメリットはOSの脆弱性などが問題でもし脆弱性が見つかった場合には最新バージョンへのアップデートなどの対応を行わないといけません、そういった内部で管理しないといけないセキュリティ面の保守をサービス側が対応してくれるので常に確認する必要がある、もしくは漏れて脆弱性のあるままのバージョンで利用を続けてしまうことなんかが無くなります!
・稼働が短時間なので侵入されづらい!
サーバーレスは必要な時だけ動かして、そのリソースを利用する形のため常に接続できて24時間守らなきゃいけない今までのサーバーとは違い動いてる時を狙わないといけないという点で自然と侵入される機会が減ります。
たまに通る現金輸送車をそのタイミングで襲わないといけない感じですね!(例えが悪い)
あくまでサーバーレスの考え方における副産物的な気もしますが、不要な時に閉じれたり、リセットをかけて別のサーバーで動かせたりというサーバーレスの構造を利用したアプリケーションからの侵入を考えた時に物理的にそのものが動いていなかったり変わってたりする事が高いセキュリティを生み出してしまうわけです!
・スケーリングでアタックに強い!
サーバーの必要を必要に応じて自動でアップさせてくれる、そしてその上限がほぼ無いマネージドサービスを利用しているおかげで、いわゆるF5アタックのような負荷をかけてくるタイプの攻撃に対しても強くなっています!
とはいえスケーリングは使用した時間とスペックでお金がかかるので負担はこちらに来てしまいますから抜本的な対策は必要になります…
とはいえ不用意な攻撃、悪意にさらされたり(バズるなどの)ポジティブな理由でもサービスダウンを防げるというのはいいことですよね!
ただもちろんおいしい話ばかりではないっていうのも世の常…
セキュリティについても破りづらいものほど頑張ろうとする人も多くなるのでいつまでもこの状況が続くわけではないであろうことは注意が必要ですね…
また、当然ながらサーバーレスを利用する場合のデメリットもあります。
ハウツーサーバーレス③短所は…『コントロールが難しい!』
サーバーレスでの開発・運用をする場合の大きなデメリットとなるのがまずコントロールが難しいという事。
どういうことかといえば基本「マネージドサービス」管理側に依存せざるを得ないっていう事ですね。もちろん最大手のGoogleやAmazonのAWSなどでもトラブルが起きてしまうことは0じゃありません、これはこの間のAWSの障害からもはっきりと見えてきますね…
自分たちで運用しない=自分たちではどうにもできない
という事になってしまいます。
出来る事がないというのは気楽な感じもしますが、やはりなにも対応できないトラブルのインパクトというのは強いものなのでショックが大きいというか、ついつい焦ってしまいますよね…
また、環境が違ったりサーバーレスならではの必要な運用方法があるために既存のコードをそのまま動かせないようなケースもあります。
もちろん言語面では対応を可能にできるのですがコードについては見直し書き直しが発生するためどうしても手を入れないといけないケースもあって工数が発生したりしますね。
ここはもともとの開発環境から変化が起こりうる仕方のない部分になります。スムーズに過去のプロダクトを利用できるかどうか、というのもコントロールできない部分なので気をつけておかないといけませんね。
新しい環境で開発するための学習コストなどがどうしても高くなってしまうこと、提案された環境内での開発になるのでできない事も出てくると考えられること、そして大元が倒れてしまったらどうしようもないことがデメリットのまとめになります。
ハウツーサーバーレス④サーバーレスアーキテクチャ
さて、サーバーレスの概要やメリットデメリットについて前項までで出してみましたがサーバーレスを実際に構成、構築していくときはどんな感じになるのか?というのも軽く説明していけたらと思います。
サーバーレスの考えについては前項で説明してきましたがここで説明するサーバーレスアーキテクチャについてどういうものかというと
【サーバーレスの構築でさらに出来るだけサーバーを稼働させないで動かす】
という感じでしょうか…サーバーレスをより突き詰めた開発、運用手法になります。
一番の大手はAmazonAWSでLambdaになりますがシステムの実行などリクエストを受け取った時だけサーバーのプログラムを走らせて必要なアクションを起こし(設定されたfunctionの実行)、その結果を返して終わるという形で費用についても単純にその実行回数と時間によって左右されるのでサーバーの稼働費用などが非常に低コストで行えます。
もちろんその動きを担保してくれるのはサーバーの管理者の方なのでこちらではサーバーに対して何かをする必要がありません、そして1日に数回から1秒間に数万回までのリクエストを処理してくれるので必要なだけ利用して費用を払う、という形になります。
こういった形のため設計の基本からサーバーレスアーキテクチャでは常時サーバー稼働型の設計とは違ったものが求められます。
ハウツーサーバーレス⑤サーバーレスの実例
では、過去にネッコスで使用したサーバーレス×LINEアプリの実例をご紹介したいと思います。
以前利用したサーバーレスの仕組みは、特定のワードを公式アカウントに伝えるとそこからBOTへのリクエストを行いデータベース内の氷魚付けされた情報を自動で返して、会員登録を促すアプリでした。
簡単に図にするとこんな形です
こういった形で基本AWS上ですべてを賄い、サーバーレスでのアプリの開発、実装、運用も行っております。
あらかじめサーバーレスでの実装を希望されるケースでも対応できるように、実際の運用まで一貫サポートを行えるのが手前味噌になりますがネッコスの強みですね。
ただ、前項のように途中からサーバーレスにしたい、となると対応できないケースもありますのでこの辺りを考慮して、開発をしたい場合には要件定義の時点で希望を伝えておいた方がいいかもしれません。
ハウツーサーバーレス⑥サーバーレスのまとめ
さて、今回はサーバーレスについていろいろと自社内での対応などをもとにまとめてみました!
開発や運用のために自社で構築しないといけないサーバー部分をアウトソーシングしている、みたいな形でよりスピーディだったり低コストでの運用を可能にもしてくれる、ただしそのためにはしっかりとした下地を持たないといけないので『サーバーレスが安いって聞いたからサーバーレスにしてくれ』なんて社内エンジニアに無茶振りをしたりしちゃいけません。
ただサーバーレスを覚えたい、覚えてほしいという形ならきっと今後の資産になるんじゃないかなって思います。
また、機会があればより詳しい話をエンジニアさんから学んで中級編とか言ってまとめられたらいいなって思ってます。
また、今後のサーバーレスという言葉の意味はより変わってくるかもしれません…
サーバーレスという考え方自体が今もまだ進化の途中です、今のサーバーレスと来年のサーバーレスでは言葉の内容も構造も変わってしまってるかもしれませんが、その時にはより便利な環境が用意できるようになったんだと思って受け入れていき、そしてまた学んで追いついていきたいと思います!
よろしければサポートをお願いします!いただいたサポートは、制作会社としての活動費やおやつ購入に使わせていただきます❤