私はこれでjsonをやめました〜あるいはawsの設定をコード化するとはどういうことか〜...

29
؋ׯبKTPO ؠخ׳ ؋נاמBXT ؊崎ڋنخا؋ענעׯ קcz! Nbtbtij!Ufsvj!bu!KBXT.VH!Tbqqpsp!$2:

Upload: terui-masashi

Post on 23-Feb-2017

1.617 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
Page 2: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

2

Page 3: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

Cloud Formation

3

インフラをJSONテンプレート化 再利用可能な再現性のあるインフラ 自動化された一括デプロイメント 大量にあるAWSのサービス・機能の大部分をカバー

近ではGUIで図から作れる機能なんかも出ましたね

Page 4: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

4

Page 5: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

5

Page 6: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

Masashi Terui @ marcy_teruiI’m a Developer and Cloud Architect.

I’m a full-time employee at JIG-SAW Inc. But, I’m a part-time freelancer. I’m a member of JAWS-UG and GCPUG and MyNA←New!!

I’m around 30 years old. I’m a father of my son and daughter. https://willy.works/

6

Page 7: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

7

Page 8: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

JSON is

ツラい

8

人に優しくない構文

オブジェクトは必ず中括弧で囲む

要素間はカンマが必要だが、末尾には付けてはいけない等など 静的な記述

JSONはInfrastructure as Codeなのか? 表現力に限りがある

CloudFormation専用の特殊な記述(RefとかFn::Hogeとか)

Page 9: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

9

Page 10: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

10

Page 11: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

11

Page 12: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

12

Page 13: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

13

Page 14: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

Chef is 何

14

Infrastructure as Codeブームの火付け役

サーバの設定をコード化

Ruby DSLによる優れた表現力

高い再利用性

抽象化 ※概念や周辺ツールが多くて複雑みたいな話はここでは置いておこう

Page 15: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

15

Page 16: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

16

Page 17: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

Kumogata

17

CloudFormationをJSON以外で書いて、相互変換を行う

Ruby DSL

YAML

JavaScript, Coffee Script etc…

デプロイするためのコマンドラインツールとしての機能が付属

現在はVersion 2へ移行

Change Sets(プレビュー的な機能)対応

Plugin方式でフォーマットを増やせる

Page 18: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

18

require './funtions'

Resources do VPC do Type "AWS::EC2::VPC" Properties do CidrBlock "10.0.0.0/16" EnableDnsHostnames true Tags [env_tag("production")] end end _include 'subnets.rb' _include 'gateway.rb' _include 'routetable.rb' end

Page 19: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

19

Page 21: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

色々 あるよ

21

Dry runで差分プレビューできるのがめっちゃ便利(Kumogataは無いけど、v2ならChange Setsで代替) よく変更するものほどメリットが高いと思います とりあえず、自分でよく使うやつ Roadworker - Route53 Piculet - Security Groups Miam - IAM

Page 22: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

何が 嬉しい?

22

プルリクマージで反映等といった自動化フローが作りやすい

複数のファイルに分割可能

複雑な記述や冗長な記述を回避できる

変数やメソッドを利用して簡易な表現に こういうのがInfrastructure as Codeって言うんちゃう?

Page 23: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

23

Page 24: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

24

Page 25: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

25

Page 27: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

作った 動機

27

API Gatewayの設定が面倒

Swagger取り込みでだいぶマシになるが、冗長な表現も多い

俺達(俺)は書いたコードをサクッと上げてサクッとAPI公開

したいだけなんだ!!1

詳しくは→ http://marcy.hatenablog.com/entry/2016/06/02/133228

Page 28: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜

まとめ

28

JSONの手書きツラい

JSON以外で書くという選択肢

便利なツールはシェアしよう。そして、作ってみよう。

CloudFormationをdisってるわけではない

むしろ、誰かがツール作ることを見越してJSONなのでは?

Page 29: 私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜