SREãã¼ã ã®@cubicdaiyaã§ããã¤ãå æ¥ã¡ã«ã«ãªã§OSSã¨ãã¦éçºã»å ¬éãã¦ããã¹ããã¢ããªåãã®ããã·ã¥éç¥ç¨ã²ã¼ãã¦ã§ã¤ãµã¼ãã§ããGaurunãGCMãAPNsã¨ãã«HTTP/2ãå©ç¨ããããã·ã¥éç¥ã«å¯¾å¿ããã®ã§ç´¹ä»ãã¾ãã
ã¡ãªã¿ã«ãã´ãåºæ¥ã¾ããã
GaurunãA general push notification server in Goã
ç¹°ãè¿ãã«ãªãã¾ãããGaurunã¯ã¡ã«ã«ãªã§OSSã¨ãã¦éçºã»å ¬éãã¦ããã¹ããã¢ããªåãã®ããã·ã¥éç¥ç¨ã²ã¼ãã¦ã§ã¤ãµã¼ãã§ããGCMãAPNsã¸ã®ããã·ã¥éç¥å¦çãHTTP + JSONãã¼ã¹ã®éåæå¦çAPIã§ã©ãããã¦å¤§éã®ããã·ã¥éç¥ãç´ æ©ãéä¿¡ãããã¨ãã§ããã®ãç¹å¾´ã§ãã
ã¡ã«ã«ãªã®ããã·ã¥éç¥ã®ã·ã¹ãã ããã®Gaurunã«ããæ§ç¯ããã¦ãã¾ããã¯ã©ã¤ã¢ã³ãã¨ã®éä¿¡ã«ã¯HTTPãå©ç¨ã§ããã®ã§å段ã«nginxããã¼ããã©ã³ãµã¼ã¨ãã¦é ç½®ãã¦Gaurunãµã¼ããè¶³ãã ãã§ç°¡åã«ã¹ã±ã¼ã«ã§ããæ§æã«ãªã£ã¦ãã¾ãã
詳ããã¯ä»¥ä¸ã®ãnginxã¨Goã§ã¤ããã¡ã«ã«ãªã®ããã·ã¥éç¥ã·ã¹ãã ããã覧ãã ããã
Gaurunã¨HTTP/2
以ä¸ã¯å¤ãï¼v0.5.0ããåã®ï¼ãã¼ã¸ã§ã³ã§ã®Gaurunã®å¦çããã¼ã§ãã
Gaurunãéçºãã彿ã¯ã¾ã HTTP/2ã¯å©ç¨å¯è½ã§ã¯ãªããGCMã¨APNsã¨ã§ããããç°ãªããããã³ã«ãå©ç¨ãã¦éä¿¡ããå¿ è¦ãããã¾ãããå ·ä½çã«ã¯GCMã¯HTTPSãAPNsã¯TLSä¸ã§ç¬èªãããã³ã«ã§éä¿¡ããå¿ è¦ããããã¯ã©ã¤ã¢ã³ãããåãåã£ãJSONããGCMã¨APNsã®ã©ã¡ãã«éç¥ããããå¤å¥ãã¦ãã¾ããã
GCMã¯HTTPSãªãã¨ããã£ã¦æ¯è¼çãã³ããªã³ã°ã容æãªä¸æ¹ãAPNsã®æ¹ã¯ãããã³ã«ã®æ§è³ªä¸ä¸é¨ã®å¦çã®ï¼ç¹ã«ã¨ã©ã¼ã®ï¼ãã³ããªã³ã°ãè¡ãã®ãé£ãããtimeout_error
ãkeepalive_idle_timeout
ã¨ãã£ãAPNså°ç¨ã®ãªãã·ã§ã³ãç¨æããç¾½ç®ã«ãªã£ãããTCPã®ã³ãã¯ã·ã§ã³ãã¼ã«ãèªåã§ç®¡çããå¿
è¦ãããã¨ãã£ãäºæ
ãããã¸ãã¯ãè¤éã«ãªã£ã¦ãã¾ããã
ããããç¾å¨ã®Goã¯HTTP/2ããµãã¼ããã¦ãããAPNsãHTTP/2ã«å¯¾å¿ããAPNs Provider APIãæä¾ãã¦ãã¾ããããããé åãããªã¨æããä»å¹´ã®æ¥ã«Gaurunã®ã³ã¼ããå·æ°ãã¦GCMã¨APNsã¨ã®éä¿¡é¨åã«HTTP/2ãå©ç¨ããå®è£ ã«åãæ¿ãã¾ãããAPNs Provider APIã¨ã®ã¤ãªãè¾¼ã¿é¨åã«ã¯RobotsAndPencils/bufordãå©ç¨ãã¦ãã¾ããGCMã®æ¹ã¯Goã®ãã¼ã¸ã§ã³ä¸ããã ããªã®ã§æ¥½ã¡ãã§ããã
ã¾ã¨ã
Gaurunã®HTTP/2ãµãã¼ãã«ã¤ãã¦è§£èª¬ãã¾ãããå ã ã¯ã©ã¤ã¢ã³ãå´ããè¦ãã¨Gaurunã¯HTTP + JSONãã¼ã¹ã®APIãæä¾ãã¦ããã ãã§HTTP/2ãå©ç¨ãã¦ãããã©ããã¯ãã»ã©éè¦ã§ã¯ãªãã®ã§ããããµã¼ãå´ããè¦ãã¨HTTP/2ãå©ç¨ããããã«ãªã£ããã¨ã§ç¹ã«APNsã¨ã®éä¿¡å¦çãå¤§å¹ ã«é«éåãããã®ãä»åã®å¤æ´ã«ãã£ã¦ãããããã大ããªã¡ãªããã§ã¯ãªããã¨æãã¾ãã
ã¡ã«ã«ãªã§æ°è¨ã®ã¨ã³ã¸ãã¢ãã¸ã·ã§ã³ãBackend System Engineerã«ã¤ãã¦
話ã¯å¤ããã¾ãããã¡ã«ã«ãªã§ã¯å æããããã«ã¦ã§ã¢éçºå°ä»»ã®ã¨ã³ã¸ãã¢ãã¸ã·ã§ã³ã§ããBackend System Engineerã®åéãã¯ããã¾ããã
https://www.mercari.com/jp/jobs/backend/www.mercari.com
æ¥åå 容ã¯Gaurunãã¯ããã¨ããå¨è¾ºããã«ã¦ã§ã¢ãããããå©ç¨ããã·ã¹ãã ã®éçºã«ãªãã¾ãã以ä¸ã¯ãã®ä¸ä¾ã§ãã
- 大éã¦ã¼ã¶åãã®ããã·ã¥éç¥ã·ã¹ãã ã®éçº
- gRPCã«ããMicroservicesã¢ã¼ããã¯ãã£ãå®è·µããã·ã¹ãã ï¼èªè¨¼ã課éçï¼ã®éçº
- JSON-RPCãã¼ã¹ã®APIã²ã¼ãã¦ã§ã¤ã®éçº
- OpenRestyã«ãããã°åæåºç¤ã®ããã®ããã³ããµã¼ãã®éçº
éçºè¨èªã¯Goãã¡ã¤ã³ã§ããèå³ãããæ¹ã¯ãã²ãé£çµ¡ãã ããã