開発者がサーバーレスと友達ではない理由



私は最近、優れた開発者とYouTuberによる「サーバーレスセンスレスネス」というビデオを見ました 私は著者の考えが好きでしたが、彼の発言のいくつかに同意せず、この記事でそれらについて議論したいと思います。



ビデオは冗談で始まります。「私が理解していないことが世界には2つあります。それは、女の子とサーバーレスコンピューティングです。」この開発者と女の子との関係については何も知りませんが、彼はサーバーレスについて正しいですか?彼の主な重要なポイントを見て、サーバーレスコンピューティングを提唱する考えられる議論について話し合いましょう。



ネタバレ注意サーバーレスを信じています。このテクノロジーをいつどのように使用するかを知る必要があります。




サーバーレス批判



サーバーレスコンピューティングに対する主な議論は速度です。または、よく知られているコールドスタートの問題。コールドスタートは、コード実行の遅延(JavaScript、Python、Go、Java、Rubyなどの言語では最大1秒に達する可能性があります)であり、計算リソースの割り当て、コードの取得、コンテナーの起動が必要なために発生しますプロバイダー側​​から。



時々それは本当にミリ秒についてです。これは疑問を投げかけます:それは、アプリケーションライフサイクル管理の成功の主要な指標として、コードがそのタスクをどれだけ早く完了するのか?



ITに携わり、関連技術の開発に直面した人として、私は速度メトリックが重要なものであるかどうかわかりません。結局のところ、開発サイクルの速度、メンテナンスの容易さ、製品の回収時間、エンドユーザーの低コスト、中断のないIT運用を保証することによる中断のリスクの低減など、他の基準があります。最後に、開発者の時間を節約します。あなたがそれについて考えるならば、サーバーレスコンピューティングはこれらの基準のすべてを満たしています。



開発者には何が欠けていますか?サーバーレスの真のメリット



考えられる200ミリ秒(最大1秒)の遅延が作業に受け入れられない程度にコード実行速度を気にする場合、サーバーレスコンピューティングは実際には機能しない可能性があり、これは完全に正常です。ただし、これはサーバーレスを役に立たないものと呼ぶ理由ではありません。誰もがそのような遅れが彼にとってどれほど受け入れられないかを決定しなければなりません。



サーバーレスコンピューティングは、ITインフラストラクチャを管理するための強力な方法です。特に、独自のインフラストラクチャを購入し、専門家を雇ってサーバーを24時間年中無休で保守するリソースがない場合に役立ちます。



- Serverless . « ». Serverless, .




私が遭遇したほとんどの場合、サーバーレスコンピューティングを使用すると、セルフホストリソースを使用するよりも桁違いに安価になります。これは、計算能力自体のコストだけでなく当てはまります。サーバーレスを安価にするのは、このソリューションがインフラストラクチャの運用、拡張、保守にかかる時間を節約できることです。社内のシステムエンジニアのチームを雇う必要がないため、実際のコスト削減を体験できます。優秀な人材は、サーバーレスコンピューティングよりも大幅にコストがかかります。



サーバーレスコンピューティングが万能薬であり、すべての人に適していると言っているのではありません。ワークロードが安定していて、インフラストラクチャを管理するのに十分な専門知識がある場合は、実際には従来のサーバーで実行したほうがよい場合があります。



コールドスタートは平準化できます



コードの実行時間の問題に戻ると、コールドスタートの問題は、サーバーレスのコーディングと構成の方法に大きく依存します。



一般に、コールドスタートを「加熱」することで、コールドスタートを和らげる方法はたくさんあります。したがって、関数を一定の頻度で実行したり、サービスをより頻繁に開始したり、一部のコンテナーを常に実行し続けることができます(プロバイダーが許可している場合)。これらのアクションは、機能を開始するために必要な「暖かい環境」を提供します。



また、一部のサーバーレスプロバイダーは、プロセスを合理化できるように、コールドスタート機能を通知する組み込みの監視システムを提供しています。メールやSlackなどのワークスペースと同期することもできます—コールドスタートメッセージが受信トレイに届きます。



ワークロードに許容できるレイテンシはどれくらいですか?



この質問への答えを知っていればそれは良いことです。コールドスタートの待ち時間は通常、ミリ秒と呼ばれます。私がデータエンジニアとしての仕事で遭遇したすべてのユースケースで、日々の仕事の遅れは目立ちません。



さらに、高度なプロバイダーを使用すると、サーバーレスコンピューティングとサーバーを含むハイブリッドインフラストラクチャを作成できます。



サーバーレスコンピューティングは、NoOpsとスケーラビリティに関するものです



サーバーレスを使用すると、クラウドプロバイダーがほとんどのIT運用を引き継ぐため、ビジネス価値をより迅速に生み出すことができます。コンピューティングパワーの割り当て、必要な負荷へのクラスターのスケーリング、セキュリティと更新の監視、機器の整合性の管理など。インフラストラクチャ管理に関連する頭痛の種がなくなったので、クライアントとの作業に集中できます。これが最終的には主なものですか?



サーバーレスは、高度なスキルを持つエンジニアの時間を解放し、クラスターの管理ではなくビジネス上の問題の解決に集中できるようにします。



サーバーレスコンピューティングが特に役立つのはいつですか?



あなたがスタートアップを始めていると想像してみてください。最初は重要なインフラストラクチャは必要なく、開発者は1人だけかもしれません。サーバーレスパラダイムを使用すると、小規模から始めて、従量課金制のコストモデルでビジネスの成長に合わせて自動的に拡張できます。



サーバーレスコンピューティングから大きな恩恵を受けることができるもう1つのグループは、大規模なIT部門を持たない中小企業です。 1人のDevOpsエンジニア(プログラマーのチームではない)でアプリケーションのライフサイクル全体を管理できることは、サーバーレスコンピューティングの大きなメリットです。



サイトやアプリに季節的な負荷がかかっている場合は、サーバーレスも最適なオプションです。たとえば、eコマースビジネスを利用している場合、ブラックフライデーと大晦日にピークが発生する可能性があります。サーバーレスインフラストラクチャを使用すると、容量消費をこのような状況に適応させることができます。



また、人生のすべての出来事を予測できるわけではありません。オンラインストアで手指消毒剤、その他の消毒剤、フェイスマスク、および同様のアイテムを販売することを想像してみてください。その後、世界的大流行があり、今では誰もがあなたの製品を必要としています。サーバーレスインフラストラクチャを使用すると、あらゆるワークロードに対応できます。



コード実行の速度と開発サイクルの速度



製品開発のスピードも役立ちます。多くの場合、サーバーレスコンピューティングはマイクロサービスアーキテクチャをサポートします。これは、開発サイクルが速く、アーキテクチャコンポーネントが互いに比較的独立していることを意味します。



サーバーレスは、開発サイクルの反復を高速化し、製品をエンドユーザーに迅速に提供するのに役立ちます。これにより、定期的なコールドスタートによる数ミリ秒の遅延が補償されます。



ビデオで言及されていないサーバーレスのデメリット



サーバーレスコンピューティングの短所のいくつかはビデオで言及されていませんでした。装飾なしで全体像を把握できるように、名前を付けたいと思います。



サーバーレスコンピューティングは、コスト、スケーラビリティ、インフラストラクチャ管理の観点から理想的な場合もありますが、すべての人にとって万能薬ではありません。



  1. ベンダーロックインのリスクがありますプロバイダーは、サービスを非常に便利で費用対効果の高いものにしているため、特定のクラウドプロバイダーに縛られるリスクがあります。
  2. , , . , SSH , ​​ , .
  3. , .
  4. - , .




一般に、サーバーレスコンピューティングやその他のクラウドサービスなど、ITの新しいパラダイムを、使い慣れた「ホーム」オンプレミステクノロジと同じロジックで使用することはお勧めできません。ワークフローを物理インフラストラクチャからクラウドに直接コピーして貼り付けると、クラウドサービスのメリットの多くが失われます。



テクノロジーがすべてのビジネスに適用可能であり、欠点がなく、安価であると期待する理由はありません。



私の観点からは、サーバーレスについて(実際、他のITソリューションのように)断固として話すことはできません。作業の1つの側面のみを考慮し、残りの側面は無視します。サーバーレスコンピューティングは理にかなっています。いつ、どのように使用するかを知っている場合。






All Articles