Lambdaの関数をNode.jsで書いているので、その設計を紹介しようと思う。Frameworkでアプリケーションを作成してゆく。基本的にはドキュメントやリンクをみれば迷うことはないと思うので省略するが、少し気をつけた点を書いてみる。Frameworkをつかっていると、各自の環境でCLIのセットアップをするのが若干面倒になる。そこで、ローカルのnode_modulesからCLIを走らせることにした。installさえすれば各人の環境でCLIが使えるようになる。デプロイのコマンドは以下のような感じ。deployCredentialsを容易に追加Credentialsコマンドを使っているだけだが、デプロイに必要なユーザーcredentialsをコマンドを流すだけで設定できるようにした。これにより複数人開発のときでも簡単に環境構築ができる。FrameworkのCLIを、yarnコマンドで流せるようにした。Frameworkに限った話ではないが、これでインターフェイスを統一でき、スクリプトの予測が容易となる。}}stageを切り分けるLambdaではstageというものが指定できて、例えば、ステージング環境やプロダクション環境などを作成して、各々の環境で関数をテストすることができる。Frameworkでできるので、例えばデプロイのコマンドなどは以下のように設定した。}}実際に流す時は以下のように実行する。Frameworkでテストするのは、関数を結合したときの挙動がメインとなる。Localコマンドを使用することで、動作確認が可能となる。これをなにかしらのアサーションライブラリを使用して自動化すれば、インテグレーションテストをCI上でも流すことができる。Framework上でどうNode.jsを書いてゆくかというところを書こうと思う。基本的には他プラットフォームで使用した設計をそのまま流用できると考えている。webpack+Babelまずは、webpack+BabelでECMAScriptをビルドできるようにした。これはserverless-webpackを使用するが、基本的に大差はない。詳細は、リンクを参考にして欲しい。AVAAVAでユニットテストを実行できるようにした。いっても、いつも通りユニットテストを書いてゆくだけである。ひとつ気をつけた点は、責務をなるべく分離して、クラウド側に依存しないコードを書くことくらいだろうか(webpack+Babelを導入したことによって、小さなJSモジュールにわけて関数を書くことができる)。それに関しては、ドキュメントにも例が出ているので、参考にするといいと思う。FlowFlowによって静的型付けを導入した。Linteslintにより、Lintを行うようにした。Lintはあとから導入すると、ルールを直していく作業が必要になってしまうので、もし小さいプロジェクトであっても最初から導入したほうがいいかもしれない。Pattern(Reduxなど)で書けばいいと思うが、Stateを持つということが現時点ではないので、必要になったらなにかを導入しようと考えている。Lambda関数の性質上あまり必要になる場面が思い浮かばないが、State管理というよりも、RxJSなどでイベントストリームを扱うことがでてくるかもなと思っている。Framework+Node.jsを使用したLambdaの設計を書いてみた。普段と変わらずに設計できたので、あとはクリーンコードを書いてゆくだけですね。採用メンバー紹介リモートワーク健康管理ソリューション・サービスお問い合わせ見積もり依頼や詳しいご相談など、クラウド・AWSに関する困りごとをお気軽にご相談ください。以下のお問い合わせ先から受け付けています。お問合わせはこちら※通常1営業日内にご回答いたします。