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
ã¢ãã³ããŒã¿ã¹ã¿ã㯠(MDS) ã®è©±ãšããŒã¿åæãèµ·ããããžãã¹å€é©
sutotakeshi
0
510
Strands AgentsãšNova 2 Sonicã§S2Sãå®è·µããŠã¿ã
yama3133
0
120
åããŠã®Databricks AI/BI Genie
taka_aki
0
200
Microsoft Agent 365 ã«ã€ããŠãã£ãããã£ããçè§£ããïŒ
skmkzyk
0
370
mairuã§ã€ããã¯ã¬ãã³ã·ã£ã«ã¬ã¹éçºç°å¢ / Credential-less development environment using Mailru
mirakui
5
540
Amazon Quick Suite ã§å§ããæè»œãª AI ãšãŒãžã§ã³ã
shimy
0
140
Reinforcement Fine-tuning åºç€ãå®è·µãŸã§
ch6noota
0
190
RAG/Agentéçºã®ã¢ããããŒããŸãšã
taka0709
0
190
Sansanãå®è·µãã Platform EngineeringãšSREã®ååµ
sansantech
PRO
2
920
Database ã€ãããŒã·ã§ã³ããŒã¯ãæ¯ãè¿ã/reinvent-2025-database-innovation-talk-recap
emiki
0
230
ãU/day Tokyo 2025ãCygamesæµ ææ°ã¹ããŒããã©ã³ã²ãŒã ã®æè¡èšèš ããShadowverse: Worlds Beyondãã«ãããã¢ãŒããã¯ãã£åèšèšã®ææŠïœ
cygames
PRO
2
620
ãŠã§ã«ãã¹ SaaS à AIã1,000äžãŠãŒã¶ãŒãæ¯ãã æ¥çç¹å AI ãããã¯ãéçºãžã®éã®ã
hacomono
PRO
0
130
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Designing for Performance
lara
610
69k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Unsuck your backbone
ammeep
671
58k
Six Lessons from altMBA
skipperchong
29
4.1k
4 Signs Your Business is Dying
shpigford
186
22k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
390
How GitHub (no longer) Works
holman
316
140k
I Donât Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Building Adaptive Systems
keathley
44
2.9k
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