misc.tech.notesスマートフォン用の表示で見るmisc.tech.notes主に技術的な雑記的なこの広告は、90日以上更新していないブログに表示しています。Gatewayはとにかく設定が面倒である。Serverlessの概念はシステムをシンプルに保てるとても素晴らしいものだが、それを実現するための設定が複雑になって、運用に支障が出たりするのは厳しい。*1「柔軟なリソース定義を担保しようと思ったらまあ仕方ないよね」みたいな気持ちもあるが、やっぱり面倒なものは面倒だ。2016年5月10日Terraformですらこの記述量なのか。2016年5月2日Swaggerですら面倒くさい。1APIにつき3行くらいで記述したい。俺達(俺)は書いたコードをサクッと上げてサクッとAPI公開したいだけなんだ!!1書いたコードをサクッとLambdaで実行出来るようにするツールはすでにある。Gatewayの独自要素*2に色々突っ込む必要があったりして、まだまだ十分とはいえないし、冗長な表現も多い。DSL*3でかけるようにすることで劇的(当社比)に見通しが良くなり、冗長な表現を避けることができるようになるツールとして、kumogataがある。Sets(プレビュー的な機能)に対応したりプラグイン機構を導入したりして進化してる。本当にいつもお世話になってます。DSL化すれば楽になるのでは?というのが今回の趣旨。併せて、運用に便利なdiffを取る機能や定義のデプロイ等も含めてツール化してみた。github.com使い方とりあえずインストールはgemなのでこれです。rapis詳しくはREADMEを読んでいただければと思いますが、ざっくり主なコマンドの解説だけ。Gatewayの仕様上の注意事項としては、Swagger定義のインポートはAPIのベースとなる設定に対して行うが、実際にAPIとして公開されるステージにデプロイ(反映)する作業は別のステップとなっており、エクスポートについてはベースの定義を出力することはできず、デプロイ済みのステージから抜くことしかできないということ(デプロイはまあ良いとしても、大本の設定は抜けるようにしてほしい。DSLに置き換えるとシンタックスエラーになるような部分以外は特に特別な記述に置き換えるようなことはしていないが、これから使っていく中で汎用的に使えるような省略表現やメソッドなんかを入れていくことで、もっと楽にかけるようにしていきたい。DSLと相互変換するのは、kumogataを含め、AWS等の設定をコード化するCodenize.toolsの作者であるid:winebarrelさんが公開しているdslhというgemを使ってます。github.comということで、偉大な先人へ感謝をしつつ締めたいと思います。