BLOGSpeee開発陣による技術情報発信ブログです。AWSTweet娘にぞっこんアラサーエンジニアのpataijiです。アラサーという言葉を初めて自分に使ったのでドキドキしています。CloudFormationのテンプレート管理をなんとかする、「Cloudruler」を紹介しました。tech.speee.jp当日のスライドspeakerdeck.comCloudFormationを使用している方にはそれなりに共感いただけると思うのですが、テンプレートファイルの管理ってかなり大変じゃないですか?最近では、SAMのおかげで簡単にサーバーレスアプリケーションを作ることが出来るようになりましたが、VPC、EC2、RDS等をCloudFormationで管理する大変さは変わりません。テンプレートをYAMLで書けるようになり、JSONしか対応していなかった頃と比べるととても良くなったなぁとは思うものの、どうしても冗長な記述が生まれがちですし、何より記述量が多い。初見殺しなのは、ドキュメントをしっかり読み込まないとRDS一つ用意するのにも苦労する繊細なリソース群。公式のテンプレートスニペットやWeb上に公開されているテンプレート達を見ては感じるベストプラクティスはどれですか感。そんな迷えるCloudFormation使い(私)を救うべく、Cloudrulerを作りました。Cloudrulerが提供する機能はざっくり以下の2つです。Rulerというスニペット機能Pluginによるスニペットの配布と利用Rulerというスニペット機能RulerとはChefでいうCookbookのようなものです。Rulerとしてスニペットを定義しておくとTemplateから簡単に呼び出すことが出来ます。以下にサンプルを示します。上記のようなファイルを用意した後、コマンドを実行するとCloudFormationのテンプレートファイルに展開します。trueRulerの良いところは、冗長な記述を排除できるところにあります。上記の例ですと2つのSubnetを用意していますが、Rulerとして定義してあるので、設定の異なる部分のみをDSLとして記述するだけで事足ります。使うリソースの組み合わせをRulerとして定義することで、複雑なAWSのリソース群を構造化出来ます。上記の例では、VPCとInternetGatewayの設定をRulerとして定義しています。新たにチームに加わったメンバーは簡単なDSLを記述するだけで標準的なVPCを構築できますし、いざとなればRulerとして構造化されたリソースを紐解くことも可能です。Rulerを適切に使用することで、DRYにテンプレートを実装可能となり、さらに学習コストを下げることが出来るようになります。Pluginによるスニペットの配布と利用ItamaeのRecipeのように、作成したRulerをPluginとして簡単に配布することができます。社内の他チームに提供することはもちろん、公開されたPluginを再利用することで車輪の再発明を防ぐことが可能になります。自信をもって書くことが出来ればよかったんですが、例によって時間が足りずPluginに関しては現在未実装です。この辺りは私が開発を担当しているプロダクトでドッグフーディングを続けながら、せこせこ改善していこうと思います。いうことで、Cloudrulerの人柱になりIssueを切ってくれる、そんな方に会える日に向け日々是精進。2019に参加してきましたこんにちは。@hatappiです。参加してきました月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。