Upgrade to PRO for Only $50/YearâLimited-Time Offer! ð¥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CDN in Moneyforward
Search
suzuki_yosuke
July 24, 2018
Technology
1
160
CDN in Moneyforward
CDN strategy required for FinTech service
suzuki_yosuke
July 24, 2018
Tweet
Share
More Decks by suzuki_yosuke
See All by suzuki_yosuke
Logging infrastructure for CDN
syosuke1024
0
110
Coding CDN in Moneyforward
syosuke1024
5
8.4k
Fastly log visualization
syosuke1024
2
840
Other Decks in Technology
See All in Technology
Database ã€ãããŒã·ã§ã³ããŒã¯ãæ¯ãè¿ã/reinvent-2025-database-innovation-talk-recap
emiki
0
170
幎é40件以äžã®ç»å£ãç¶ããŠèŠãããæ¬åœã®çºä¿¡åã/ 20251213 Masaki Okuda
shift_evolve
PRO
1
130
AIé§åéçºã«ãããèšèšææ³ èªç¥è² è·ãäžããããã³ããšã³ãã¢ãŒããã¯ãã£/ 20251211 Teppei Hanai
shift_evolve
PRO
2
380
[ãã¢ã§ã] NotebookLM ã§äœã£ãã¹ã©ã€ãã®äŸ
kongmingstrap
0
140
AIãšäºäººäžèã§è²ãŠããå人éçºã¢ããªã°ããŒã¹è¡
zozotech
PRO
1
730
AWS CLIã®æ°ããèªèšŒæ å ±èšå®æ¹æ³aws loginã³ãã³ãã®å®æ
wkm2
6
740
Power of Kiro : ããªãã®ãã¯ããã¯ã¹ãæèŒãŠãããïŒ
r3_yamauchi
PRO
0
140
AWS Security Agentã®ç޹ä»/introducing-aws-security-agent
tomoki10
0
240
çæAIã§ãã¹ãèšèšã¯ã©ããŸã§ã§ããïŒ ããã¹ãç²åºŠããæãããŒã©ãªã³ã°è¡
shota_kusaba
0
760
Haskell ãæŠåšã«ããŠæãç«¶æããã°ã©ãã³ã° â æäœçæèããæå³ã¢ãã«æèãž
naoya
6
1.5k
MLflowã§å§ããããã³ãã管çãè©äŸ¡ãæé©å
databricksjapan
1
220
ä¹ãããªãAIé§åéçºã®æ³¢
eltociear
1
1.1k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.7k
BBQ
matthewcrist
89
9.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Adaptive Systems
keathley
44
2.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Storybookã®UI Testing Handbookãèªãã
zakiyama
31
6.4k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
MoneyForward,Inc. 2018/7/24 CDN in MoneyForward. FinTechãµãŒãã¹ã«æ±ããããå®å šãã€æè»ãªCDNæŠç¥ Yosuke Suzuki
Introduction 2 Yosuke Suzuki ãMoney Forward Financial,Inc. ⢠Career âŠ
2005~2008 Fujitsu FIP, Inc. ⊠2008~2014 Simplex Technology, Inc. ⊠2015~2016 American Family Life Assurance Company ofã Columbus( Aflac ) ⊠2017.01~2018.05 Money Forward, Inc. ⊠2018.06~ Money Forward Financial, Inc ⢠SNS ⊠@syou1024(twitter) © Money Forward,Inc.
ãããŒãã©ã¯ãŒãã®ãçŽ¹ä» 3
Mission/Vision/Value å人ã®ãéã®æ©ã¿ãäžå®ã®è§£æ¶ãäºæ¥è ã®çµå¶æ¹åã«è²¢ç®ãã æ¥æ¬ã§No1ã®ããéã®ãã©ãããã©ãŒã ãã«ãªãããšãç®æããŠããŸãã Mission ãéãåãžã人çããã£ãšåãžã ããéãã¯ã人çã«ãããŠããŒã«ã§ãããããŸããããããããéããšã¯ãèªèº«ãšå®¶æã®èº«ãå®ãããããŸã倢ãå®çŸããããã«å¿ èŠäžå¯æ¬ ãªååšã§ããã㟠ãã ç§ãã¡ã¯ããéãšååãã«åãåããå¯èœæ§ãåºããããšãã§ããããµãŒãã¹ãæäŸããããšã«ããããŠãŒã¶ãŒã®äººçãé£èºçã«è±ãã«ããããšã§ãããè¯ã 瀟äŒåµãã«è²¢ç®ããŠãããŸãã Vision
ãã¹ãŠã®äººã®ãããéã®ãã©ãããã©ãŒã ãã«ãªãã ãªãŒãã³ãã€å ¬æ£ãªããéã®ãã©ãããã©ãŒã ããæ§ç¯ããããšãæ¬è³ªçãªãµãŒãã¹ãæäŸããããšã«ãããåäººãæ³äººãã¹ãŠã®äººã®ãéã®èª²é¡ã解決ã㟠ãã Value User Focus ç§ãã¡ã¯ããããªãå¶çŽããã£ããšããŠããåžžã«ãŠãŒ ã¶ãŒãèŠã€ãç¶ããæ¬è³ªçãªèª²é¡ãçè§£ãããŠãŒã¶ãŒ ã®æ³åãè¶ ãããœãªã¥ãŒã·ã§ã³ãæäŸããŸãã Technology Driven ç§ãã¡ã¯ããã¯ãããžãŒãããäžçã倧ããå€ããããš ãã§ãããšä¿¡ããŠããŸãããã¯ãããžãŒã远æ±ãããã ããµãŒãã¹ãšããŠç€ŸäŒãžæäŸããŠããããšã§ãã€ãã㌠ã·ã§ã³ãèµ·ããç¶ããŸãã Fairness ç§ãã¡ã¯ããŠãŒã¶ãŒã瀟å¡ãæ ªäž»ã瀟äŒãªã©ã®ãã¹ãŠ ã®ã¹ããŒã¯ãã«ããŒã«å¯ŸããŠãã§ã¢ã§ããããšããªãŒã ã³ã§ããããšãèªããŸãã 4
äž»èŠãµãŒãã¹ BtoC(å人åã)ã»BtoB(æ³äººåã)ã®äž¡é åã§ãµãŒãã¹ã©ã€ã³ããããæ¡å ã
話ãããšãæã¡åž°ã£ãŠé ãããã㚠© Money Forward,Inc. 6 話ãã㚠⢠ãããŒãã©ã¯ãŒãã®ãµãŒãã¹ã«ãããCDNèŠä»¶ ⢠ãªãfastlyãªã®ãïŒ
⢠ã³ã³ãã£ã°ã¬ãŒã·ã§ã³å ·äœäŸ ⢠ã³ã³ãã£ã°ã®ãããã€ã¡ã³ãã®èªååäºäŸ ⢠ä»åŸãfastlyã䜿ã£ãŠããããã㚠⢠fastlyã§äžè¶³ããäº æã¡åž°ã£ãŠé ãããã㚠⢠CDNãå®å šã«å°å ¥/éçšããããã®èæ ®ç¹ â¢ fastlyå°å ¥ããå Žåã®ãããã€ã¡ã³ãèªååã®èæ ®ç¹
ãããŒãã©ã¯ãŒããæ¬²ããCDNã¯ïŒ 7
軜ããµãŒãã¹ã玹ä»ããŸãã 8
PFMãµãŒã㹠人ã ã®ã©ã€ãã¹ããŒãžã«æ²¿ã£ãŠèµ·ãããéã®èª²é¡ãã âå人ã®ãéâ ãšããé åã§å€ãã®ãŠãŒã¶ãŒãšè€æ°ã®æ¥ç¹ãæã¡ãªããã 人çã«å¯ãæ·»ã£ãŠè§£æ±ºããŠãããµãŒãã¹ãæäŸããŸãããããŠã ãã¹ãŠã®äººã®äººçããã£ãšåã«é²ããŠãããããšèããŠããŸãã å人ã®ãããããéã®äžå®ããªããã 人çããã£ãšåãžã
2,650瀟以äžã®éèé¢é£ãµãŒãã¹ ã«å¯Ÿå¿ãéèæ©é¢å¯Ÿå¿æ°åœå No.1 â»ïŒ 飿ºããå£åº§ããèªåã§ããŒã¿ã ååŸãåé¡ãã°ã©ãåããŸãã ã¬ã·ãŒããæ®åœ±ããã ãã§ã æ¯åºã®å 容ãåæ ã§ããŸãã å£åº§é£æº èªååé¡ ã¬ã·ãŒãæ®åœ±
*åœç€Ÿèª¿ã¹ (2018幎6ææ«æç¹) ããããŒãã©ã¯ãŒããã®ç¹åŸŽ
èªåå®¶èšç°¿ã»è³ç£ç®¡çãµãŒãã¹ããããŒãã©ã¯ãŒãã å®¶èšç°¿ã¢ããªã·ã§ã¢No.1ãå©çšè æ°ã¯650äžäººãçªç Ž(2018幎1æ)ãã å®¶èšç°¿ã¢ããªå©çšè ã®çŽ4人ã«1人ã¯ããããŒãã©ã¯ãŒãããå©çšã
SaaSãã©ãããã©ãŒã ãMFã¯ã©ãŠãã·ãªãŒãºã ããã¯ãªãã£ã¹æ¥åã«ãããé åãå æ¬çã«ã«ããŒãããµãŒãã¹ãæäŸããäŒæ¥å ãSaaS(*) åãµãŒãã¹ãã©ãããã©ãŒã ã *SaaSïŒSoftware as a Serviceã®ç¥ç§° (以äžå) ã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ã®æ®åãèæ¯ã«ããããŸã§å€é¡ã®åææè³ãå¿ èŠãšããŠããã·ã¹ãã ã
SaaS 圢æ ã§æäŸããããšã§ãå°èŠæš¡äºæ¥è ããå€§äŒæ¥ãŸã§ãã¹ãŠã®äºæ¥è ã« IT ã®æ©æµããããããŸãã
AI(人工ç¥èœïŒã§ ä»èš³ã«ãŒã«ãåŠç¿ 3,600以äžã®å£åº§ãã ååŒããŒã¿ãèªåååŸ åœå No.1 ã®å¯Ÿå¿æ° ååŒæçŽ°ã®èªåååŸ äººå·¥ç¥èœã§åŠç¿ ãã«ãããã€ã¹ æ§ã ãªããã€ã¹äžã§
å©çšå¯èœ â» â»åœç€Ÿèª¿ã¹ (2016幎12ææ«æ¥ç¹) MFã¯ã©ãŠãäŒèšã®ç¹åŸŽ ããããããäŒèšäœæ¥ãèªååããçç£æ§ãå€§å¹ ã«äžãã
äŒèšäºåæå°å ¥å®çžŸ äŒèšäºåææ§ã«ãå©çšããã ãäŒèšãœãããšããŠNo.1ã·ã§ã¢ç¢ºçãç®æãã å šåœåå°ã®3,000ãè¶ ããäŒèšäºåææ§ã«ãå©çšããã ããŠãããŸãã
ãµãŒãã¹ã®ç¹æ§ 15 ⢠PFMãµãŒãã¹ã§ã650äžãŠãŒã¶ãæ°åäžãªã¯ãšã¹ã/æ¥ã ⢠æ®ã©ã®ããŒãžã¯ãŠãŒã¶æ¯ã®ããŒãžã ⢠æ±ã£ãŠããæ å ±ã¯ã»ã³ã·ãã£ãã ⢠ãŠãŒã¶ã«ã»ãã¥ãªãã£ã®äžå®ãæ±ãããã ãã§ãNGã
⊠CDNã«ãããã¡ãªé害ãä»äººã®ãã£ãã·ã¥èŠããããªããŠèµ· ããããäŒç€Ÿåç¶ã®å±æ©ã絶察é¿ããã ã€ãŸãã CDNã«åããŠããªã(ãšäžè¬ã«æããã) ãµãŒãã¹çŸ€ã
ãããŒãã©ã¯ãŒãã«æ±ããããèŠä»¶ 16 CDNãå ¥ããŠã ⢠ãµã€ããé«éåãããã ⢠ãµãŒãã®è² è·è»œæžãããã ⢠ã§ãç¡éã«ãã£ãã·ã¥ãããã«äºæ ã¯çµ¶å¯Ÿé¿ããã
ãªããfastlyãªã®ãïŒ 17
fastlyã®æ¡çšçç± 18 ⢠ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãè¶ æè» ⢠ãã£ãã·ã¥ã®åé€ãè¶ é«é ⢠ã³ã³ãã£ã°äŒæ¬ãè¶ é«é ⢠APIã§å šãŠã®æäœãå¯èœ
ãâšãããå šãŠãæéèŠ
ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãè¶ æè» 19 ⢠fastlyã®ããã¯ãšã³ãã¯varnishã ⢠VCL(varnish configuration Langege)ã§æè»ã«å®çŸ©å¯èœã ⢠ãã£ãã·ã¥ã®æ¡ä»¶ãæè»ã«å®çŸ©ã§ããã
⢠以äžãORæ¡ä»¶ãANDæ¡ä»¶ã§çµã¿åãããŠããã£ãã·ã¥å¯Ÿè±¡ã å¶éã ⊠URLã®ãã¡ã€ã³åãæ¡ä»¶ã«åœãŠã¯ãŸããïŒ âŠ URLã®ãã¹ãæ¡ä»¶ã«åœãŠã¯ãŸããïŒ âŠ URLã®æ¡åŒµåãæ¡ä»¶ã«åœãŠã¯ãŸããïŒ âŠ ãªã¿ãŒã³ã³ãŒããæ¡ä»¶ã«åœãŠã¯ãŸããïŒ âŠ ããããŒæ å ±ãæ¡ä»¶ã«åœãŠã¯ãŸããïŒ â¢ æå³ããªããã£ãã·ã¥ãç¡ãããäºæ ãé¿ããã ⢠æ¡ä»¶ãå³ããããšã§ãå®å¿ããŠã¢ããªéçºã§ããã
ãã£ãã·ã¥ã®åé€/ã³ã³ãã£ã°äŒæ¬ãè¶ é«é 20 ⢠誀ã£ããã£ãã·ã¥ãåºæ¥ãŠããŸã£ãå Žåã«ãçŽ æ©ãåé€ã§ããã çŽ æ©ãèšå®ã倿Žã§ããããšã倧å ⢠äžè¬ã«CDNã®ãã£ãã·ã¥åé€ãã³ã³ãã£ã°äŒæ¬ã¯æéããã ãã ⊠è£ã«ã¯äžçååœã®ãšããžãµãŒããããã
⢠fastlyã¯ãã£ãã·ã¥åé€ãã³ã³ãã£ã°äŒæ¬ãå§åçã«éãã ãã£ãã·ã¥åé€ ã³ã³ãã£ã°äŒæ¬ fastly éšåããŒãžãªã150ããªç§ (å šãã£ãã·ã¥ããŒãžã§ã 10ç§çšåºŠãäžå·¥å€«ãã ãšãå šãã£ãã·ã¥ããŒãžã 150ããªç§) æ°ç§ãåæ°ç§ ä»ç€ŸäºäŸ A瀟â 90%ã«å¯ŸããŠ5ç§ã§ãå šäœã«ã¯1å A瀟â¡ä»å¹Ž5æãã5ç§ã«ãªã£ãã (ã©ã¡ããéšåããŒãžãããã§ãçžåœæ©ããªã£ãïŒ åæ°åãããã
APIã§æäœå¯èœ 21 ⢠APIãã¡ãŒã¹ãã®éçºãªã®ã§ãå šãŠã®å€æŽãAPIã§å¯èœã ⢠ã€ãŸããå ã«äžããäœæ¥ãèªååã§ããã ⢠Chatbotã䜿ã£ãŠãSlackãããã£ãã·ã¥åé€ãªããŠããšãå®è£ å¯èœ âŠ
æ°è»œéããã®ãæããŠããããã©ã§ã¯ãããŸã§ãã£ãŠããŸããã ⢠ãã ãJenkinsã®ãžã§ããå®è¡ãããããã£ãã·ã¥åé€ãã³ã³ã㣠ã°å€æŽ&ããŒã«ããã¯ãã¡ã³ããã³ã¹ããŒãžãžåãæ¿ããšãã§ã ãã
fastlyã®æ¡çšçç±ãŸãšã 22 ⢠ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãè¶ æè» âšã»ãã¥ãªãã€äºæ ã®ãªã¹ã¯ãäœæžããã ⢠ãã£ãã·ã¥ã®åé€ãè¶ é«é ⢠ã³ã³ãã£ã°äŒæ¬ãè¶ é«é âšäºæ çºçæã®ãªã«ããªãçŽ æ©ãè¡ããã
⢠APIã§å šãŠã®æäœãå¯èœ âšäžèšãèªååããã
å°ã話ãå€ãããŸãã Question. ããã£ãã·ã¥ã®æ¡ä»¶å³ããããŠã ãã£ãã·ã¥ãããçäœããªããªããïŒã ãããªçåãããŸããã§ãããïŒ 23
ãã®éããäœãã§ãã ãªã¯ãšã¹ãå šäœã®9%~30%ã 24 ãããã©ã®äœ¿ãæ¹ãç¹æ®ã§å³ãéããã ãã§ã fastlyèªäœã¯é«ãã£ãã·ã¥ãããçã売ãã®ãµãŒãã¹ã§ãã 誀解ç¡ãããã«ã
25 ã§ã倧äžå€«ã ãã©ãã£ãã¯æ¯çã§è©äŸ¡ãããšå€ããã å šäœã®55%~99%ã®ãã©ãã£ãã¯ãåæž
Answer ããã£ãã·ã¥ãããçã¯äœãããã ãã©ãã£ãã¯ã«å ããå²åã¯é«ãã ååãªå¹æããã£ãã ãŸãããµãŒãã¹ã®ç¹æ§ãèŠæ¥µããããšå€§äºïŒ 26
ã³ã³ãã£ã°ã¬ãŒã·ã§ã³å ·äœäŸ 27
ãã£ãã·ã¥å¶åŸ¡ © Money Forward,Inc. 28 ⢠/assets/ããå§ãŸããªã¯ãšã¹ã以 å€ã¯403ã§è¿ãã ⢠æ¡åŒµåjpg,pngããã€ãããã¯ãš
ã³ãã®ãªã¿ãŒã³ã³ãŒãã200ã®å Ž åãTTL3æéã§ãã£ãã·ã¥ã»ã ãã ⢠ãã以å€ã®ãªã¯ãšã¹ãã¯ãã£ã ã·ã¥ããªãã sub vcl_recv{ if (req.url !~ "^/assets/â) { error 403 "Forbidden"; } } sub vcl_fetch { if((req.url.ext ~ "(?i)^(jpg|png)$"\ && beresp.status == 200)) { set beresp.ttl = 10800s; set beresp.grace = 10800s; return(deliver); # Cache Setting } return(pass); # Not Cache Setting }
ãã£ãã·ã¥æå¹ç¡å¹åãæ¿ã © Money Forward,Inc. 29 ⢠chache_modeããŒãã«ã®ãstatusã ãoffã®æã¯ãã£ãã·ã¥ããªã ⢠chache_modeã®valueã¯ãREST
APIã䜿ã£ãŠç°¡åã«å€æŽå¯èœã§ãç°¡å ã«ON/OFFãåãæ¿ããããã table cache_mode { "status": "off" } vcl_fetch { # Cache Switch if ( table.lookup(cache_mode, "status") == "off" ) { return(pass); } return(deliver); }
ããããŒã³ã³ãããŒã«(ResponsHeader) © Money Forward,Inc. 30 table domane_list { "sample1.example.com": "true",
"sample2.example.com": "false" } sub vcl_deliver { if ( table.lookup(domane, req.http.host) == "true" ) { set resp.http.X-Robots-Tag = "noindex"; } return(deliver); } ⢠ãªã¯ãšã¹ããã¡ã€ã³ãdomain_list ããŒãã«ã®valueã§trueã ã£ã ããã¬ã¹ãã³ã¹ããããŒã«noindx ããããŒãèšå®ããã ⢠ããã§ç¹å®ã®ãã¡ã€ã³ãæ€çŽ¢ãã ãªãããã«åºæ¥ãã
ããããŒã³ã³ãããŒã«(RequestHeader) © Money Forward,Inc. 31 table app_code_map { "sample1.example.com": "AP001",
"sample2.example.com": "AP002" } sub vcl_recv { set req.http.X-App-Type =\ table.lookup(app_code_map, req.http.host); return(lookup) } ⢠ããã¯ãšã³ããžã®ãªã¯ãšã¹ããã ããŒã«ç¹å®ã®ããããŒãããã ãŠäžããããšãåºæ¥ãã ⢠ãã¡ã€ã³åã«ãã£ãŠä»äžãããã ããŒã倿ŽããŠãããã¯ãšã³ãã® ã¢ããªã®æåãå€ããŠãã
ã¡ã³ããã³ã¹ããŒãžåãæ¿ã © Money Forward,Inc. 32 ⢠ãsample1.example.comãã¯true㪠ã®ã§ãSorryçšã®ããã¯ãšã³ãã«æ¯ãå ããSorryããŒãžãèŠããã â¢
ãsample2.example.comãã¯false㪠ã®ã§ãããã¯ãšã³ããã®ãŸãŸã§ãéåžž ã®ããŒãžãèŠããã ⢠mainte_flagã®valueã¯ãREST API ã䜿ã£ãŠç°¡åã«å€æŽå¯èœã§ãç°¡åã« SorryããŒãžã«åãæ¿ããããã ⢠æ¡ä»¶ã«ClientIPãæå®ããŠäžããŠãç¹ å®ã®IP以å€ããã¯Sorryãšããããšã å¯èœãéçºäžã®ãµã€ãã®éä¿¡å¶åŸ¡ãª ã©ã«ã䟿å©ã # Sorry Page Setting table mainte_flag { "sample1.example.com": "true", "sample2.example.com": "false", } vcl_recv { if ( table.lookup(mainte_flag, req.http.host)\ == "true" ) { set req.http.host = "sorry.example.com"; set req.backend = F_sorry_host; } return(pass); }
ãããã€ã¡ã³ãã®èªåå 33
ãããªã·ã¹ãã æ§æ © Money Forward,Inc. 34
ããããžã§ãã³ã°ããŒã«ã®éžæè¢ © Money Forward,Inc. 35 ⢠ansibleïŒ âŠ ãããŸãã âŠ
https://github.com/Jimdo/ansible-fastly ⢠terrafformïŒ âŠ ãããŸãã ⊠https://www.terraform.io/docs/providers/fastly/index.html ⢠ä»ã«ã¯ïŒ ⊠Cookpadã®@sora_hãããéçºããcodilyãšããããŒã«ãããã ⊠https://github.com/sorah/codily ⊠rubyã®DSLã䜿ããã
Question: ã©ã䜿ã£ããããã®ãïŒ 36
Answer: fastlyã§ããããããšæ¬¡ç¬¬ã fastlyã®ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ã®åé¡ãšå ±ã«ã ããããã®ç¹åŸŽã説æããŸãã 37
fastly ã®Configurationã¯3åé¡ããã(åã®åæãªåé¡ã © Money Forward,Inc. 38 ⢠ç°å¢èšå® ⢠ã€ãã³ãèšå®
â¢ ç¶æ èšå® ããããã©ã䜿ããããã§ãããããžã§ãã³ã°ããŒã«ã決ãŸããŸãã
ç°å¢èšå® © Money Forward,Inc. 39 ã·ã¹ãã æ§æã«å¯Ÿããèšå® ⢠ãã¡ã€ã³å ⢠ããã¯ãšã³ãã®ã¢ãã¬ã¹
⢠ãã«ã¹ãã§ã㯠⢠ããŒããã©ã³ã·ã³ã°èšå® ãªã© # origine and helth check backend server1 { ã.connect_timeout = 3s ã.port = "1443"; .host = "server1.example.com"; .ssl = true; .ssl_cert_hostname = "server1.example.com"; .ssl_check_cert = always; (ç¥) .probe = { .request = "GET /health_check.html" .timeout = 3s; .expected_response = 200; .interval = 15s; (ç¥) } }
ã€ãã³ãèšå® © Money Forward,Inc. 40 ã€ãã³ãçºçæã®ã¢ã¯ã·ã§ã³ãå®çŸ©ããã ã€ãã³ãäŸ â¢ ããã¯ãšã³ãããããŒã¿åã£ãŠãã éãæ¡åŒµå.jpgã.pngã¯ãã£ãã·ã¥
3h ⢠ãªã¯ãšã¹ãåãä»ããããç¹å®ã®IP ãããªã¯ãšã¹ãããã㯠# jpg & png CacheSetting sub vcl_fetch { if((req.url.ext ~ "(?i)^(jpg|png)$")) { set beresp.ttl = 10800s; set beresp.grace = 10800s; return(deliver); # Cache Setting } return(pass); # Not Cache Setting } # Blacklist acl black_list { â10.192.80.20â/32; # tekitou ip#1 } sub vcl_recv { if( client_ip ~ black_list ){ error 403 "Forbidden"; } }
ç¶æ èšå® © Money Forward,Inc. 41 ⢠ãã©ã°çã®äžæçãªèšå® ⊠ã¡ã³ããã³ã¹ãã©ã° âŠ
ãã£ãã·ã¥ON/OFFãã©ã° ⢠APIäžã€ã§ç°¡åã«Key,Valueã远å ã åé€ã倿Žå¯ ⢠fastlyçšèªã§dictionay äŸ â¢ mainte_flagããŒãã«ã«å¯Ÿã ãã¡ã€ã³åãKeyã«ValueãååŸãtrue㪠ãããã¯ãšã³ããSorryçšã® ãã¹ãã«å€ãã # Sorry Page Setting table mainte_flag { "sample1.example.com": "true", "sample2.example.com": "false", } vcl_recv { if ( table.lookup(mainte_flag, req.http.host)\ == "true" ) { set req.http.host = "sorry.example.com"; set req.backend = F_sorry_host; } return(pass); }
ã€ãã³ãèšå®ã®èšå®æ¹æ³ã¯ïŒã€ã«åãããã © Money Forward,Inc. 42 ⢠SnippetïŒèšå®ã¯ç°¡åãè€éãªããšåºæ¥ãªãã ⊠èšå®è£å©ã«ãããç°¡æã«èšå® âŠ
èšèŒæ¹æ³ã«å¶éã¯ãã ⊠ã¢ã¯ã·ã§ã³ãäžã€äžã€å®çŸ©ããå¿ èŠããã ⪠ããããããŒãä»ããŠããããã£ãã·ã¥1æéä¿æ ⪠IPããã©ãã¯ãªã¹ãã«ãã£ããããã㯠⊠gitãªããžããªã§ç®¡çãããšãäŸåé¢ä¿ãåããã¥ãã ⢠Custome VCL (ãªã¹ã¹ã¡)ïŒè€éãªããšãããããã°ã³ã㩠⊠ã³ã³ãã£ã°ãèªç±ã«èšèŒåºæ¥ãè€éãªèšå®ãå¯èœ ⊠ã¢ã¯ã·ã§ã³ãè€æ°ãŸãšããŠå®çŸ©åºæ¥ã ⊠gitãªããžããªäžã§ã³ã³ãã£ã°ã§å šäœã®å®çŸ©ãææ¡ãããã
ããããžã§ãã³ã°ããŒã«ã§åºæ¥ãã㚠© Money Forward,Inc. 43 ããŒã«å ç°å¢èšå® ã€ãã³ãèšå® ç¶æ èšå® â»
Snippet Custom VCL ansible ⊠⊠à à terrafform ⊠à ⊠à codily ⊠à ⊠⊠⻠key,valueã®å€ãå ¥ããã®ã¯ãã©ããç¡çã ã codilyãããŒãã«ã®å®çŸ©ãŸã§ã ã ãããããããã©ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ããã®æ¹ãå¬ããã ã (ç¶æ ã倿Žããã®ã«ãããããžã§ãã³ã°ãªããŠããããªã)
çŸæç¹ã§ãfastlyã䜿ãåããªãCodilyããªã¹ã¹ã¡ (äžéšèšå®ãäžèŠãšå²ãåããã°ãã奜ããªãã®ãã©ãã) © Money Forward,Inc. 44
Codilyã䜿ã£ãããããžã§ãã³ã° in ãããã© (å€åãæéåãã§é£ã°ãã®ã§ããåèã«â ) © Money Forward,Inc. 45 service "eample"
do domain "sample1.example.com" domain "sample2.example.com" backend "my backend" do address "server.example.com" end vcl "Main" do content file: "./vcl//main.vcl" main true end dictionary "mainte_flag" end ç°å¢èšå®ã¯codlyã®DSLã«å®çŸ© ã€ãã³ãèšå®ã¯ã«ã¹ã¿ã VCLãã¿æžãã codilyããåŒã³åºãã®ã¿ ç¶æ èšå®ã¯ãç®±ã ãäœæ $ codily --apply -f recipe.rb recipe.rb
Codilyã®Recipe ãã¹ããã©ã¯ãã£ã¹ (å€åãæéåãã§é£ã°ãã®ã§ããåèã«â¡) © Money Forward,Inc. 46 recipe | ---
recipe.rb ïŒ codilyã§æå®ããDSLãã¡ã€ã« | --- variables ïŒ ã¬ã·ãã§å©çšãã倿°ãèšå® | `--- service_1.rb ïŒ ãµãŒãã¹1ã®å€æ°å®çŸ©ãã¡ã€ã« | `--- service_2.rb ïŒ ãµãŒãã¹2ã®å€æ°å®çŸ©ãã¡ã€ã« ` --- vcl ïŒ ã¬ã·ãããåŒã³åºãVCL | --- common ïŒ å ±éå©çšããVCLãä¿å | --- service_1ã ïŒ ãµãŒãã¹1ã®VCLãä¿å | | --- main.vcl ïŒ ã¡ã€ã³VCL | ` --- include.vcl ïŒ ã¡ã€ã³VCLããåŒã³åºãããVCL ` --- service_2 ïŒ ãµãŒãã¹1ã®VCLãä¿å â»ãµãŒãã¹ãšã¯ãFastlyã®å®çŸ©ã®åäœã§ãããµãŒãã¹æ¯ã«èšå®ã§ãã
fastlyã®ãããã€ã¡ã³ããŸãšã 47 ⢠ããããžã§ãã³ã°ããŒã«ã«ãã£ãŠãã§ããäºãã§ããªãäºãã ãã ⢠ããŒã«ã®éžå®ã«ã¯ãfastlyã®ã³ã³ãã£ã°åé¡ãæèãããšè¯ãã ⊠ç°å¢èšå® âŠ
ã€ãã³ãèšå® âŠ ç¶æ èšå®
ä»åŸãfastlyã䜿ã£ãŠããããããš 48
æ°ããä»®æ³é貚ååŒæã®ãµãŒãã¹ã§ã䜿ãã€ãã © Money Forward,Inc. 49 ⢠ãã¡ãããä»ãŸã§ä»¥äžã®æ éãã倧åæã ⢠fastlyã®WAFæ©èœå ¥ããã âŠ
ååŒæã®ã·ã¹ãã ã¯GCP䜿ããGCPãšfastlyã®çžæ§ã¯æ 矀ã(ããã³ãã®å€§éã®ãã°ãæãã«ã¯BigQueryã¯æé«ã§ ã) ⊠fastlyãšGCPéã¯éåç¶²ã§Internetãä»ããªãã ⢠Pushéä¿¡ãfastlyçµç±ã«ããã ⊠仮æ³éè²šã®æ¿æ å ±ã¯ãããªãã®è² è·ãèŠèŸŒãŸããã ⊠åãæ å ±ãçããªã«ãªã¢ã«ã¿ã€ã é ä¿¡ã ⊠SSEã䜿ã£ãŠãfastlyçµç±ã§é ä¿¡ãããã
fastlyã®æ®å¿µãªãšãã 50
⢠ProvisionigããŒã«ã®ææ°API察å¿ãé ãã ⊠ãŠãŒã¶ã«ä»»ãããŠããfastlyç€Ÿã«æšé²ããŠæ¬²ããã ⊠ãã ãã«ã¹ã¿ã VCLã«å€ãã®äºãä»»ããŠãããé°ããã£ãŠã ä»ã¯å°ã£ãŠã¯ããªãã§ãã ⢠ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãæè»ã§ãè²ã ãªããšãåºæ¥ããã âŠ
ãã£ããçè§£ããŠãªããšæå³ããªãåäœããããïŒ âŠ è²ã åºæ¥ãŠã楜ãããªã£ãŠä»ã®ä»äºã«æãã€ããª(ry 51
ãŸãšã(æã¡åž°ã£ãŠæ¬²ããããš) © Money Forward,Inc. 52 ⢠CDNãå®å šã«å°å ¥/éçšããããã®èæ ®ç¹ âŠ é©åã«å¶éãæããããããšã¯å€§äºã âŠ
ãããã®æã®ãªã«ããªé床ã倧äºã ⪠äžïŒã€ãèãããšfastlyã¯ãªã¹ã¹ã¡ã ⊠ãµãŒãã¹ç¹æ§ãèŠæ¥µããŠãã£ãã·ã³ã°ããã(ãã£ãã·ã¥ãã ãçäœãããŠãåå广ããå Žåããã) ⢠fastlyå°å ¥ããå Žåã®ãããã€ã¡ã³ãèªååã®èæ ®ç¹ âŠ åããŒã«ã§åºæ¥ãããšãåºæ¥ãªãããšãããã®ã§ãåã£ãŠã ãã®ãéžå®ããŸãããã ⊠ã³ã³ãã£ã°ã®åºåãæèãããšãããŒã«éžå®ãã³ãŒãã£ã³ã° ãããããã
ã¯ã©ãŠã倧奜ãïŒå šãŠã®ã€ã³ãã©ãã³ãŒãåããŠããïŒ ãããªä»²éãåéããŠããŸãã MF ã€ã³ãã© https://www.wantedly.com/projects/7727 MFãã£ãã³ã·ã£ã« ã€ã³ãã©ãhttps://www.wantedly.com/projects/191131 ãéèŽããããšãããããŸããïŒ 53