æŸéäžãç§ãã¡ã®æè²ãããžã§ã¯ãã®åŠçã®åæ¥ãããžã§ã¯ãã«ã€ããŠã®æ°ããç©èªãä»åã¯ããããã³ããšã³ãéçºããWebãµãŒãã¹ãªã³ãŽãŒéçºããã€ã³ã¿ãŒãã§ãŒã¹ãã¶ã€ã³ãã®åéã§ããã¯ãããŒã¯ã®ã¡ã€ã³ããã°ã©ã åŸæã®å ±åé²è¡ã§çºè¡šããã4ã€ã®è«æã玹ä»ããŸããåã®åºçç©ïŒ1ã2ã3ã
ãããžã§ã¯ããæè·ããåŠçããããã®æè¡ã«è§Šããã®ã¯ãããåããŠã§ãããããžã§ã¯ãã¯1åŠæããããŸããèšäºã®ç®çã¯ãæè²ããã»ã¹ãšåŠçã®äœæ¥ã®çµæã瀺ãããšã§ãã
ãŠã€ã«ã¹ãã¥ãŒãžãã¯
ããã¯ãããã€ã¹ã«ããŠã³ããŒãããã«é³æ¥œãã¹ããªãŒãã³ã°ããããã®ã€ã³ã¿ãŒãããé³æ¥œãµãŒãã¹ã§ããã¡ã€ã³ããŒãžã«ã¯ããã®æ¥ã®ãã©ãã¯ã®éžæãšãåºæŒè ã®çããªã¹ããå«ãŸããŠããŸãã
ã¢ãŒãã£ã¹ããã¯ãªãã¯ãããšã圌ã®ãã©ãã¯ã®ãªã¹ããéããŸãããæ°ã«å ¥ãã®ã¢ãŒãã£ã¹ãã®æ°äœãèŠéããªãããã«è³Œèªãããããæ°ã«å ¥ãã®ãã©ãã¯ãã¢ã«ãã ãæ°ã«å ¥ã£ããããããšãã§ããŸããé³æ¥œããŒã¿ããŒã¹ãããã²ãŒãããã®ã«äŸ¿å©ãªããã«ãããã©ãŒããŒããã©ãã¯ãã¢ã«ãã ã«ããåææ€çŽ¢ããããŸãããã¬ã€ãªã¹ããäœæã§ããŸãããããã¡ã€ã«ã§ã¯ããæ°ã«å ¥ãã®ãã©ãã¯ããæ°ã«å ¥ãã®ã¢ã«ãã ãã¢ãŒãã£ã¹ããµãã¹ã¯ãªãã·ã§ã³ã確èªãããããã¬ã€ãªã¹ãã管çãããã§ããŸãããµãŒãã¹ããã楜ããèŠããããã«ã圌ãã¯ã€ã³ã¿ãŒãã§ãŒã¹ã®è²ãã«ã¹ã¿ãã€ãºããæ©èœãè¿œå ããŸããããŸããã€ã³ã¿ãŒãã§ãŒã¹èªäœã¯ãããŸããŸãªç»é¢ãµã€ãºã®ã¢ãã€ã«ããã€ã¹ã«é©åããŠããŸããããã¯æ代ã®ç²Ÿç¥ã§ãã
ãããžã§ã¯ãã«åãçµãã§ããéã圌ããããã€ãã®æ±ºå®ã«åæããªãã£ããšãã圌ãã¯åŠ¥åç¹ãèŠã€ããªããã°ãªããŸããã§ãããé©åãªãªãã·ã§ã³ãæ¢ãããã«ã2ã€ã®ãã³ãã¬ãŒããšã³ãžã³ãš2ã€ã®ãã¹ãããã»ããµãå€æŽããŸããããŸãããã®ã¢ãããŒãã®æ¬è³ªãç解ããåã«ãããã³ããšã³ãã«MVCãå®è£ ããããšã決å®ããŸããããã®ãããåŸã§å€ãã®ããšãããçŽãå¿ èŠããããŸãããããã¯ãšã³ãã¯ãã¯ãªãŒã³ãªãã¢ãŒããã¯ãã£ã䜿çšããŸãã
ãã®ãµãŒãã¹ã¯ãRest APIãšEasyJSONã·ãªã¢ã©ã€ã¶ãŒã䜿çšããŠãGoãšJavaScriptïŒWebã¯ãŒã«ãŒãJavaScriptãéåæã§å®è¡ããïŒã§èšè¿°ãããŠããŸãã PostgreSQLãšRedisã¯ããŒã¿ã®ä¿åã«äœ¿çšãããgormã©ã€ãã©ãªã¯ãããã®æäœã«äœ¿çšãããŸãããã€ã¯ããµãŒãã¹ã¯ãgRPCãä»ããŠçžäºã«éä¿¡ããŸãã WebãµãŒããŒã¯Nginxã§ãã Typescriptã䜿çšãããŸãã CI / CDã¯ãGithubActionsãšMCSã®äžã«æ§ç¯ãããŠããŸãããŸããSharingAPIïŒãªã³ã¯ãå ±æããããïŒãšWebpackã³ã¬ã¯ã¿ãŒãé©çšããŸããã
ãµãŒãã¹ãéçºããã«ã¯ãæãéèŠãªãã®ãã€ãŸããŸãšããªé³æ¥œã®ã©ã€ãã©ãªãå¿ èŠã§ãããŸãããŠãŒã¶ãŒã®å¥œã¿ã«åºã¥ããæšå¥šã·ã¹ãã ãäœæããããã«ããªã¹ãã³ã°ã«é¢ããçµ±èšãåéããããšãèšç»ããŠããŸãã
ãããžã§ã¯ãããŒã ïŒMargarita BoykoãDmitry RybakovãNatalia KlimovaãNikita Panev
ãããžã§ã¯ãä¿è·ä»ãã®ãããªã
ãããªã³
圌ãã¯æ ç»ããã¬ãçªçµã«é¢ããæ å ±ãèŠã€ããããã®ãŠã§ããµã€ããäœããŸããã圌ãã¯ããã¬ã€ãªã¹ããäœæããŠãã£ãŒãããã¯ãæ®ãæ©èœãè¿œå ããŸããããã®ãµã€ãã«ã¯ããŒãå¥ã®æ ç»ãã·ãªãŒãºããããããŒã¿ããŒã¹ã«ã¯å šææ€çŽ¢ãããããžã£ã³ã«ããªãªãŒã¹å¹Žã俳åªãéžæããããšãã§ããŸãã
äž»ãªæ©èœã®1ã€ã¯ããŠãŒã¶ãŒå®çŸ©ã®æ ç»ã®é¡äŒŒããåçã®ãªã¹ããç·šéããããšã§ãã圌ãã¯å®å šãªè£œåãäœãããã£ãã®ã§ã圌ãã¯æŽŸæãªæ©æ¢°åŠç¿ãªãã§ã³ã¬ã¯ã·ã§ã³ã®ç·šéãå®è£ ããŸããã代ããã«ãç¹å®ã®æ ç»ã«ã€ããŠããµã€ããŠãŒã¶ãŒãç¹å®ã®ãã¬ã€ãªã¹ãã§1ã€ã®ãã¬ã€ãªã¹ãã«å«ããããšãæãå€ãäœåãéžæãããŸããã€ãŸãã2ã€ã®æ ç»ãåããã¬ã€ãªã¹ãã«å«ãŸããããšãå€ãã»ã©ãé¡äŒŒããŠããå¯èœæ§ãé«ããªããŸãããã ãããé¡äŒŒãã¯ããããééã£ãçšèªã§ãããããããããçšåºŠã®ç¢ºçã§æ¥œãããæ ç»ãã§ãããã¬ãçªçµãåãã§ãã
ãŸããWeb Share APIã䜿çšããåŠçã¯ãé¢å¿ã®ããæ ç»ãžã®ãªã³ã¯ãéä¿¡ããæ©èœãäœæããŸãããåçã説æãæ·»ä»ããæ©èœãåãããçŸããã®ããã«äœãããŸããã
ããã¯ãšã³ãã¯ããã¯ãªãŒã³ãªãã¢ãŒããã¯ãã£ã®ååã䜿çšããŠãå®å šã«Goã§èšè¿°ãããŠããŸããããã¯ãããžã§ã¯ããæ§ç¯ããã®ã«å€§ãã«åœ¹ç«ã¡ãŸããã Githubã¢ã¯ã·ã§ã³ã¯ããã¹ã¿ãŒãã©ã³ããžã®ãã¹ãŠã®ããã·ã¥ã远跡ããŸãããã¹ãã¯èªåçã«å®è¡ããããã¹ãŠãæ£åžžã§ããã°ããããžã§ã¯ãã¯Dockerã³ã³ããã«ããŒã«ã€ã³ãããDockerhubã«éä¿¡ãããŸãã次ã«ããµãŒããŒãããã«ãããŠèµ·åãããŸããããã¯ãšã³ãã¯ãHTTPããã³HTTPSã§å®è¡ãããAPIãµãŒããŒã§ããã¯ã©ã€ã¢ã³ããåããŠãµã€ãã«ã¢ã¯ã»ã¹ãããšãã¯ã©ã€ã¢ã³ãã³ãŒããå«ããã¡ã€ã«ãåãåããŸãã Ansibleã䜿çšããŠnginxWebãµãŒããŒã®èµ·åãèªååããŸããã
GoogleChromeãã©ã°ã€ã³ã®WebScrapperã䜿çšããŠãæ ç»ããã¬ãçªçµã«é¢ããæ å ±ãåéããŸãããcsvãã¡ã€ã«åœ¢åŒã®ããŒã¿ã¯Pythonã¹ã¯ãªããã§åŠçãããæå¹ãªSQLã¯ãšãªã«å€æãããããŒã¿ããŒã¹ãã€ã³ã¹ããŒã«ãããŸãããNginx SSIã¯ãæ ç»ããã¬ãçªçµãžã®ãªã³ã¯ã«åçã説æãæ·»ä»ãã責任ããããŸãããããã³ã«ãšããŠHTTP3.0ã䜿çšãããŸãããã®ãããæ°ããã¢ãžã¥ãŒã«ãšã©ã€ãã©ãªã䜿çšããŠNginxãåæ§ç¯ããå€ãã®ããããŒãäœæããå¿ èŠããããŸããã
ãããžã§ã¯ãããŒã ïŒAndrey ZubkovãKonstantin ProninãAlisa SeledkinaãOleg Elizarov
ãããžã§ã¯ãä¿è·ä»ãã®ãããªã
ãã¬ã
ããã¯å€æ©èœã¿ã¹ã¯ãããŒãžã£ãŒã§ããDrelloã§é©çšãããååã¯ãããããããªãã¿ã§ãããŠãŒã¶ãŒã¯ãå¥ã®ããŒãããŒãžã§ã¿ã¹ã¯ãåéããŠç·šéããŸããã¡ã€ã³ç»é¢ã§ããŠãŒã¶ãŒã¯èªåã®ããŒããšæåŸ ãããããŒãã確èªã§ããŸããäžè¬çãªããŒãããã°ããäœæããããã«ãããã€ãã®ãã³ãã¬ãŒããçšæãããŠããŸãã
ã¿ã¹ã¯ã¯åã®åœ¢åŒã§è¡šç€ºãããååã¯ã¿ã¹ã¯ã®åå¥ã®æ®µéãåæ ããŠããŸãã
ã¿ã¹ã¯ç»é¢ã«ã¯ã説æãã«ããŽãªã¿ã°ããã§ãã¯ãªã¹ãã説æã³ã¡ã³ããããã³æ·»ä»ãã¡ã€ã«ãå«ãŸããŠããŸãã
ã¿ã¹ã¯ã¯ããã©ãã°ã¢ã³ãããããããã ãã§åéã移åããŸãã
ãªã¢ã«ã¿ã€ã ã§éç¥ããããéç¥ããªãã«ãããããµã€ã¬ã³ãã«ãããããããšãã§ããŸããä»ã®ãŠãŒã¶ãŒã®ããŒãã«æ¥ç¶ããããã®æåŸ ãªã³ã¯ãéä¿¡ã§ããŸãã
ããã¯ãšã³ãå šäœã¯Goã§èšè¿°ãããŠããããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãåããŠããŸãããã€ã¯ããµãŒãã¹ã¯ãgRPCãä»ããŠprotobuf圢åŒã§çžäºã«éä¿¡ããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãããã¡ããŠã¹ãšã°ã©ãã¡ãã®ãã³ãã«ã®åœ¢ã§ç£èŠããããšã«ãã£ãŠã«ããŒãããŠããŸãã zapã©ã€ãã©ãªã¯ãã®ã³ã°ã«äœ¿çšãããŸããã¡ã€ã³ã®ããŒã¿ã¹ãã¢ã¯PostgreSQLã§ããã¡ã€ã«ãšã¢ãã¿ãŒã®ã¹ãã¢ã¯Amazonã§ããã»ãã·ã§ã³ã¯Memcacheã«ä¿åãããŸããããã³ããšã³ããšã®éä¿¡ã«ã¯ãEchoã«ãŒã¿ãŒãHTTPS 2.0ãããã³ã«ãããã³EasyJSONããŒã¿ã·ãªã¢ã©ã€ã¶ãŒã䜿çšãããŸãã Gormãã¬ãŒã ã¯ãŒã¯ã¯ãããŒã¿ããŒã¹ãæäœããããã«äœ¿çšãããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãCSRFãXSSãSQLã€ã³ãžã§ã¯ã·ã§ã³æ»æãããä¿è·ãããŠããŸããããã³ããšã³ãã¯ãMVCãã¿ãŒã³ãšFestãã³ãã¬ãŒããšã³ãžã³ã䜿çšããŠãçŽç²ãªJavaScriptã§èšè¿°ãããŠããŸãã Webpackãã³ã¬ã¯ã¿ãŒãšããŠäœ¿çšããBabelã䜿çšããŠè»¢éããéçã³ã³ãã³ããNginxãä»ããŠé åžãããªã¯ãšã¹ããããã¯ãšã³ãã«ãããã·ããŸããã
ããã³ããšã³ãïŒhttps://github.com/frontend-park-mail-ru/2020_1_SIBIRSKAYA_KORONA
ããã¯ãšã³ãïŒhttpsïŒ//github.com/go-park-mail-ru/2020_1_SIBIRSKAYA_KORONA
ãããžã§ã¯ãããŒã ïŒRoman GavrilenkoãAlexander LebedevãTimofey RazumovãAnton Chetverov ..ã
ãããžã§ã¯ãä¿è·ä»ãã®ãããªã
eLoyalty
ãããŠãç§ãã¡ã®ã³ã¬ã¯ã·ã§ã³ã®æåŸã®ãããžã§ã¯ãã¯ãAppleWalletã®ãã€ã€ã«ãã£ã«ãŒããã¶ã€ããŒã§ãã圌ãã¯ã³ãŒããŒã·ã§ããã«è¡ãã®ã奜ãã§ããã圌ãã¯ç¡æã®ã³ãŒããŒãäžããã¹ã¿ã³ãä»ãã®æ®µããŒã«ã«ãŒããæã¡æ©ãã®ã¯å¥œãã§ã¯ãããŸããã圌ãã¯ãå°ããªã³ãŒããŒã·ã§ããã®ææè ããã®ã³ã³ã¹ãã©ã¯ã¿ãŒãç解ã§ããããã«ãWalletã§çŸããã«ãŒããäœæããããšã決å®ããŸãããããã«ãããã«ãã§ã®ãã€ã€ã«ãã£ã·ã¹ãã ã®ãã¶ã€ã³ãšããžãã¯ãäœæã§ããŸããããã«ãé»åã«ãŒãã¯ãã¯ã©ã€ã¢ã³ããã«ãã§ã®è¿ããæ©ããŠãããšãã«ã¯ã©ã€ã¢ã³ãã«æãåºãããããã¢ãŒã·ã§ã³ã«ã€ããŠéç¥ãã蚪åè ã®é£çµ¡å ãåéããããšãã§ããŸãã
ãããžã§ã¯ãã¯ãGRPCãããã³ã«ã䜿çšãããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£äžã«æ§ç¯ãããŠããŸãããã¹ã¯ãŒãã¯ããã·ã¥ãããŸãã Dockerã³ã³ããã䜿çšãããç£èŠãšã¢ã©ãŒãã¯PrometheusãšGrafanaã«åºã¥ããŠããŸãã圌ãã¯ãŸããApple Wallet APIãç¬èªã«ç 究ããå¿ èŠããããŸãããããã¯ãApple Walletã®é»åã«ãŒããçºè¡ããã³ä¿å®ããããšãå¯èœã«ãããã¯ãããžãŒã§ããã€ãŸãããã¶ã€ã³ã®å€æŽãéç¥ã®éä¿¡ãªã©ã§ãã
ãããžã§ã¯ãããŒã ïŒDmitry GulyachenkovãAlexander AverkievãSergey PetrenkoãDmitry Boldin
ãããžã§ã¯ãä¿è·ä»ãã®ãããªã
次ã®æçš¿ã®1ã€ã§ãC ++éçºã®åæ¥ãããžã§ã¯ãã«ã€ããŠèª¬æããŸããããªãã¯ãã®ãªã³ã¯ã§ç§ãã¡ã®æè²ãããžã§ã¯ãã«ã€ããŠãã£ãšèªãããšãã§ããŸãããããŠãTechnostreamãã£ãã«ã«ã¢ã¯ã»ã¹ããããšãå€ããããã°ã©ãã³ã°ãéçºããã®ä»ã®åéã«é¢ããæ°ãããã¬ãŒãã³ã°ãããªãå®æçã«è¡šç€ºãããŸãã