Avitoã§ã¯ãäžçäžã®ãã®ä»ã®åé¡ã®éçºãå³å¯ã«è¿œè·¡ããŠããŸãã ãããŠãã¡ãããè«æ±ãªã©ã®è€éãªã·ã¹ãã ã§äœæ¥ãããã¹ããã©ã¯ãã£ã¹ã«èå³ããããŸãã ä»æ¥ãç§ã¯ã°ã«ãŒãNaspers ïŒAvitoããã®äžéšã§ãïŒã®ååã§ããDubizzleã®ãœãããŠã§ã¢ãšã³ãžãã¢ã§ããM. Rafay Alemã®æçš¿ã®ç¿»èš³ãå
¬éããŠããŸãã ããã¯ãOLXã°ã«ãŒãã®äžéšã§ããUAEã®äž»èŠãªã¯ã©ã·ãã¡ã€ãWebãµã€ãã§ã45ãåœã§æ倧ã®ãªã³ã©ã€ã³åžå Žã®ãããã¯ãŒã¯ã§ããã19åãè¶
ãã蚪åã370åã®ããŒãžãã¥ãŒã5400äžã®æéåºåããããŸãã ãã®ãããã¯ã¯ãèªåã®æ¯æããµãŒãã¹ã®äœæãšéçºã«æºãããã¹ãŠã®äººã察象ã«ããŠããŸãã

ããŸããŸãªå®çšçãªçç±ã§æ°ããæ¯æããµãŒãã¹ãããã€ããŒã«åãæ¿ããã«ã¯ãæ¢åã®WebãµãŒãã¹ãæžãæããå¿
èŠããããšæ³åããŠãã ããã æåã®èãã¯ãããããå€ãã²ãŒããŠã§ã€ãæ°ããã²ãŒããŠã§ã€ã«å®å
šã«çœ®ãæããŠèµ·åããããšã§ãã ããããããã¯ãç¹ã«ããµãŒãã¹ã¬ãã«å¥çŽããµãŒãã¹ãã³ã¯ãšã®å¥çŽããªã¹ã¯ãè©æ¬ºãæ€åºããããã®ã¹ã¯ãªãããªã©ãåããæ¯æãã²ãŒããŠã§ã€ã䜿çšããå Žåãå°ãåçŽã§ãã ãããã®èŠå ã«ãããéçšãåçã顧客ç¶æããããŠæçµçã«ã¯ããžãã¹ã®æåã«é¢ããŠã移è¡ããã»ã¹ã®ãªã¹ã¯ãé«ãŸããŸãã ãã®æçš¿ã§ã¯ãæ¯æãã²ãŒããŠã§ã€ãå€æŽããéã®ãªã¹ã¯ã軜æžããããã«åã£ãã¢ãããŒããšãããããªãããã»ã©éèŠãªã®ããæ€èšããŸãã

Dubizzleãã§ãã¯ã¢ãŠãããŒãž
ããã¯ãã¹ãŠå€ãæ¯æããµãŒãã¹ããå§ãŸããŸã...
ç§ãã¡ã®å€ãæ¯æãã·ã¹ãã ã¯Python 2ã§æžãããŠãããå€ãæ¯æãã²ãŒããŠã§ã€ãšå¯æ¥ã«é¢é£ããŠããŸãã æåã«åé¡ãåãäžãããšããæ°ããæ¯æãã²ãŒããŠã§ã€ãæ¢åã®ãããŒãURLã Python Bottleã«ç°¡åã«çµ±åã§ãããšèããŸããã æåã®ãããã¿ã€ãã®äœæ¥ãéå§ãããšãããã2ã€ã®æ¯æãã²ãŒããŠã§ã€ã®APIãããŒãå®å
šã«ç°ãªããããã¹ãã²ããã£ã³ãŒããäœæããŠããããšã«æ°ä»ããŸããã å€ãæ¯æãã²ãŒããŠã§ã€ã®APIã¯ç°ãªããŸãããRedisãšGevent㯠ããŠãŒã¶ãŒãšæ¯æãã®åŠçãæé©åããããã«å€§å¹
ã«äœ¿çšãããæ°ããã²ãŒããŠã§ã€ã®APIã§ãããç¹°ãè¿ãå¿
èŠã¯ãŸã£ãããããŸããã§ããã

å€ãæ¯æãã²ãŒããŠã§ã€ã®æ¯æããµãŒãã¹
A / Bãã¹ãã¯åªããŠããŸãããç°¡åã§ãã
A / Bãã¹ãã¯ã補åéçºã«ãããææ決å®ã«ãšã£ãŠéåžžã«éèŠã§ãã Dubizzleã§ã¯ããã®ãããªãã¹ãã¯ãååãšããŠããŠãŒã¶ãŒãééããããšã«çŠç¹ãåãããŠããŸããããŒãžéã®é·ç§»ãããŒãžäžã®ã³ã³ããŒãã³ããšãã®å Žæãæ©èœã§ãã ãã ããçžäºäŸå床ã®é«ãåºæ¬ã·ã¹ãã ããã¹ãããå Žåã¯ãç¶æ³ãè€éã«ãªããŸãã
ãããã¿ã€ãã®äœæ¥äžã«ãæ°ããã²ãŒããŠã§ã€ãåããŠãŒã¶ãŒãããã³ã°ãšã¹ããªãŒã ã«äœããã®æ¹æ³ã§çµ±åã§ãããšããŠããOptimizelyãªã©ã®ããŒã«ã䜿çšããŠå®è¡ãããA / Bãã¹ããå®è¡ããªãã§ãã ããã ãããŠãããã«çç±ããããŸãã
- ã¯ã¬ãžããã«ãŒãæ
å ±ããã£ããã£ã§ããå€éšã®JavaScriptã³ãŒããæ¯æããµãŒãã¹ã§äœ¿çšããããšã¯ã倧ããªã»ãã¥ãªãã£ãªã¹ã¯ã§ãã
- Optimizelyã¢ãããŒãã䜿çšããã«ã¯ããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãããã³ã°ããã®ãªã¯ãšã¹ããCookieã䜿çšããŠç®çã®æ¯æãã²ãŒããŠã§ã€ã«éä¿¡ãããããã«ããããã«ãWebãµãŒãã¹ã®è¡šç€ºããšã«A / Bãã¹ãããžãã¯ãå®è£
ããå¿
èŠããããŸãã ããã«ã¯ããã£ã¹ãã¬ã€ããšã«æ¬¡ã®ã³ãŒããå¿
èŠã§ãããèŠæ ãããããããŸããã
if cookie == 'OLD': use old payment gateway API else: use new payment gateway API
- åãåå空éïŒããšãã°ãRedisïŒã䜿çšããŠ2ã€ã®ç°ãªãæ¯æãã²ãŒããŠã§ã€ããããã°ããå ŽåãUUIDã®çæãšç»é²ã«ã¯å¿
ç¶çã«åé¡ããããããããå³åº§ã«è§£æ±ºããå¿
èŠããããŸãã
ãŠãŒã¶ãŒãå¶åŸ¡ã°ã«ãŒãAïŒå€ãæ¯æãã²ãŒããŠã§ã€ãšå¯Ÿè©±ããWebãµãŒãã¹ïŒã«ãªã£ãå Žåããã®WebãµãŒãã¹ã¯ããã®ãŠãŒã¶ãŒã®æ¯æãããã»ã¹ããéå§ãããã®ãšåãæ¯æãã²ãŒããŠã§ã€ã§ç¶ç¶ããããšã確èªããå¿
èŠããããŸãã ãã®ãããWebãµãŒãã¹ã¯å€ãæ¯æãã²ãŒããŠã§ã€ã§ãã©ã³ã¶ã¯ã·ã§ã³ãéå§ããŠãæ°ããæ¯æãã²ãŒããŠã§ã€ã§ãã©ã³ã¶ã¯ã·ã§ã³ãå®äºããããšããã¹ãã§ã¯ãããŸããã ãã®åé¡ã¯ãOptimizelyããã³HAProxyã§ãµããŒããããŠããã¹ãã£ãããŒã»ãã·ã§ã³ã䜿çšããŠè§£æ±ºã§ããŸãã
2ã€ã®æ¯æããµãŒãã¹ã®ç©èª
çŽé¢ããŠããåé¡ãç解ãå§ãããšããæ°ããã²ãŒããŠã§ã€ãšçµ±åãããæ°ããæ¯æããµãŒãã¹ãéçºããA / Bãã¹ãïŒ50/50ïŒã䜿çšããŠããã©ãŒãã³ã¹ãæ¯èŒããããšã«ããŸããã A / Bãã¹ãã¯ãå°ãªããšã次ã®èŠä»¶ãæºãããŠããå¿
èŠããããŸãã
- æ°ãããµãŒãã¹ã§ã®æ¯æãã«ãŒãããŒã¿å
¥åãã©ãŒã ã®å€èŠ³ã¯ãæäœã«éåããªãããã«å€ããã©ãŒã ãšæ£ç¢ºã«äžèŽããå¿
èŠããããŸãã ãã®å Žåãæäœãšã¯ãPayããã¿ã³ãã¯ãªãã¯ããããšã§ãã
- å
éšãµãŒããŒã¿ã¹ã¯ãAPIåŒã³åºãã«ãã£ãŠãå€ããµãŒãã¹ãšæ¯èŒããŠæ°ãããµãŒãã¹ã®ãã©ã³ã¶ã¯ã·ã§ã³ãšã©ãŒã®æ°ãå¢ããããšã¯ãããŸããã ã€ãŸãããŠãŒã¶ãŒããã»ã¹ã®ã»ãšãã©ã¯ãåºæ¬çã«å€ãã²ãŒããŠã§ã€ã䜿çšããã®ãšåãæ¹æ³ã§åŠçããå¿
èŠããããŸãã

æ°ããæ¯æãã²ãŒããŠã§ã€ãšçµ±åãããæ¯æããµãŒãã¹
HAProxyã䜿çšããA / Bãã¹ã
Optimizelyãé€ãããã¹ãã«ã¯HAProxyã䜿çšããããšã«ããŸããã OSIãããã¯ãŒã¯ã¢ãã«ã®ç¬¬4ããã³ç¬¬7ã¬ãã«ã®åŒ·åãªããŒããã©ã³ãµãŒã§ãããå¹
åºãæ©èœãåããŠããŸãã ãããã®æ©èœã®1ã€ã¯ã第7ã¬ãã«ã§Cookieã䜿çšããŠãªã¯ãšã¹ããããã¯ãšã³ãã«ãã€ã³ãããæ©èœã§ãã
3ã€ã®ããã¯ãšã³ãçšã«HAProxyãæ§æããŸããã
- ã¡ã€ã³ããã¯ãšã³ãïŒã¡ã€ã³ïŒ
- å€ããµãŒãã¹ã®ããã¯ãšã³ã
- æ°ãããµãŒãã¹ããã¯ãšã³ã
以äžã¯ãHAProxyããã¯ãšã³ãã®äŸã§ãã
backend main balance roundrobin cookie SERVERID insert indirect nocache maxlife 2h option forwardfor option http-server-close option http-pretend-keepalive timeout queue 5000 timeout connect 5000 timeout server 50000 server old-service-old-pg old-service.eu-west-1.elasticbeanstalk.com:80 weight 128 cookie old_v1 check server new-service-new-pg new-service.eu-west-1.elasticbeanstalk.com:80 weight 128 cookie new_v1 check backend old_service option forwardfor option http-server-close option http-pretend-keepalive timeout queue 5000 timeout connect 5000 timeout server 50000 server old-service-old-pg-static old-service.eu-west-1.elasticbeanstalk.com:80 check backend new_service option forwardfor option http-server-close option http-pretend-keepalive timeout queue 5000 timeout connect 5000 timeout server 50000 server new-service-new-pg-static new-service.eu-west-1.elasticbeanstalk.com:80 check
ããããããªãã¯èããïŒãªãéçããã¯ãšã³ããå¿
èŠãªã®ãïŒ ããã¯ãããã³ããšã³ãHAProxyã«å°éãããšæããã«ãªãã®ã§ãæåã«ã¡ã€ã³ããã¯ãšã³ããèŠãŠã¿ãŸãããã
old-service-old-pgãšnew-service-new-pgã®è² è·ãåæ£ããããã«ãWeighted Round RobinïŒWRRïŒãéžæããŸããã ããã¯ãA / Bãã¹ãã§ã¯æå³ããããŸããA/ Bãã¹ãã§ã¯ãã°ã«ãŒãAãšBã®éã§ãã©ãã£ãã¯ãåå²ããå¿
èŠããããŸãã ãããå®çŸããã«ã¯ãHAProxy cookieãã£ã¬ã¯ãã£ãã䜿çšããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ãéå§ãããŠãŒã¶ãŒã2æé以å
ã«å®äºãããšä»®å®ããŠã2æéåŸã«Cookieãåé€ãããWRRã®çµæã«åºã¥ããŠæ°ããCookieãäœæãããããã«HAProxyãæ§æããŸããã
ããã«ããã2ã€ã®éåžžã«éèŠãªçµæãåŸãããŸããã
- A / Bãã¹ãã§éã¿ã調æŽããã»ãã·ã§ã³ãŸãã¯ãŠãŒã¶ãŒãããŒãäžæããããšãªã2æéãã¹ãŠã®ãŠãŒã¶ãŒã察象ã«ããããšãã§ããŸããã
- A / Bãã¹ãå
šäœã§ããŠãŒã¶ãŒãäž¡æ¹ã®ãµãŒãã¹ã§ãã©ã³ã¶ã¯ã·ã§ã³ãè©Šè¡ããå¯èœæ§ãå¢å ããŸããã ããã«ãããããã²ãŒããŠã§ã€ãå¥ã®ã²ãŒããŠã§ã€ã«ãã£ãŠä»¥åã«åãå
¥ããããŠããã¯ã¬ãžããã«ãŒãã®åãå
¥ããæåŠãããšããäºå®ã«é¢é£ããåé¡ãç¹å®ããããšãã§ããŸããã ããã€ãã®ã«ã¹ã±ãŒãã·ã¹ãã ãç°ãªã倧éžã«é¢ä¿ããŠãããšãã«ããã¹ãŠã倧èŠæš¡ã«åŽ©å£ãå§ããæ¹æ³ãèŠãŠé©ããŸããã
ç§ãã¡ã®ã¹ããŒã ã«ã¯ããããããŸã æ°ã¥ããŠããªããšæãããå°ããªè匱æ§ããããŸãã 次ã®ã¹ããŒã ãæ€èšããŠãã ããã

HAProxyãä»ããæ¯æãããã»ã¹
ãŠãŒã¶ãŒã¯ãCookieãåãåã£ãŠããçŽ45ååŸã«å€ãæ¯æããµãŒãã¹ã§ãã©ã³ã¶ã¯ã·ã§ã³ãéå§ããŸãã ãã®åŸã1æé59åã§3-Dã»ãã¥ã¢ãã³ã¯ããŒãžã«ç§»åãã2æéåŸã«æ¯æãæåããŒãžã®URLã«ãªãã€ã¬ã¯ããããŸãã HAProxyã¯2æémaxlife cookieã«èšå®ãããŠãããããHAProxyã¯ã»ãã·ã§ã³cookieããã£ã³ã»ã«ããæ¯æãæåããŒãžã®URLã«ãªãã€ã¬ã¯ãããåŸã«æ°ããcookieãæ¿å
¥ããããšããŸãã 幞éã§ãªãå ŽåãWRRã¯æ°ããã»ãã·ã§ã³ããå€ããµãŒãã¹ã«ãã£ãŠéå§ãããæåããæ¯æãããŒãžãžã®ãªãã€ã¬ã¯ããåŠçããæ¹æ³ãç¥ããªãæ°ããæ¯æããµãŒãã¹ã«é¢é£ä»ããããšãã§ããŸãã
ç§ãã¡ã®ã±ãŒã¹ã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãéå§ãããŠãŒã¶ãŒã¯éåžž2æé以å
ã«å®äºããããšãçµéšããç¥ã£ãŠããããããã®åé¡ãç¡èŠããããšã«ããŸããã ãããã maxlife
ãã©ã¡ãŒã¿ãŒãããšãã°1åã«èšå®ãããšãã©ã®ãããªåé¡ãçºçãããæ³åããŠã¿ãŠãã ããã
main
ã ãã§ãªãold_service
ãšnew_service
ã䜿çšããçç±ã«ã€ããŠè©±ãold_service
ãŸãããã HAProxyã¯éåžžããã¹ãŠã®ã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ãïŒACLïŒãåŠçããfrontend
ãããã·ãæ§æããŸãã ãã®å Žåã次ã®ããã«ãªããŸããã
frontend all bind *:80 timeout client 50000 default_backend main acl is_old_webhook path_reg ^\/webhook-old.* acl is_refund path_reg ^\/refund-endpoint.* acl is_new_webhook path_reg ^\/webhook-new.* use_backend old_service if is_old_webhook use_backend new_service if is_refund use_backend new_service if is_new_webhook
ãããã®webhookãšãšã³ããã€ã³ãã¯ãæ§æã§ç¢ºèªã§ããå€éšã²ãŒããŠã§ã€ããã®èŠæ±ãåŠçããããã«å¿
èŠãªç¹å®ã®ã«ãŒã«ãè¡šããŸãã å€ããµãŒãã¹ãšæ°ãããµãŒãã¹ã¯çžäºã®æ¯æãã²ãŒããŠã§ã€ãšçžäºäœçšã§ããªããããWRRã䜿çšããŠè² è·ãåæ£ãããšãã»ãšãã©ãã¹ãŠã®ãªã¯ãšã¹ãã§404çªç®ãŸãã¯400çªç®ã®ãšã©ãŒãçºçããããšã«ãªããŸãã ããã«ããããã®èŠæ±ã¯æ¯æãã²ãŒããŠã§ã€ããéä¿¡ããããããããŸããŸãªã«ãŒã«ãã«ããŒããã·ããªãªãå«ãŸããŠããªããããæ°žç¶åããå¿
èŠã¯ãããŸããïŒãã¹ãŠã®èŠæ±ã¯ã³ãŒã200ãåä¿¡ãããšããã«åŠçãããŸãïŒã
ãã®åé¡ã解決ããã®ã«æé©ãªå Žæã¯ãã©ã³ãµãŒèªäœã§ãããããéçããã¯ãšã³ãold_service
ããã³new_service
ä»ããŠå¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«èŠæ±ã®ãããŒãåããããã«ACLãæ§æããŸããã ã€ãŸããæ¯æãã²ãŒããŠã§ã€ãšHAProxyã®éã«ã¯äžçš®ã®äŒè©±ããããé©åãªã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«ãªã¯ãšã¹ãããªãã€ã¬ã¯ãããå¿
èŠããããŸãã
æ¯æãã²ãŒããŠã§ã€ïŒããã«ã¡ã¯ãå€ãæ¯æãã²ãŒããŠã§ã€ããå
éšãªã¯ãšã¹ãããããæ¯æããæ£åžžã«åãåã£ããšå ±åããŠããŸãã
HAProxyïŒããã«ã¡ã¯ãç¥ã£ãŠããŸãã old_serviceãã¢ãééããŠãã¿ãŒã²ããã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããŸãã
察象ã¢ããªã±ãŒã·ã§ã³ïŒããã«ã¡ã¯ãç§ã¯ããªããšäžç·ã«ããæ¹æ³ãç¥ã£ãŠããŸãã ãã®ãŠãŒã¶ãŒã®æ³šæãæå¹ã«ããŸãããã ãã®ããã«ãã³ãŒã200ãæäŸããŸãã
èŠæ±ãããŒç£èŠ
ãã¹ãŠã®åé¡ã解決ããã®ã§ããã®ãããªè€éãªA / Bãã¹ãã®å®è£
ããã¹ãããæ¹æ³ãèªåããå¿
èŠããããŸãã
HAProxyã¯ãè€éãªã·ã¹ãã ããããã°ããããã®éåžžã«è©³çŽ°ãªãã°ãä¿æããŠããŸãã A / Bãã¹ãã®ããã€ãã®äŸãèŠãŠã¿ãŸãããã
Feb 22 09:16:39 ip-1-xxx haproxy[9046]: 1.xac:2459 [22/Feb/2017:09:16:25.623] all main/new-service-new-pg 13783/0/0/101/13884 200 8241 - - --NI 22/22/0/1/0 0/0 "GET /step1/1725770 HTTP/1.1" Feb 22 09:18:23 ip-1-xxx haproxy[9046]: 1.xac:2629 [22/Feb/2017:09:18:12.291] all main/new-service-new-pg 7223/0/1/3881/11105 200 327 - - --VU 19/19/0/1/0 0/0 "POST /step2/1725770 HTTP/1.1" Feb 22 09:19:30 ip-1-xxy haproxy[9402]: 1.xbz:59238 [22/Feb/2017:09:19:26.761] all main/new-service-new-pg 3714/0/1/45/3760 200 4711 - - --VN 34/34/0/1/0 0/0 "GET /success-redirect/1725770 HTTP/1.1" Feb 22 09:16:51 ip-1-xxx haproxy[9046]: 1.xac:2459 [22/Feb/2017:09:16:49.146] all new_service/new-service-new-pg-static 2047/0/0/5/2052 200 226 - - ---- 29/29/0/1/0 0/0 "POST /webhook-new HTTP/1.1"
1ã€ã®æ³šæèå¥åã«å¯Ÿããåãªã¯ãšã¹ãã®NIãVUãããã³VNãã©ã°ã«æ³šæããŠãã ããã ãããã®ãã©ã°ã«ããââãã¯ã©ã€ã¢ã³ãããµãŒããŒãããã³HAProxyãã©ã®ããã«CookieãåŠçããããç解ã§ããŸãã ããã¯ããã¹ããšãããã°ã®éã«æ³šæããå¿
èŠãããæãéèŠãªæ
å ±ã§ãã
HAProxyã®ããã¥ã¡ã³ããåŒçšããŸã ã
-ïŒ Cookieãã€ã³ãã£ã³ã°ã¯ç¡å¹ã§ãã ããã¯ãA / Bãã¹ããå®æœããªãå Žåã§ãã
NIïŒ Cookieã¯ã¯ã©ã€ã¢ã³ãã«ãã£ãŠèšå®ããããå¿çã§çæãããŸããã ããã¯éåžžãåãŠãŒã¶ãŒããã®æåã®ãªã¯ãšã¹ãã§çºçããå®éã®ãŠãŒã¶ãŒã®æ°ãèšç®ã§ããŸãã WRRã¯ãŠãŒã¶ãŒã°ã«ãŒããå®çŸ©ããŸãã
VUïŒã¯ã©ã€ã¢ã³ããæäŸããCookieã æçµèšªåæ¥ãå€ããããå¿çãšããŠæŽæ°ãããCookieãæäŸãããŸãã æ¥ä»ããŸã£ãããªãå ŽåããŸãã¯æ¥ä»ãæå®ãããŠããããmaxidleãã©ã¡ãŒã¿ãŒãèšå®ãããŠããããCookieãç¡æéã«èšå®ã§ããå Žåãå¯èœã§ãã
VNïŒã¯ã©ã€ã¢ã³ããæäŸããCookieã ã¯ã©ã€ã¢ã³ããæ¢ã«Cookieãæã£ãŠããå Žåãã»ãšãã©ã®å¿çã§çºçããŸãã ãã®ãããHAProxyã¯ãŠãŒã¶ãŒã®çŸåšã®ã°ã«ãŒããèŠã€ãã察å¿ããããã¯ãšã³ãã«ãããåããŸãã
HAProxyãnew-service-new-pg
ãµãŒããŒãéžæããŠCookieãèšå®ãããšããã®ãŠãŒã¶ãŒããã®ä»¥éã®ãã¹ãŠã®ãªã¯ãšã¹ãã¯main
ããã¯ãšã³ããä»ããŠnew-service-new-pg
éä¿¡ãããããšã«æ³šæããŠãã ããã
èŠæ±ãACLã®1ã€ãšäžèŽããå ŽåãHAProxyã¯Cookieãèšå®ããã«èŠæ±ãéä¿¡ããŸãã ãŸãããããããã®HTTPåŒã³åºãã«ãã£ãŠA / Bãã¹ãçµæãæªãŸãªãããã«ããŸãã
A / Bãã¹ãã¢ãŒããã¯ãã£

A / Bãã¹ãã¢ãŒããã¯ãã£
DNSãšãšããžããŒãã¯ããã¹ãŠã®ãã€ã¯ããµãŒãã¹ã«å
±éã§ãã A / Bãã¹ãã®ãã¹ãŠã®éæ³ã¯ããã©ãã£ãã¯ãããé«ãããŒããã©ã³ãµãŒïŒHAProxyãïŒãééããåŸã«å§ãŸããŸãã
ãããã«
ãã®ãœãªã¥ãŒã·ã§ã³ã¯å¯èœãªéãæåã®æ¹æ³ã§æ©èœããŸããããCookieãã€ã³ãã£ã³ã°ã䜿çšããã ãã§ãªããããå°é£ãªãã©ã³ã¹ãåãããã®å€ãã®æ¹æ³ããããŸãã Shopifyã¯ã ããã°ã§NginxãšOpenRestyã䜿çšããŠãœãªã¥ãŒã·ã§ã³ãéåžžã«ãã説æããŠããŸãã
翻蚳è
ãã
ããã§ã®ç¿»èš³ãšåºçã«èŠªåã«åæããŠãããèè
ã«æè¬ããŸãã ããªãã¯ãã€ãã¿ãŒã§çŽæ¥åœŒã«é£çµ¡ããããšãã§ããŸãïŒ mrafayaleem ã ãã®ãããªãµãŒãã¹ãéçºãããå Žåã¯ãMy Circleã®ç©ºå®€ãã芧ãã ãããAvitoã§ã¯ã課ééçºè
ãå«ãè² è·ã®é«ãã·ã¹ãã ã®éçºè
ãå¿
èŠã§ãã
ãã®ãããªã¿ã¹ã¯ãåŠçããå¿
èŠããããŸãããïŒ ã³ã¡ã³ãã§è°è«ããŸãããã