この記事では、サーバーレスとは何かを定義するつもりはありません。インフラストラクチャ運用の削減、イベント駆動型の即時スケーリング、低コストなど、私たちが聞いたことのあるサーバーレスの経済的およびアーキテクチャ上の利点については詳しく説明しません。
代わりに、上司が気にかけているかどうかに関係なく、すべての開発者がサーバーレスを気にする必要がある理由を説明したいと思います。
もちろん、個人的な話から始めて…
私は「ウェブ開発」をしたことがありません。ここでの二重引用符は、概念をからかうためのものではなく、それが何を意味するかについての私の無知を示すためのものです。サービス、層、Apache、IIS、ASP、JSP、JS、CSS、またはその他の頭字語の違いを長い間知りませんでした。ソフトウェア開発者として、私は Windows 用のデスクトップ アプリケーションを構築する C++ コードを書いたり、Linux 用のサーバー管理アプリケーションを構築する C コードを書いたりしていました。それがクールな子供たちがやるべきことであり、すべての「ウェブ関連」はプログラマーのレベルが低い人向けのものだといつも思っていました。
ウェブから離れれば離れるほど、それは私にとって謎めいたものになりました。 REST、JSON、WebAPI などは、インターネット記事の 1 つおきに登場します。モバイル アプリを構築している人々が、アプリの「Web サービス バックエンド」を構築することについて話していたので、私は混乱しました。町で次にホットなものである「クラウド」が、そのほとんどすべての特性を「Web のもの」から借用したことは助けにはなりませんでした。 「クラウド」でアプリケーションを構築したい場合は、「Web のこと」をよく理解しているか、仮想マシン、コンテナー、およびその他の仮想化関連テクノロジに精通している必要がありました。私はそれらすべてを学ぶことを余儀なくされた仕事に就くまで、彼らが私の心に特定のオーラを獲得するのに十分長い間両方を避けていました.ありがとう!
しかし、それがサーバーレスと何の関係があるのでしょうか?
たくさん。
「Web 開発」が非常に人気があるにもかかわらず、デスクトップ、サーバー、組み込みデバイス、モバイル デバイスなどのソフトウェアを構築し、「Web」の側面をあまり扱っていない開発者が世界中にいると確信しています (私のように)。 )。彼らの多くは間違いなく、「クラウド」とそれが彼らにとって何を意味するのかについて不安を抱いています。それは、将来の雇用に役立つスキルを持つことであれ、既存のアプリケーションをクラウドに接続/移行する方法を考え出すことであれ、その効果はすでにあります)。
これらの開発者は、アプリケーションを「クラウド」で実行するために必要なことは、ビジネス ロジックを記述することだけであるという事実に勇気づけられます。サーバーレスになる前は、彼らの移行は、本質的にすべてロジスティックであり、ほとんどが差別化されていない重労働を行うだけの多くのテクノロジーを学ぶことを意味していたかもしれません.サーバーレスでは、必要なのはプログラミング スキルだけです。プログラミングだけに集中することを好まないプログラマーはいますか?
デスクトップの世界では、小さなコンソール アプリケーションやコマンド ライン ユーティリティを構築して、理論やアイデアをテストすることは日常的なことです。ただし、「クラウド」では、非常に基本的なアイデアのプロトタイプを作成する際に付随する手順が、構成、セットアップ、SDK、統合など、いくつかの摩擦点でいっぱいになることがあります。サーバーレスは、その手順の多くを舞台裏で処理することにより、開発者の負担を大幅に軽減します。簡単なプロトタイピング、迅速な実験、間違いからの学習、教訓に基づく方向転換は、最新のソフトウェア開発の重要な原則です。サーバーレスの非常に過小評価されている品質は、まさにそれを提供する能力です。
キャリアの早い段階で、前に述べたクール キッド シンドローム (「Web のこと」から遠ざかっていたシンドローム) によって、あまりにも長い間 Visual Studio から離れていました。私が取り組んだすべてのコードが Windows 上の Visual Studio で簡単に処理できるクロスプラットフォームの C/C++ コードであったとしても、私は Linux 上の vim と gdb を使い続けました。これはすべて、コマンドライン以外のものをディスるのがクールだったからです。このトピックについて議論を始めるつもりはありませんが、少なくとも、これを行うことで数え切れないほどの生産性を失ったと感じたと言えば十分です。
私がここで強調したいのは、たとえクラウドであっても、競合するテクノロジーを使用しても同様のことができるということです。 VM、コンテナー、またはサーバーレスが同様の出力を提供する複数のシナリオがあります。ただし、仮想マシン、コンテナー、オーケストレーター、またはインスタンスではなく、CODE という開発者の通貨に焦点を当てたエクスペリエンスを提供することにより、開発者の生産性を最適化するのはおそらくサーバーレスだけです。コード (クラウド向けのコードであっても) を生産的に処理するという問題は、Visual Studio のような世界クラスの IDE によって解決されています。
サーバーレスは万能薬ですか?いいえ、問題はありますか?もちろん。コールド スタート、状態の欠如、期間の制限、メモリなどについては誰もが聞いたことがあるでしょう。ほとんどの場合、いいえ。生産性のメリットは、すでにこれらの問題を上回っています。これらの問題は克服できないものですか?全くない。クラウド ベンダーは、このテクノロジに十分な利点と見込みがあることを認識しており、これらの問題をすぐに修正することに十分な動機を与えています。
要約すると、サーバーレスは、すべての開発者がツールボックスに含める必要がある優れたツールを提供します。