Serverless アーキテクチャ、共有レンタルサーバでも代用可能なのでは?

読了まで:約5分


と、​今日ふと​思ったので、​その​辺りを​雑に​書く。


1. ​その​ [Serverless は​本当に​必要ですか?​]

基本的に、​僕は​ [[AWS Lambda]] + [[Amazon API Gateway]] みたいなのは、

現代に​おける​モダンな​ CGI っぽい​モノ

と​いう​認識で​いるんだけど、​基本的に、​これらの​ [[Serverless ]] Architecture と​いう​モノの​最大の​利点は、

その​ Serverless な​サービスを​提供する​プラットフォームの​サービスを、​ CGI っぽい​スクリプトから​シームレスに​扱える

と​言う所に​有る、と​今は​思ってる。

そしてもし仮に、​例えば、​ [[AWS Lambda]] + [[Amazon API Gateway]] で​ Web Service を​作ると​して、​ そこに​ AWS 固有の​要素が​無かったりするのであれば、​これは​もう​普通に​共有 ホスティング系の​サービスで、​ CGI + MySQL で​サービスを​作る、と​いうのと、​あまり​違いが​ないのではないか、と​いう​考えに​今日​至ったんだけど、​ 何故そう​言う​考えに​至ったかと​言えば、

  1. [[AWS Lambda]] 等は​基本プロセスを​使い捨てる​ (は​ず) 即ち、​これは​ CGI の​あり方と​近い
  2. Amazon API Gateway など​ HTTP Gateway は​色々​制約が​有る​ その​点も、​共有ホスティングでの​制約に​近い
  3. マネージドな​スクリプトホスティングは、​共有ホスティングでも​可能 とは​言え、​デプロイとかは​工夫が​要りそう

と​いうのが、​主な​理由。

無論、​これには​いくつかの​条件の​重なりは​必要だと​思うし、​また、​先に​例に​上げた、​ [[AWS Lambda]] + [[Amazon API Gateway]] な​プロダクトが​有ったとしても、

  1. 消費リソース (メモリ等) が​少ない
  2. プラットフォーム固有の​ミドルウェアを​使わない
  3. デプロイが​自動化可能である

と​いう​辺りの​条件さえ満せば、

共有ホスティングでの​実行も​検討の​一つの​入るのは​ないか

と​思います。

2. 共有ホスティングの​障害点

先程、

条件さえ満せば、​共有ホスティングでの​実行も​検討の​一つに​入る

とは​言った​ものの、

では、​何が​共有ホスティングでの​実行に​おける​障害と​成り​得るか?

と​考えると、​僕と​しては、​大体、

  1. 共有ホスティングの​サーバの​当り​外れ
  2. デプロイの​自動化
  3. アカウント管理

の​三つが​障害と​いうか​障壁に​なるのかな、と​思う。

と​いうのも、​まあ昔​レンタルサーバとか​借りてた方なら​判るかもしれないんだけど、​ [[共有ホスティングサーバ]] は、​同居する​他の​利用者が、​過剰に​リソース​使ってたりすると​動作が​安定しなかったり、​あるいは、​サーバを​ Abuse してたり、​あるいは​脆弱性を​突かれて Abuse の​踏み台に​なってたりすると、​その​ サーバの​ IP が​何らかの​ [[ブラックリスト]] 入りしてたり、と​いう​リスクが​有ります。

また、​ [[デプロイの​自動化]] と​ [[アカウント管理]] も​似たような​話なんだけど、​基本、​ [[共有レンタルサーバ]] の​内、​特に​ [[ビジネス利用]] が​考慮されてない​ [[個人利用]] 向けだと、​デプロイ手段が​ [[FTP]] とか、​ [[SSH]] が​使えないとか、​あるいは、​そもそそも​アカウントマネージメント機能が​無いとか、​そういう​ケースも​有り得ると​思うので、​その​辺りも、​モダンな​権限管理とか​している​組織なんかでは、​ 結構​気を​使わないと​ダメな​ところだと​個人的に​思うし、​あと、​SSH ​使えない​ + ライブラリや​実行環境を​自前で​コンパイル出来ない、と​いう​環境だとかだと、​そもそも​ [[Serverless]] アーキテクチャの​代用とかには​向かないと​思うので、​そう​言った​点も​気を​付けるべきだと​考えてます。

それと、​大量の​アクセス数を​捌き切れるのか、と​いう​問題も​有るには​有って、​例えば、​データストアへの​大量の​読み​書きが​存在する​スクリプトは​流石に​ 共有ホスティングには​向かないだろうし、​また、​ファイルシステムも​高速じゃないと……みたいな​要件には、​まあサーバの​スペックに​依るだろうけれど、​あんまり​ 共有サーバは​向かないと​思う。

ただ、​大量の​アクセスと​言っても、​例えば​これが​ Read-Only な​静的ファイルへの​アクセスだったり、​一度​生成すれば​大丈夫な​コンテンツだったりするのであれば、​普通に​ CDN ​使えば​良いだけの​話なので、​この​点では、​共有サーバを​使うのも、​あるいは​ Amazon S3 の​ Web Hosting 機能​使うのも​大差無いと​思います。​まあコスト面での​違いは​有りますけどね。

3. ​使い分けとか​その​辺りの​話

まあ、​ぶっちゃけ

[[Serverless]] な​ platform を​使う​ / 共有サーバで​何とか​する

と​いうのは、​本当に​ケースバイケースだと​思うし、​また、​その​プロダクトが​要求する​要件や​予算にも​依る​話だと​思うので、​ その​辺りは​本当に​良く​良く​検討して​決めた方が​望ましいと​思うのだけども、​Serverless な​アーキテクチャも​向き不向き​有ると​思うので、​まーそれも​銀の​弾丸ではない、とは​思っておいた​方が​良いと​思います。

ただまあ、​例えば、

とかだと、​RS2 Plus は​共有サーバで​有りながら永続プロセスとかも​使えるし、​また、​利用料金も​ VPS っぽい​感じで​必要な​時だけ​使う、​みたいな​コトも​出来るので、​そう​言った​意味では、​ [[Gehirn Infrastructure Services]] みたいな​ホスティングサービスが​増えて​来れば、

Serverless アーキテクチャを​使うには​ちょっと​向かないし、かと​言って、​ VPS を​使うのは​ちょっと​オーバーだし……

みたいな​案件は、

とりあえず​ GIS っぽいの​使おう

と​いうのが​出来る​様に​なるのではないか、と​思います。

ま、とは​言え、​ [[Gehirn Infrastrucrure Services]] とか、​(個人的には​) そんなに​安くはないですけどね。

以上

なんか​雑に​書く​つもりが、​思った​以上に​文章量が​膨らんでしまいました。​どうして​こうなった!​どうして​こうなった!​あと​一応​最後に​言っておくと、​今回の​記事、​ Serverless アーキテクチャを​ Dis ってる​つもりは​微塵もなく、

[Serverless アーキテクチャと​いう​面白げな​システムだけに​発想が​囚われていると、​他の​選択肢が​見えなくなったりするよ!​]

と​いう​感じの​話しでも​有るし、​また、​現実に​ 僕は​そういう​面に​囚われてしまっていて 、​そうした、

[[Serverless]] アーキテクチャは​無闇やたらと​使おうと​するの、​マズくね?

と​いう​思いも​有ったので、​今回、​こういう​記事を​書いたりしたのでした。​ま、​この​記事を​書いたのは、​思い​付きの​考えを​言語化して​整理する、と​いう​意味も​有りますが。


と​いう​事で​思い​付きで​書きは​始めて、​思ったより​長くなった​記事は​以上です。​はい。

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。