サーバーレス開発を速くするための3つのステップ
最初に投稿されたのは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プロジェクトの開発を加速することができます。
- プラグインをインストールする
- 次にserverless.ymlにプラグインキーを追加する
- それでserverless -helpを実行するときにserverless offlineコマンドが使えるようになります
Serverlessにはリモート環境へデプロイする前にローカルでコードをテストする役立つプラグインが多数あります。これによって開発者は無駄なデプロイの時間を節約できます。
追加のエミュレーションリソース:
PS! あなたはどのように開発フローを速めていますか? 画像クレジット
最初に公開されたのは https://www.serverless.com です。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/serverless_inc/3-steps-to-faster-serverless-development-1d6f