
GitHub ã«ããã·ã¥ããã¨ä½ãèµ·ããã®ã§ãããï¼ããªãã¸ããªã«ç§ã®å¤æ´ãåæ ãããããããã¯ããªã¢ã¼ãã®åç §å ãæ´æ°ããããã¨ããçããæ£ããããããã¾ãããããã¤ãä¾ãæãã¦ã¿ã¾ãããï¼
- ãã«ãªã¯ã¨ã¹ããåæããã¾ããã¤ã¾ãããã«ãªã¯ã¨ã¹ãã®å·®åã¨ã³ãããããæ°ããããã·ã¥ããã夿´ãåæ ãã¾ãã
- ããã·ã¥ãããã¦ã§ãããã¯ããã£ã¹ãããããã¾ãã
- ã¯ã¼ã¯ããã¼ãããªã¬ã¼ããã¾ãã
- ã¢ããªã®è¨å®ãã¡ã¤ã«ï¼Dependabot ã GitHub Actions ãªã©ï¼ãããã·ã¥ããã¨ãã¢ããªãèªåçã«ãªãã¸ããªã«ã¤ã³ã¹ãã¼ã«ããã¾ãã
- GitHub ãã¼ã¸ãå ¬éããã¾ãã
- Codespacesã®è¨å®ãæ´æ°ããã¾ãã
- ããã«è²ããªãã¨ãããã¾ãã
ãããã¯éè¦ãã®ã®ä¸é¨ã§ãããã·ã¥ãããã³ã«è¡ããããã¨ã®ã»ãã®ä¸ä¾ã«ããã¾ãããå®éãGitHubã¢ããªã¹ã§ã¯ãããã·ã¥ã«ç´æ¥åå¿ãã¦å®è¡ããã60以ä¸ã®ãã¸ãã¯ã20ã®ç°ãªããµã¼ãã¹ã«ããã¾ããã³ã¼ããGitHubã«ããã·ã¥ãããã¨ãé¢ç½ããã¨ãããããèµ·ãã¦ããã¯ãã§ããããæå³ãGitHubã¯ã³ã¼ãã®ããã·ã¥ã大ããªä½ç½®ãå ãã¦ãã¦ãããªããã³ã¼ããããã·ã¥ããã¨1ã¯ã¼ã«ãªãã¨ãèµ·ããå ´æãªã®ã§ãã
åé¡ç¹
ãã¾ãã¯ã¼ã«ã§ãªãã®ã¯ãã¤ãæè¿ã¾ã§ããããã®ãã¨ããã¹ã¦ãåä¸ã®å·¨å¤§ãªããã¯ã°ã©ã¦ã³ãã¸ã§ãã§è¡ããã¦ãããã¨ã§ããGitHub ã® Ruby on Rails ã¢ããªã¹ã¯ãããã·ã¥ã®éç¥ãåãããã³ã« RepositoryPushJobã¨å¼ã°ãã巨大ãªã¸ã§ãããã¥ã¼ã«å ¥ãã¾ãããã®ã¸ã§ãã¯ãã¹ã¦ã®ããã·ã¥å¦çãã¸ãã¯ã®æ¬æ å°ã§ããããã®å¤§ããã¨è¤éããå¤ãã®åé¡ãå¼ãèµ·ããã¦ãã¾ããããã®ã¸ã§ãã¯ã次ã®ãããªé·ãä¸é£ã®ã¹ããããæ¬¡ã ã¨ããªã¬ã¼ãã¾ãï¼
ãã®å³ã«ã¯ããã¤ãåé¡ãããã¾ãã®ã§ãã¤ã©ã¤ããã¦ã¿ã¾ãããï¼
- ãã®ã¸ã§ãã¯å·¨å¤§ã§ãå試è¡ãå°é£ã§ãã
RepositoryPushJob
ã®ãµã¤ãºã§ã¯ãç°ãªãããã·ã¥å¦çã¿ã¹ã¯ãæ£ããå試è¡ããã®ã¯é常ã«å°é£ã§ãããå試è¡ã§ã¯ãã¸ã§ãã®ãã¹ã¦ã®ãã¸ãã¯ãæåããç¹°ãè¿ããããããåã ã®ã¿ã¹ã¯ã«ã¯å¿ ãããé©åã§ã¯ããã¾ãããä¾ãã°- ãã¼ã¿ãã¼ã¹ã¸
Push
ã®ã¬ã³ã¼ãã®æ¸ãè¾¼ã¿ã¯ãã¨ã©ã¼æã«èªç±ã«å試è¡ãããã¨ãã§ããããã·ã¥å¾ãã¤ã¾ã§ãå試è¡ã§ããå¾ã ã«éè¤ãã¼ã¿ãå¦çã§ãã¾ãã - 䏿¹ãããã·ã¥ã»ã¦ã§ãããã¯ã®éä¿¡ã¯ãããæéã«ã·ãã¢ã§ãããã·ã¥ãçºçãã¦ãããã¾ãæéãçµã£ã¦ããå試è¡ãã¹ãã§ã¯ããã¾ãããã¾ããåãã¦ã§ãããã¯ãè¤æ°ãã£ã¹ããããããã¨ãæã¾ããããã¾ããã
- ãã¼ã¿ãã¼ã¹ã¸
- ãããã®ã¹ãããã®ã»ã¨ãã©ã¯ãã¾ã£ããå試è¡ããã¾ããã§ãããä¸è¨ã®ãããªãªãã©ã¤ã«é¢ããç¸åããåé¡ãããæçµçã«
RepositoryPushJob
ã®å試è¡ã¯ã»ã¨ãã©ã®å ´ååé¿ããããã¨ã«ãªãã¾ããããããã1ã¤ã®ã¹ãããã§ã¸ã§ãå ¨ä½ãçµäºããã®ãé²ããããããã·ã¥å¦çãã¸ãã¯ã®å¤ãã¯ãããããã¨ã©ã¼ããã£ããããã³ã¼ãã«å ã¾ãã¦ãã¾ããããã®ãªãã©ã¤ã®æ¬ å¦ããããã·ã¥å¦çã®éè¦ãªé¨åãå®è¡ãããªãåé¡ã«ã¤ãªããã¾ããã - å¤ãã®æ¸å¿µãè¤éã«çµ¡ã¿åããã¨ã§ãåé¡ã®å½±é¿ã¯åºç¯å²ã«åã³ã¾ããããã®ã¸ã§ãã«å«ã¾ããæ°åã®ã¿ã¹ã¯ã®ã»ã¨ãã©ã¯ãã¹ã¦ã®ã¨ã©ã¼ããªã«ããªã¼ãã¾ããããæ´å²çãªçµç·¯ãããã¸ã§ãã®æåã®æ¹ã«ããããã¤ãã®ä½æ¥ã¯ãªã«ããªã¼ãã¾ããã§ãããããã¯ãå¾ã®ãã¹ã¦ã®ã¹ãããããã¸ã§ãã®åæé¨åã«æé»ã®ä¾åé¢ä¿ãæã¤ãã¨ãæå³ãã¾ãããåãã¸ã§ãå
ã§ããå¤ãã®æ¸å¿µäºé
ãçµã¿åããããã«ã¤ãã¦ãã¨ã©ã¼ãã¸ã§ãå
¨ä½ã«å½±é¿ãåã¼ãå¯è½æ§ãé«ã¾ãã¾ãã
- ãã¨ãã°ã
Pushes
MySQLã¯ã©ã¹ã¿ã¸ã®ãã¼ã¿æ¸ãè¾¼ã¿ã¯ãRepositoryPushJob
ã®æåã®ã»ãã§çºçãã¾ãããããã¯ããã以éã«çºçãããã¹ã¦ã®å¦çãããã®ã¯ã©ã¹ã¿ã«æé»ã®ä¾åé¢ä¿ãæã¤ãã¨ãæå³ãã¾ãããã®æ§é ã«ããããã«ãªã¯ã¨ã¹ãã«ã¯ãã®ã¯ã©ã¹ã¿ã«æ¥ç¶ããæç¤ºçãªå¿ è¦æ§ããªãã«ããããããããã®ãã¼ã¿ãã¼ã¹ã¯ã©ã¹ã¿ããã®ã¨ã©ã¼ã«ãã£ã¦ã¦ã¼ã¶ã¼ã®ãã«ãªã¯ã¨ã¹ããåæãããªãã¨ããã¤ã³ã·ãã³ããçºçãã¾ããã
- ãã¨ãã°ã
- è¶ é·æéã®ã·ã¼ã±ã³ã·ã£ã«å¦çã¯ã¬ã¤ãã³ã·ã¼ã«æªå½±é¿ãããã¾ããæåã®æ°ã¹ãããã«ã¤ãã¦ã¯åé¡ãªãã¨ããæå¾ã«èµ·ãããã¨ã«ã¤ãã¦ã¯ã©ãã§ããããï¼ä»ã®ãã¸ãã¯ãå®è¡ãããã®ãå¾ ã¤å¿ è¦ãããã¾ãããã®æ§é ã«ãã£ã¦ããã«ãªã¯ã¨ã¹ãã®åæãå«ãã¦ã¼ã¶ã¼åãã®ããã·ã¥ã¿ã¹ã¯ã«1ç§ä»¥ä¸ã®ä¸è¦ãªå¾ ã¡æéãçºçãããã¨ãããã¾ããã
ç§ãã¡ã®ã¨ã£ã対å¿
é«ã¬ãã«ã§ã¯ããã®é常ã«é·ã鿬¡ããã»ã¹ããå¤ãã®åé¢ããã並åããã»ã¹ã«åãé¢ãã¾ããããã®éã«ã¯æ¬¡ã®ãããªã¢ããã¼ããã¨ãã¾ããï¼
- æ°ããKafkaãããã¯ã追å ããããã·ã¥ãã¨ã«ã¤ãã³ããçºè¡ããããã«ãã¾ããã
- å¤ãã®ããã·ã¥å¦çã¿ã¹ã¯ã®ããããã調ã¹ãææãããµã¼ãã¹ãè«ççãªé¢ä¿ï¼ä¾ãã°ãé åºä¾åé¢ä¿ãå試è¡å¯è½æ§ï¼ã«ãã£ã¦ã°ã«ã¼ãåãã¾ããã
- åã¿ã¹ã¯ã®ã¾ã¨ã¾ãã«ã¤ãã¦ãæç¢ºãªãªã¼ãã¼ã¨é©åãªãªãã©ã¤è¨å®ãæã¤æ°ããããã¯ã°ã©ã¦ã³ãã¸ã§ãã«é ç½®ãã¾ããã
- æå¾ã«ãæ°ãã Kafka ã¤ãã³ããçºè¡ããããã³ã«ããããã®ã¸ã§ããã¨ã³ãã¥ã¼ãããããã«è¨å®ãã¾ããã
- ãããè¡ãããã«ãç¬ç«ããã³ã³ã·ã¥ã¼ãã¼çµç±ã§Kafkaã¤ãã³ãã«å¿çãã¦ããã¯ã°ã©ã¦ã³ãã¸ã§ããã¨ã³ãã¥ã¼ããGitHubã®å é¨ã·ã¹ãã ãå©ç¨ãã¾ããã
ãã®ã¢ã¼ããã¯ãã£ããµãã¼ãããããã«ãç§ãã¡ã¯ä»¥ä¸ã®ãããªããã¤ãã®åéã§æè³ãè¡ãå¿ è¦ãããã¾ããï¼
- Kafka ã¤ãã³ãç¨ã«ä¿¡é ¼ã§ãããããªãã·ã£ã¼ã使ãã¾ãã
- ãã®ã¬ãã«ã®ãã¡ã³ã¢ã¦ãã«å¿ è¦ãªæ°ããã¸ã§ããã¥ã¼ãå¦çããããã«ãã¸ã§ãã¯ã¼ã«ã¼ã®å°ç¨ãã¼ã«ãè¨å®ãã¾ãã
- ãã®ãã¤ãã©ã¤ã³å ¨ä½ã®ããã·ã¥ã¤ãã³ãã®æµããæ³¨ææ·±ãç£è¦ããããã«ããã¯ãåé¡ãæ¤åºã§ããããã«ããªãã¶ã¼ãããªãã£ãåä¸ããã¾ããã
- æ°æ§ã®ãã¤ãã©ã¤ã³éã§ãã¼ã¿ã®æå¤±ãã¤ãã³ãã®äºéå¦çã®ãªã¹ã¯ãè² ããã¨ãªããæ°ã·ã¹ãã ãå¾ã ã«ãã¼ã«ã¢ã¦ãï¼å¿ è¦ã§ããã°ãã¼ã«ããã¯ï¼ã§ããããã«ãããããã¤ãã³ããã¨ã«ä¸è²«ããæ©è½ãã©ã°ãç«ã¦ãã·ã¹ãã ãèæ¡ãã¾ããã
ç¾å¨ã§ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãï¼
ããã·ã¥ãKafkaã¤ãã³ããããªã¬ã¼ããç¬ç«ããã³ã³ã·ã¥ã¼ãã¼ãçµç±ãã¦ãä»ã®ã³ã³ã·ã¥ã¼ãã¼ãæ°ã«ãããã¨ãªãã¤ãã³ããå¦çã§ããå¤ãã®ç¬ç«ããã¸ã§ãã«éããã¾ãã
çµæ
- åé¡çºçã®åå¾ãå°ãããªãã¾ããã
- ããã¯å³ãè¦ãã°ä¸ç®çç¶ã§ãã以åã¯ãé常ã«é·ãããã·ã¥å¦çããã»ã¹ã®1ã¤ã®ã¹ãããã§åé¡ãçºçããã¨ã䏿µã®ãã¹ã¦ã«å½±é¿ãåã¶å¯è½æ§ãããã¾ãããç¾å¨ã§ã¯ãããã·ã¥ã»ãã³ããªã³ã°ã®ãã¸ãã¯ã®ä¸é¨åã«åé¡ãçºçãã¦ãããã以å¤ã®é¨åã«å½±é¿ãåã¼ããã¨ã¯ããã¾ããã
- æ§é çã«ãããã¯ä¾åé¢ä¿ã®ãªã¹ã¯ãæ¸å°ããã¾ããä¾ãã°ãæ°ãããã¤ãã©ã¤ã³ã§1æ¥ã«å®è¡ãããããã·ã¥å¦çãªãã¬ã¼ã·ã§ã³ã¯ç´3åä»¶ããã以åã¯
Pushes
MySQLã¯ã©ã¹ã¿ã«æé»çã«ä¾åãã¦ãã¾ããããç¾å¨ã¯åé¢ãããããã»ã¹ã«ç§»åããããããã®ãããªä¾åé¢ä¿ã¯ããã¾ããã - ãã«ãããªã³ã°ã«ãã£ã¦æææ¨©ã«ããã广ãããã¾ããããããã®ã¸ã§ããåå²ãããã¨ã§ãããã·ã¥å¦çã³ã¼ãã®æææ¨©ã1ã¤ã®ãã¼ã ãã15人以ä¸ã®ããé©åãªãµã¼ãã¹ææè ã«åæ£ããã¾ãããã¢ããªã¹ã®æ°ããããã·ã¥æ©è½ã¯ãä»ã®ãã¼ã ã«æå³ããªãå½±é¿ãä¸ãããã¨ãªããææãã¼ã ã«ãã£ã¦è¿½å ãããå復ããã¾ãã
- ããã·ã¥ã¯ä½ã¬ã¤ãã³ã·ã¼ã§å¦çããã¾ãã
- ãããã®ã¸ã§ãã並åã«å®è¡ãããã¨ã§ãã©ã®ããã·ã¥å¦çã¿ã¹ã¯ãä»ã®ã¿ã¹ã¯ã®å®äºãå¾ ã¤å¿ è¦ãããã¾ãããããã¯ãããã·ã¥ã§çºçãããããããã¨ã®ã¬ã¤ãã³ã·ã¼ãæ¹åããããã¨ãæå³ãã¾ãã
- ä¾ãã°ããã«ãªã¯ã¨ã¹ãã®åææéãé¡èã«æ¸å°ãã¦ãããã¨ããããã¾ãï¼
-
ãªãã¶ã¼ãããªãã£ã®åä¸ã
- å°ããªã¸ã§ãã«åå²ãããã¨ã§ãåã¸ã§ãã§ä½ãèµ·ãã£ã¦ããããããæç¢ºã«ææ¡ãããã¨ãã§ãã¾ããããã«ãã£ã¦ã以åãããã¯ããã«ç´°ããã¹ã³ã¼ãã§è¦³æ¸¬ã¨ç£è¦ãè¨å®ãããã¨ãã§ããããã·ã¥ã«é¢ããããããåé¡ãç´ æ©ãçªãæ¢ãããã¨ãã§ãã¾ãã
- ããã·ã¥ã¯ãã確å®ã«å¦çããã¾ãã
- ããã·ã¥ãå¦çããã¸ã§ãã®ãµã¤ãºã¨è¤éããæ¸ãããã¨ã§ã以åã®ã·ã¹ãã ãããå¤ãã®ãã¨ããªãã©ã¤ã§ããããã«ãªãã¾ãããåã¸ã§ãã¯ããªãã©ã¤æã«ä»ã®ç¡é¢ä¿ãªãã¸ãã¯ã®åå®è¡ãå¿é ãããã¨ãªããããããã«é©ãããªãã©ã¤è¨å®ãæã¤ãã¨ãã§ãã¾ãã
- 失æãããã¨ãªãæå³ããããªãã¬ã¼ã·ã§ã³ããã¹ã¦å®äºããããã·ã¥ã»ã¤ãã³ãã”å®å
¨ã«å¦çããã”ããã·ã¥ã ã¨å®ç¾©ããã¨ãæ§ã·ã¹ãã ï¼
RepositoryPushJob
ï¼ã¯ããã·ã¥ã®ç´99.897%ãå®å ¨ã«å¦çãã¾ããã - æ°ãããã¤ãã©ã¤ã³ã§ã¯ææªã®å ´åã®æ¨å®ã§ã99.999ï¼ ã®ããã·ã¥ãå®å ¨ã«å¦çãã¾ãã
çµè«
GitHub ã¸ã®ã³ã¼ãã®ããã·ã¥ã¯ãéçºè ãæ¯æ¥ GitHub ã¨ããã¨ãããæãåºæ¬çãªãã®ã®ã²ã¨ã¤ã§ãããã®æ°ã¶æã®éã«ãç§ãã¡ã¯ã¦ã¼ã¶ã¼ããã®ããã·ã¥ãæ£ç¢ºãã¤å®å ¨ã«å¦çããã¢ããªã¹ã®è½åãå¤§å¹ ã«åä¸ããã¾ããããã®ãããªãã©ãããã©ã¼ã ã¬ãã«ã®æè³ãéãã¦ãç§ãã¡ã¯GitHubãå°æ¥ã«ããã£ã¦ãã¹ã¦ã®éçºè ï¼ã¨å½¼ãã®å¤ãã®ããã·ã¥ï¼ï¼ã®ããã®ãã¼ã ã«ããããåªãã¦ãã¾ãã
åè
- ãæ³åã®ã¨ãããGitHub ã«ã¯ããããã®ããã·ã¥ãå¯ãããã¦ãã¾ãããã®30æ¥éã§ã850ä¸äººã®ã¦ã¼ã¶ã¼ããç´5åã®ããã·ã¥ãããã¾ãããâ©ï¸
The post How we improved push processing on GitHub appeared first on The GitHub Blog.