サーバーレスが開発者のビルドとテストの方法をどう変えるのか - TechRepublic

サーバーレスが開発者のビルドとテストの方法をどう変えるのか - TechRepublic
プログラマーが机に座って、ソフトウェア開発者の混合チームと人工知能について話し合っている
画像: DC Studio/Adobe Stock

いくつかの指標によると、企業の半数以上がサーバーレスを導入済みです。もし「まだ」という方のために、PrefectのリードコミュニティエンジニアであるAnna Gellerが、サーバーレスコンピューティングが企業の開発効率を向上させるだけでなく、開発者の生産性向上にもつながる複数の方法を提案しています。

しかし、Serverless Days の共同設立者である Paul Johnston が指摘しているように、多くの開発者はサーバーレスに間違ったアプローチをし、その過程でつまずいてしまいます。

彼は次のように述べています。「サーバーレス システムをソフトウェア システムとして扱い、そのように構築しようとすると、最良の結果を得るよりも苦労する可能性の方がはるかに高くなります。」

しかし、彼は何を意味しているのでしょうか。また、開発者はどうすればこの罠を回避できるのでしょうか。

参照: AWS Lambda、サーバーレスコンピューティングフレームワーク: チートシート (無料 PDF) (TechRepublic)

サーバーレスに移行する理由

ゲラー氏によると、サーバーレスの最大の利点の一つは、有用なエンジニアリング手法の導入を促進することです。例えば、「個々のソフトウェアコンポーネントを、それぞれが一つのことだけを担当するように構築することが有益である」という点に合意できれば、サーバーレスは「変更が容易でステートレスなコードを促進する」ため、その効果を発揮します。

さらに彼女は、サーバーレスは開発者に再現可能なコードの構築を強制することになる、と続けました。

「サーバーレスでは、コンポーネントを小さくする必要があるだけでなく、関数やコンテナの実行に必要なすべてのリソースを定義する必要があります」とゲラー氏は述べた。

サーバーレスでは、このような自己完結型のサービスを必要とするため、Symphonia の Mike Roberts 氏が主張しているように、開発者は「オーケストレーションよりも振り付けを重視し、各コンポーネントがよりアーキテクチャを意識した役割を果たす」ようになります。

イベント駆動型アーキテクチャという考え方は非常に強力ですが、多くの開発者が道を踏み外してしまう原因にもなります。

振り付けを念頭に置いた建築

「サーバーレス システムは、互いに完全に独立し、イベントによって接続された、分離された非常に小さな多数のシステムとして考えるべきである (しかし、実際に考えられることはほとんどない)」とジョンストン氏は指摘する。

まあ、ソフトウェアはそういうふうに動作するものですよね?

「確かに」と彼は付け加えた。「一般的な意味では『ソフトウェア』です。しかし、ほとんどの開発者やマネージャーが考える意味での『ソフトウェア』ではありません。」

サーバーレスとソフトウェアシステムの考え方の不一致の一部は、セキュリティに起因しています。サーバーレスでは、開発者はセキュリティ上の懸念事項の一部を基盤となるクラウドプロバイダーに委ねる必要があります。また、開発者はアプリケーションロジックに集中できるものの、クラウドプロバイダーが依然としてサーバー管理を行っているため、全般的な制御が失われます。しかし、このアプローチの違いが顕在化するのは、テストの領域においてです。

「サーバーレスシステム内の要素の分離度が高いということは、チーム間で同じテスト要件がないことを意味します」とジョンストン氏は強調した。「個々の要素はテストが必要です(これは変わりません)。しかし、各要素は分離されている(または分離されているべき)かつ小さい(または分離されているべき)ため、チーム間および要素間の結合度はほぼゼロになるはずです。チーム間およびシステムの要素間の結合度がほぼゼロであれば、要素をテストするだけで済みます(テストが必要な結合度がある場合は除きます)。」

単体テストは比較的簡単ですが、統合テストはより困難になり、さらに重要になります。

「統合テストの検討が重要な理由の一つは、サーバーレスFaaSにおける統合単位が他のアーキテクチャよりもはるかに小さいからです」とロバーツ氏は記している。「他のアーキテクチャスタイルよりも、統合テストへの依存度が非常に高いのです。」

このようなテストにはクラウドに頼る必要があるため、状況は複雑になり、不安な飛躍となる可能性があります。

「すべてを自分のノートパソコンでローカルに実行するのではなく、クラウドベースのテスト環境に依存することは、私にとってかなりの衝撃でした」とロバーツ氏は語った。

さらに、アーキテクチャ (およびテスト) に対するアプローチも異なります。

「つまり、(サーバーレスの世界における)開発プロセスは、多数の小さく分離された要素を構築し、それらをテストすることに集中することになります」とジョンストン氏は述べた。「より広範な管理プロセスでは、それらの小さく分離された要素がどのように組み合わさるかを理解することが重要になります。」

言い換えれば、編曲ではなく振り付けです。

乗り越えられない考え方の転換?そんなことはない。しかし、確かにそれは異なる。ジョンストン氏、ロバーツ氏らが主張するように、その違いを理解し、それに応じて構築することが、サーバーレスを正しく実現するための鍵となる。

TechRepublic Academyの以下のバンドルを使用して、AWS、Azure、Lightning、Google Cloud のサーバーレス コンピューティングに関するトレーニングと認定を取得できます。

  • AWS サーバーレスコンピューティングを学ぶ [eBook]
  • 完全な AWS 電子書籍とビデオコースのバンドル
  • 2022年版 AWS クラウド実践者向けオールインワン基礎トレーニングバンドル
  • AWS DevOps エンジニア認定資格の完全バンドル
  • 完全な Microsoft Azure 電子書籍とビデオ コース バンドル
  • エンタープライズクラウドコンピューティングエンジニア必携バンドル

開示: 私は MongoDB で働いていますが、ここで表明されている意見は私自身のものです。

Tagged: