「OSなんて飾りです。偉い人にはそれが分からんのです。」
ジオン公国の整備士はシャアにそう言った。ガンダムはエアプなのでこの辺で。
今回はサーバレスの話。前回S3のオブジェクトストレージについて書いた時に、より抽象化してOSに依存しないストレージサービスである趣旨のことを書いた。
それと同時に業務上でAWS上にWindowsサーバーを構築してたり、AWSの学習を勧めてたりするとタイトルの一言が思いついた。
何が言いたいかというと、この記事は思ったことをつらつら書いてるただの感想兼備忘録だと思ってほしい。
そういう訳で、少しサーバレスの考え方を書いて少しでもサーバレスへの理解の助けにいけたらなと思う。
OSは管理が面倒
Windowsサーバーを複製する際に起こる問題の一つがSysprep問題。Sysprepとは、マシン固有の情報を削除することで他マシンでもWindowsを使用できるようにするもの。とりわけマシンごとに一意に付与されているSIDという情報をSysprepでリセットして重複しないようにしないと元々のWindowsが使用できなくなる可能性がある。
しかし、SysprepについてAWSのブログでは下記のように記載がある。
Sysprep を実行する前に、次の点を考慮してください:
- Sysprep を使用してインスタンスのバックアップを作成しないでください。
- Sysprep を実稼働システムで実行しないでください。
これで分かるようにWindowsはクラウドによって享受されるはずだった簡単にスケールアウトしたり複製できるという恩恵を得にくくしている。
そして、OSを管理していると起きるのがパッチの適用である。OSバージョンを上げたりするとプログラムが動かなくなる可能性がある。パッチが出るたびにOS更新が既存のシステムに影響を与えないかという単純だけど一見すると意味があるのか分からない作業をしなければならない。
結構めんどい、、、。
プラスアルファで本番、開発に関わらず環境を構築する際に何か動かないみたいなこともある。言語、ミドルウェアバージョンやらが問題になる。
その他OS、ミドルウェアのサポート切れとか色々手間がかかる。
その反面色々と機能があるのだけど。
次からインフラの機能を実現するためにOSが必要なのかを少し考えてみたい。
OSは必要なのか-静的ページの場合
例えばhtml,css,JavaScriptのみでバックエンドの実装が何もないwebサイトがあった場合、サイズの大小問わず、サーバーにOSも必要なのか?という話になる。
静的サイトであれば、サーバー上でプログラム処理をしないし、データベースも必要にならない。ソースコードのホスティングとWebサーバーとしてリクエストを受け取って、レスポンスを返す機能さえあれば充分である。
ソースコードはストレージ機能で賄い、あとはhttp通信の窓口を作ってやればOSなんて不要になる。それを行っているのがS3によるWebサイトホスティングである。
OSは必要なのか-メール送信の場合
それはさておき、Webサイトを構築して、取り敢えずお知らせメールを送れるようにしたいということもある。そうなると一台メールサーバーを用意しなくても、メールの送信機能だけあればいい。そういった時にはAmazon SESを使用すればオーバースペックなメールサーバーを用意することもなく、コストを抑えることができる
そもそもメールサーバー自体、レンタルサーバーを使用してOSを意識しないという人は多いと思うが。
このように常にシステムを構築する上で、サーバーフルである必要はない。むしろOSやミドルウェアの管理が複雑で保守工数がかかってしまうこともあり、この問題を解決するのがサーバレスアーキテクチャになる。
サーバレスの良さをまとめると
・構築工数を抑えることができる
・保守工数を抑えることができる
・ランニングコストを抑えることができる
といったことが挙げられる。
反対にデメリットは、
・クラウド環境に特化した知識が求められる
・他のプラットフォームへの移管工数がかかる
サーバレスアーキテクチャはクラウドに依存した構造になる。流石に明日AWSがなくなることはないが、ある時サービスが閉鎖されたり、サポートされていたプログラミング言語使用できなくなったりする。
とはいえ、上げた例は多くあることではないし、そもそもそれらはサーバフルでも起こりうることではある。
まあ、そんなことで、「OSなくても良くね?」というのがサーバレスという話でした。
コメント