サーバーレス開発を速くするための3つのステップ

3 Steps To Faster Serverless Developmentのカバー画像

最初に投稿されたのは2017年6月29日のServerlessでした。

画像

開発者がサーバーレスの世界に移行するときに、開発中のフィードバックループが遅くなるというのが一番の悩みの種です。

この投稿では、私がどのようにサーバーレスサービスの構築とデプロイを速くするかについてお伝えします。

Serverless Frameworkには開発サイクルを加速する隠れた機能がたくさんあります。

さあ、見てみましょう!

1. sls deploy functionで変更をより速くデプロイする

多くのユーザーは、serverless deploy functionコマンドの存在を知らず、コードが変更されるたびにserverless deployを使っています。

違いは何ですか?

sls deployはクラウドフォーメーションを通してスタック全体を再デプロイし、明らかに遅いです。

その一方で、sls deploy functionはコード(および必要な依存関係)を圧縮し、ランダム関数のみを更新します。これはスタック全体の更新を待つよりもずっと早いです。

従って、開発中はsls deploy function -f myFuncNameを使って、ライブAWSアカウントでのコード変更を速やかに行うことができます。

注記:serverless.ymlの設定に変更を加えた場合、例えばエンドポイントパスの変更やカスタムリソースの更新などは、スタック全体の更新を行うために完全なsls deployが必要です。

関数コードにのみ変更を加えた場合、sls deploy function -f myFuncNameで問題なく動作し、ずっと素早いです。

2. ライブサービスのログを追う

サーバーレスの世界ではリモートコードのデバッグが難しいことがあります。幸いなことに、console.logとランダム関数はピーナッツバターとゼリーのようなものです。

私のお気に入りのServerless Frameworkコマンドはsls logsコマンドで、これを使うとリモート関数のログを直接ターミナルに取り込むことができます。

これはエラーのデバッグや、eventやcontext引数に何が含まれているかを確認するのに便利です。

ログを追って、ライブ関数をピングする時にライブアップデートが得られることはさらに便利です。

私は新しいターミナルウィンドウを開いてsls logs -f funcName -tを実行し、Postman(または私のUI)でランダム関数をピングして、関数のライブデバッグをします。

2つのターミナルウィンドウを開いて、より速いコード変更のためにsls deploy function -f funcNameを使いながら、sls logs -f funcName -tでライブログを見るのはとても簡単で、私のフィードバックループを速めます。

3. オフラインエミュレーション

さて、オフラインエミュレーションについてはどうでしょうか?絶対に開発サイクルを速くする方法で、何も再デプロイする必要がありません。

serverless offlineプラグインを使えば、ローカルでAWSランダムとAPIゲートウェイをエミュレートし、Serverlessプロジェクトの開発を加速することができます。

  1. プラグインをインストールする
    1. 次にserverless.ymlにプラグインキーを追加する
    2. それでserverless -helpを実行するときにserverless offlineコマンドが使えるようになります

Serverlessにはリモート環境へデプロイする前にローカルでコードをテストする役立つプラグインが多数あります。これによって開発者は無駄なデプロイの時間を節約できます。

追加のエミュレーションリソース:

PS! あなたはどのように開発フローを速めていますか? 画像クレジット

最初に公開されたのは https://www.serverless.com です。

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/serverless_inc/3-steps-to-faster-serverless-development-1d6f