ポイント: サーバーレスフレームワークを使用してサーバーレスアプリケーションを開発するためのベストプラクティスは、セキュリティと効率性を強調しています。推奨される戦略には、プロセスを合理化するためのローカル開発、スケーラビリティのためのルートごとに1つの関数を使用すること、設定よりもコードを管理すること、負荷テストを実施すること、APIゲートウェイを保護することが含まれます。
- 効率を高めるためにローカルで開発を開始します。
- スケーラビリティとエラー隔離を向上させるためにルートごとに1つの関数を使用します。
現在のサーバーレスアプリケーションのための最古のデプロイメントフレームワークとして知られているのは、Serverless Frameworkです。このデプロイメントフレームワークには、サーバーレスデプロイメントを保護するための独自のベストプラクティスがあります。この記事では、Serverless Frameworkをレビューし、サーバーレスアプリの開発とデプロイメントのためのベストプラクティスを概説します。
サーバーレスアプリの開発
サーバーレスコンピューティングは、開発者がインフラストラクチャを管理する手間を省いてアプリを構築する方法です。具体的には、開発者は次のことをする必要なく、サーバーレスコードを書くことができます:
- サーバーをプロビジョニングする
- その機能を確保する
- サーバー上にテスト環境を作成する
- サーバーの稼働時間を維持する
これにより、チームとリソースは、今日の競争が激しいデジタル経済において、革新を加速することに集中することができます。
Serverless Frameworkとは?
特定のフレームワークとして知られているのはServerless Frameworkです。このオープンソースのフレームワークはもちろん無料で、Node.jsを使用して書かれています。Serverlessは、AWS Lambda上にアプリケーションを構築するために開発された最初のフレームワークであり、Amazon Web Servicesスイートの一部であるサーバーレスコンピューティングプラットフォームです。いくつかのラムダ関数は、サーバーレスアプリまたは数百のラムダ関数で構成される全体のバックエンドを通じて簡単なタスクを実行できます。Serverlessは、選択したクラウドプロバイダー内で提供されるすべてのランタイムをサポートしています。以下に説明するベストプラクティスは唯一の方法ではないことに注意してください。これらのプラクティスはすべて、基本的な仮定のセットに依存しています。特に人気のあるLambdaについて具体的に話します。しかし、Lambdaが唯一のサーバーレスオプションではないことを忘れないでください。
サーバーレスのベストプラクティス
Serverless Frameworkを使用する際に、アプリケーションが安全で堅牢であることを保証するために採用する価値のあるトップのベストプラクティスを以下に示します。
ローカルで開始
あなたのLambdaが複雑になり始めたとき、アプリ開発者は、設定や関数コードに多くの調整を加えることになります。各変更は、コードをデプロイするのを待ち、スタックの残りをライブにすることにつながります。時間を節約するために、ローカルで開始してください。「保存、コンソールを開く、デプロイ、待つ、リフレッシュ、待つ、リフレッシュ」という開発サイクルではなく、「保存、ビルド、リフレッシュ」というサイクルにシフトしてください。AWS Serverless Application Modelの指示ラインインターフェースは、ラムダやAPIエンドポイント、いくつかのソースをローカルのDockerコンテナ内で再現することができます。
1ルートごとに1関数を使用
HTTPを使用する場合、単一の関数プロキシを避けることがベストプラクティスです。なぜなら、この方法では:
- スケールが良くない
- 問題を隔離できない
一連のルートの関数が単一のテーブルに厳密に結びついている場合、それはアプリケーションから切り離されています。このベストプラクティスは管理に対して複雑さを追加するかもしれませんが、アプリをスケールアップする際のエラーや問題を隔離するのに役立ちます。
コードを再記述しない
JavaScriptはサーバーレスフレームワークの高次言語です。JavaScriptコードを書くと、それは最もパフォーマンスの良い方法で解釈され、実行されます。コードを再記述することはパフォーマンスの問題を解決する方法ではありません。代わりに、プログラムを改善するための多くの方法があります:
- 他のサービスへの複数のリクエストを結合する
- 十分な一致が得られた時点でループを停止する
- 役立つエラー情報を返す
コードを管理し、設定を管理しない
サーバーレスフレームワークでは、AWS CloudFormationに専用のデプロイ役割を渡して、アーキテクチャでデプロイを実行できます。CloudFormationデプロイ役割は、AWSの「UIにのみ保存されている設定」からの道を提供します。サーバーレスアプリケーションモデルでは、スタックを定義するYAMLを作成するファイルを使用して変更を追跡できます。各プロジェクトやチームに対して異なる役割を使用し、デプロイパイプラインに最小特権の原則を適用できます。
負荷テストを実施
ラムダ関数の負荷テストは、割り当てるメモリ量や最適なタイムアウト値を決定するのに役立ちます。サーバーレス環境には複雑なアプリケーションがあり、スケールの大きな機能を実行できない可能性があるアプリケーション内の依存関係を認識していないかもしれません。負荷テストにより、高い可用性のアプリケーションを維持するために重要な潜在的な問題をキャッチできます。
セキュリティのためにAPIゲートウェイをデプロイ
セキュリティは、従来のアーキテクチャでもサーバーレスでも、アプリケーションにとって最優先事項であるべきです。ラムダ関数のイベントソースとしてAPIゲートウェイを実装することは重要です。APIゲートウェイのエンドポイントを保護する必要があります。このAPIゲートウェイは、APIを保護するためのいくつかのオプションを提供します。
サーバーレスはアジャイルソフトウェア設計をサポート
サーバーレスフレームワークでアプリケーションを開発することは、現代のアプローチです。サーバーレスフレームワークを使用する際に説明すべき他のベストプラクティスがあり、時間が経つにつれて、あなたとあなたのプロジェクトの目標に最も適したプラクティスが見つかるでしょう。プロジェクトが進むにつれて、ユーザーから何を改善する必要があるかを伝えてもらえます。
関連する読書
これらの投稿は私自身の意見であり、必ずしもBMCの立場、戦略、または意見を代表するものではありません。