Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Hashをめぐる冒険
Search
Genki Sugawara
December 08, 2016
Technology
4.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hashをめぐる冒険
Codenize.toolsの今までとこれから、とか
Genki Sugawara
December 08, 2016
More Decks by Genki Sugawara
See All by Genki Sugawara
Poolにおける足を止めないシステム基盤構築
winebarrel
3
8.6k
Ruby for Iac
winebarrel
0
860
pt-osc的何かとマイグレーションのすりあわせについて
winebarrel
3
1.3k
Elixir Meetup #2 Plugのモジュールを一通り使ってみた
winebarrel
2
1.1k
Other Decks in Technology
See All in Technology
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
450
文字起こし基盤の信頼性
abnoumaru
0
120
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
480
AI_Dev_Day_製造業領域でのAI活用から見た活用の罠と成功に導く実践知.pdf
kintotechdev
0
160
GoでCコンパイラを作った話
repunit
0
150
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
600
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.1k
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
740
探索・可視化・自動化を一本化 Amazon Quickでデータ活用スピードを上げる方法
koheiyoshikawa
0
170
穢れた技術選定について
watany
19
6.1k
生成 AI 時代にいま一度「問い合わせ」について考えてみる
kazzpapa3
1
130
AIエージェントがあれば技術書なんてすぐ書けるでしょ→無理でした
watany
2
240
Featured
See All Featured
Docker and Python
trallard
47
4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
300
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
220
ラッコキーワード サービス紹介資料
rakko
1
4M
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Automating Front-end Workflow
addyosmani
1370
210k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Designing for Performance
lara
611
70k
A better future with KSS
kneath
240
18k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
HashΛΊ͙Δݥ Codenize.toolsͷࠓ·Ͱͱ͜Ε͔Βɺͱ͔ Genki Sugawara
$ whoami Author of Codenize.tools github: winebarrel twitter: @sgwr_dts ܙൺणͷํͰಇ͍͍ͯ·͢
Codnize.toolsʹݶΒͣ RubyɾAWSؔ࿈πʔϧΛ࡞͍ͬͯ·͢
ΞδΣϯμ • Codenize.toolsʹ͍ͭͯ • ίʔυԽʹ͍ͭͯ • Codenize.toolsͷ͜Ε͔Β
Codenize.toolsʹ͍ͭͯ
Ξϯέʔτ!
Codenize.tools (ҰԠɺհ) • https://codenize.tools/ • AWSͳͲͷίʔυԽπʔϧू • DatadogMySQLͷπʔϧ͋Γ·͢ • ۀͰࠔͬͨλΠϛϯάͰదʹ࡞
Benefits • ঢ়ଶཧͷ؆қԽ • ΦϖϨʔγϣϯͷ؆қԽ • Gitͱͷ࿈ܞͱϫʔΫϑϩʔ
ྫ: Route53 RoadworkerʹΑΔίʔυԽ hosted_zone "example.com." do rrset "example.com.", "A" do
ttl 300 resource_records( "127.0.0.1" ) end end
Demo or Cut✂
࡞ͷܦҢ 2013/7 Roadworker first commit
࡞ͷܦҢ • ΦϖϛεͰMXϨίʔυ͕ਧͬඈͿ • ChefͬΆ͘DNSΛཧ͍ͨ͠ • Roadworker࡞ • ͍Ζ͍Ζ࡞
Roadworker - Route53 Piculet - Security Groups Kelbim - ELB
Miam - IAM Kumogata2 - CloudFormation Eipmap - Elastic IP Radiosonde - CloudWatch Alarm Meteorlog - CloudWatch Logs Mappru - VPC Route table Bukelatta - S3 Bucket Policy Repol - ECR Repository Policy Cfdef - CloudFront
πʔϧͷϙϦγʔ • εςʔτΛ࣋ͨͳ͍ • ΤΫεϙʔτͰ͖Δ
εςʔτΛ࣋ͨͳ͍ • ϫʔΫϑϩʔ͕γϯϓϧʹͳΔ • ͕͚ɾS3ɾJenkinsෆཁ • ͍ɾRate exceededʢWebαʔϏεʹ͍ͭͯʣ • ࠷ۙɺIAMͷAPIίʔϧ੍ݶ͕ݫͯͭ͘͠Β͍
ΤΫεϙʔτͰ͖Δ • GUIͰ͍͡Γ͍ͨ • AWSউखʹIAMɾSGΛՃ͢Δ
Ͱ͖Δ͚ͩγϯϓϧͳͷΛ ࢦ͍ͯ͠·͢
Roadmap • ALB༻πʔϧͷ࡞ • ࡶEMR༻πʔϧͷ࡞ • PiculetͷϦϑΝΫλϦϯά • CIͷվળʢ͍ɾ͚͜Δʣ
͍͖ͬͯ·͢!
ίʔυԽʹ͍ͭͯ
ίʔυԽʹ͍ͭͯ ͍͍ͩͨ̎छྨ͘Β͍ͷ ҙຯ͕͋Δͱࢥ͍·͢
ίʔυԽʹ͍ͭͯ • ςΩετͰঢ়ଶΛཧ • ႈੑ →ੈؒతʹΞάϦʔ
ίʔυԽʹ͍ͭͯ • ઃఆΛಈతʹ͢Δ →ࢍ൱྆
ίʔυԽʹ͍ͭͯ େ·͔ʹ͚Δͱ… • εΠεΞʔϛʔφΠϑࢮ͢͠ • σʔλهड़ݴޠDSL • ΘΒ͔ઃఆେ͖ • ൚༻ݴޠDSL
جຊతʹલऀ͕ϚδϣϦςΟͩͱࢥ͍·͢
σʔλهड़ݴޠDSL • yamlɾjsonɾhcl • ࠷ۙͩͱtomlʁ
σʔλهड़ݴޠDSL Pros • Մಡੑ͕ߴ͘ͳΔ • ϓϩάϥϚҎ֎ʹॻ͚Δ • ΤϥʔՕॴ͕Θ͔Γ͘͢ͳΔʢͱࢥ͏ʣ
σʔλهड़ݴޠDSL Cons • ϑϩʔ੍ޚͳͲ͕hackyʹͳΔ • yaml++͕Ͱ͖Δ • ςϯϓϨʔτΛ͏ͱຒΊࠐΈεΫϦϓτʹΩϝϥײ
൚༻ݴޠDSL • Ruby…Ҏ֎Կ͔͋Γ·͔͢Ͷ…ʁ • chefɾitamae
൚༻ݴޠDSL Pros • ԿͰͰ͖Δ • γʔϜϨεͳϑϩʔ੍ޚ
൚༻ݴޠDSL Cons • ཚ༻͍͢͠ • Γա͗ΔͱʰઃఆϑΝΠϧʱ͔Βҳ • ϓϩάϥϚҎ֎ʹॻ͖ʹ͍͘ʁ • Θ͔Γʹ͍͘Τϥʔ
• method_missing': undefined local variable or method 'foo'
ίʔυԽʹ͍ͭͯ εΠεΞʔϛʔφΠϑࢮ͢͠ͷ࠷ӈཌྷͰ͋ΔCFn͕ Fn::JoinΛ༻ҙ͍ͯ͠Δͱ͜ΖΛݟΔͱɺ͋Δఔͷಈత͞ʹ ͍ͭͯੈؒతʹΞάϦʔʁ
ίʔυԽʹ͍ͭͯ ͨͿΜΈΜͳΓ͍ͨͷ • ܁Γฦ͠ • ݅ذ • ม • ͪΐͬͱͨؔ͠
• ڥมऔಘͳͲ
ίʔυԽʹ͍ͭͯ ͦͷҰઢΛӽ͑Δͱɺࢍ൱྆ • EC2ΠϯελϯεҰཡ͔ΒDNS࡞ • IPϦετΛμϯϩʔυͯ͠SGઃఆ ͳͲͳͲ
ίʔυԽʹ͍ͭͯ • Codenize.toolsΘΒ͔Ͱ͢ʂ • ͩͬͯˣͷΑ͏ʹॻ͖͍ͨ͠… instances.each do |i| resource_records i.name
+ ".example.com" do • ͱ͍͑Τϥʔʹ͍ͭͯԿͱ͔͍ͨ͠…
গ͕ͦ͠Ε·͢
ؓ ઃఆϑΝΠϧͰಈతͳॲཧΛߦ͏߹ ੩తܕ͖ݴޠ͕͍͍ͯΔؾ͕͠·͢ ઃఆͷద༻ʢධՁʣલʹΤϥʔνΣοΫ͕Ͱ͖ͯ ৺ͷฏԺ͕ΑΓಘΒΕͦ͏ ઃఆͷద༻్தʹϥϯλΠϜΤϥʔ͕ग़ΔͱͭΒ͍
ؓ ͔͠͠ͳ͕Β੩తܕ͖ͷΈࠐΈݴޠ ༨Γݟ͔͚ͳ͍ Golangͷtemplateͱ͔Ͱ {{}} ͷจ๏νΣοΫͯ͘͠Εͯ ؔʹ͢ͷܕ࣮ߦ࣌ͷνΣοΫ…
ؓ AngleScriptͱ͍͏੩తܕ͖ΈࠐΈݴޠ͕͋ͬͨΜͰ͕͢ CScriptBuilder builder; int r = builder.StartNewModule(engine, "MyModule"); if(
r < 0 ) { printf("...\n"); return; }
ؓ ͦΕͳΜͯC++ʢry
ؓ ઃఆϑΝΠϧͰ੩తܕ͖ݴޠΛ͓͏ͱ͓ͬͨΒ Ұ෦ͷؔܕݴޠͷΑ͏ʹ؆ܿͰܕνΣοΫͯ͠Δ͘ΕΔ ΈࠐΈݴޠ͕ඞཁͳΑ͏Ͱ͢ ݚڀʹ͠·͕͢ ͬ͘͞ͱ࣮༻ஈ֊ʹͰ͖ͳͦ͏…
ؓٳ
Codenize.toolsͷ͜Ε͔Β
Codenize.toolsͷ͜Ε͔Β ϩʔυϚοϓઌ΄Ͳ্͛ͨͱ͓Γɻ ͔͕͠͠Ұͭ
ർΕͨ!
ർΕͨ! • CIͭΒ͍ • ٕज़తͳֶͼ͕গͳ͍
CIͭΒ͍ • ओʹAWSͷͰ͢ • CI࣮ࡍͷAWSͰςετ • ͍ • πʔϧಉ࢜ͷڝ߹ •
CIڥ࡞ΓͮΒ͍
͍ ͋Δఔํͳ͍ΜͰ͕͢ • ૣ͘͢ΔˠRate exceededʹҾ͔͔ͬΔ • ࠷ۙɺͳΜ͔ݫ͘͠ͳͬͨΑ͏ͳ… • ฒྻԽ͢Δˠςετ͕ڝ߹͢ΔͷͰΞΧϯτ͍ͬͺ͍ඞཁ •
ݱࡏɺॴ༗ΞΧϯτ̎ݸ • ͜ΕҎ্૿͢ͷͭΒ͍!
πʔϧಉ࢜ͷڝ߹ • roadworker CI • ελϒͱͯ͠ELBͳͲඞཁ • kelbim CI •
ELBશ෦ফ͢ • miam CI • IAM શ෦ফ͢ ಉ͡ΞΧϯτͰฒྻͰςετΔͱഁ໓
CIڥ࡞ΓͭΒ͍ • TravisCIͬͯ·͢ɻମྗඞཁ • σόοά • Rete exceededରࡦ • ԼखʹΫϨσϯγϟϧΛ͓͚ͳ͍
• encrypt key͑Δ͚ͲPRͰಈ͔ͳ͍ • ಛʹmiam͕͍
CIڥ࡞ΓͭΒ͍ APIݺͼ͗͢ഁ࢈ରࡦ์غͯ͠·͢…
CIͭΒ͍ ࠓޙʹ͍ͭͯϞοΫͷςετΛ૿ͦ͏ͱࢥͬͯ·͕͢ ͬͱ͍͍ιϦϡʔγϣϯ͋Δͱ͍͍ͳ͊ |ωɾ`ʣνϥ
ٕज़తͳֶͼ͕গͳ͍ Codenize.toolsͷΈ
Codenize.toolsͷΈ Apply • API→Hash • DSL→Hash • Hashಉ࢜Λൺֱ • ࠩΛຒΊΔAPIΛͨͨ͘
Codenize.toolsͷΈ Export • API→Hash • Hash→DSL
ͪΐ͏͔ΜͨΜΜ ʢ಄ΛΘͳ͍ʣ
ͩΔ͍ • ຖಉ͡Α͏ͳΫϥεΛॻ͘ͷ͕ͩΔ͍ • DSLΫϥεॻ͘ͷ͕ͩΔ͍ • όϦσʔγϣϯ͕ͩΔ͍
ରͩΔ͍ • DSLʹ͍ͭͯઐ༻ͷϥΠϒϥϦΛॻ͍ͨ • https://github.com/winebarrel/dslh • DSL→HashɾHadh→DSLͷ૬ޓޓ͕Մೳ • ͔͠͠όϦσʔγϣϯ͕Ͱ͖ͳ͍…
ରͩΔ͍ • yamlͷόϦσʔλʔ͋ͬͨ • Kwalify type: map mapping: "name": type:
str required: yes "age": type: int
ରͩΔ͍ • Dslh͕ੜͨ͠Hashʹରͯ͠όϦσʔγϣϯ • όϦσʔγϣϯ࣮Ͱ͖ͨ • ͋Εɺ͜ΕΖΖࣗಈԽͰ͖ΔΜ͡ΌͶʁ
https://github.com/ winebarrel/codenize
codenize • Codenize.toolsͷܗΛੜ • API→Hashͷ࣮Λ͢Ε͍͍ͩͨͰ͖Δ • Ruby DSLͷ࣮ෆཁ • όϦσʔγϣϯͰ͖Δ
Demo
࣮ྫ ecman - EasyCronͷίʔυԽπʔϧ - https://github.com/winebarrel/ecman/commit/ 941555eee0ca59894efc9b3b3b52e8e66b5a63fa
Έͳ͞ΜͲΜͲΜ Codenize͢ΔͱΑ͍ͱ ͓͍·͢
࠷ޙʹ PRɾIssue͓ͪͯ͠·͢! • ຊޠͰେৎͰ͢ • όάͷ߹ɺΤϥʔڥͱ࠶ݱίʔυ͕͋Δͱॿ͔Γ·͢
͓ΘΓ https://suzuri.jp/winebarrel/591154/t-shirt/s/white