misc.tech.notes

主に技術的な雑記的な

Serverless FrameworkのPluginを2つリリースしました

Serverless FrameworkのPluginを2つリリースしました。

経緯など

以前からLamveryというデプロイツールを作って使い続けてきましたが、イベントを繋ぐGlue Codeを管理するには我ながら便利に使えていましたし、今も使っています。

github.com

ですが、複数のファンクションからなるシステムをServerlessで作るにはやはりFunction単位ではなくプロジェクトやサービス単位での管理をやりたくなる場面があって、Serverless Frameworkがv1.0で設定ファイルがYAML化して超シンプルになったのと、かなり作りが良くなって挙動をPluginで置き換えるのが比較的容易になったので、Serverless Frameworkの足りない機能や気に入らない部分をPluginで補うという方向でやってみることにしました。

LamveryのMulti Function対応も考えていたのですが、Function単位のデプロイ(下記参照)はあれはあれでとても満足していて崩したくなく、それを保ちながらMulti Functionにも対応するとなるとちょっと実装が厳しそうだなと感じたというのもあります。

qiita.com

Plugins

serverless-crypt

github.com

AWS KMSを使った機密情報の受け渡しをサポートするためのプラグインLamveryの同機能の移植&焼き直しです。

serverless-rollback-function

github.com

2016.11.07現在、周辺リソースや全ファンクションを対象とした deploy コマンドのrollback機能はv1.1.0での導入が決まっていますが、Function単体をデプロイする deploy function コマンドを使用した場合のロールバックのサポートはまだ未定です。片手落ち感が半端ないし、正直リソースも更新されて時間がかかる deploy コマンドよりも実運用では deploy function を多用することになるはずなので、これが巻き戻せないのはツラい。 ということで、こちらもLamveryのロールバック機能を踏襲しつつServerless Frameworkの仕様に合わせた形で実装しました。

Plugin開発で得た知見など

今週、2016.11.9(水)のServerless Meetupで発表します。

serverless.connpass.com

Lamveryはどうなるの?

Lamveryも最近は安定稼働していて特に新しい機能が欲しくなったりしてないので開発が滞り気味ですが、イベントを繋ぐGlue Codeを管理する用途では普通に使っています。そういう用途ではServerless Frameworkは重厚だし細かい所で色々気が利かないし、今後も開発は続けるつもりですので、フィードバックお待ちしてます :-)

参考までに私的な使い分けはこんな感じです。

  • イベントを繋ぐGlue CodeをFunction単位で楽に良い感じで管理したい場合はLamvery
  • Multi Functionでガッツリ開発する場合はServerless Framework(とPlugin達)

最後に

こんな感じで今後もServerless Frameworkの気に食わない部分は色々あるのでPluginを開発しつつ、Pluginが増えるとメンテが面倒なので某氏を見習って本家にねじ込めそうなものはねじ込む方向でやっていきたいと思います。よろしくお願いします(誰となく