Alexander Dubrovin ïŒ adbrvn ïŒã圌ã®ã¬ããŒãã§Highload ++ 2017ã§ææ¡ããã®ã¯ãã®ã¢ãããŒãã§ãã ã
![](https://habrastorage.org/webt/39/kx/db/39kxdbltsjlidqd7mx5sethsp7e.jpeg)
ã¹ããŒã«ãŒã«ã€ããŠïŒ Alexander Dubrovinã¯Superjobã§åããŠããŸãã ãã®äŒç€Ÿã®ãããžã§ã¯ãã¯éåžžã«è² è·ãé«ãããšãç¥ãããŠããŸãã ããããä»æ¥ã¯ããŒã¿ã«ã«ã¢ã¯ã»ã¹ãããŠãŒã¶ãŒã®æ°ããµãŒããŒã«ä¿åãããããŒã¿ã®éã«ã€ããŠã¯èª¬æããŸããããä»ã®ã€ã³ãžã±ãŒã¿ãŒã«ã€ããŠã¯è§ŠããŸãã
å°æ¥ãèŠæ®ããŠãå®éã«ã¯ãSuperjobã¯ãã¹ãã¹ã¿ã³ãã®æ°ãç¥ããŸããã ãããããŸãæåã«ã ã¡ãã£ãšãã話ããå§ããŸãããã
ã¡ãã£ãšããæŽå²
![](https://habrastorage.org/webt/kl/ak/13/klak138vhqhsi-f2yahh7teoqr0.jpeg)
å°ããªãããžã§ã¯ãSãæ³åããŠãã ãããã©ããã«ã³ãŒãããã¹ãããå¿ èŠãããéçºè ããŒã ãããŸãã ãã¹ããæŽçããããã«ããã¹ããã·ã³ãé 眮ããå®çšŒåã®ããã«èŠããããã§ã³ãŒããããŒã«ããå®è¡ããŸããéçºè ã¯ããã§ãã¹ããè¡ãããšãã§ããŸãã
ããæç¹ã§ãããŒã ã¯æé·ãå§ãããã¹ã¿ãŒã®ã¹ã¿ãããå¿ èŠã«ãªããŸãã QAã¹ãã·ã£ãªã¹ããç»å Žããã©ããã§ãã¹ãããå¿ èŠããããŸãã
ç°¡åãªã¢ãããŒãã䜿çšã§ããŸã-ãã¹ã¿ãŒã«ââããã€ãã®é åãå²ãåœãŠãããã§åãã³ããŒã転ãããšã圌ãã¯ãã§ã«ãã¹ãã§ããŸãã ãã¹ãŠãçŽ æŽããããšè¯ãã§ãïŒ
ãããžã§ã¯ãã¯æé·ãç¶ããè¿œå ã®éçºããŒã ãçŸããŸãã ãŸããã©ããã§ãã¹ãããå¿ èŠããããŸãã ãã®ã¢ãããŒãã¯ãã§ã«ããç¥ãããŠããŸã-ãã¹ããµãŒããŒã®å¥ã®éšåãåé¢ããŸãã
ãããå®éã«ã¯ãããŒã ãæé·ããŠããŸã-1ã€ã®ãã¹ããã³ãã§ã¯ååã§ã¯ãããŸããã ãŸããããå€ãã®ã¿ã¹ã¯ãå®è¡ããããããã¹ã¿ãŒã¯å€ãã®ãã¹ããè¡ãå¿ èŠããããŸãã
![](https://habrastorage.org/webt/ah/_b/6l/ah_b6ldkygjqqy-1hypped3-hhu.jpeg)
ãã®æ®µéã§ãé¢çœã話ã«æ°ã¥ãå§ããããšãã§ããŸãã äœããã®åé¡ããã¹ãããããã¹ã¿ãŒVasyaããããšããŸãã 圌ã¯ãã¹ããã³ããéžæããããã§ã³ãŒãã転ãããŠãã¹ããéå§ããŸãã 圌ã¯ã¯ãªãã¯ããã¯ãªãã¯ããäœããæ£ãããªãããšãäœããæ©èœããŠããªãããšããããŠäžè¬çã«ã¿ã¹ã¯ãå®äºããŠããªãããšãèªèããŸãã
ãã±ããã¯JIRAã«èœã¡å§ããéçºè ã¯æ¬¡ã®èšèã§Vasyaã®è¿ãã«éãŸãå§ããŸãã ããããŠãæçµçã«èª°ããå°ããŸãïŒããããŠãããªãã¯ãã¹ãã®ããã«ã©ã®ãã©ã³ããå±éããŸãããïŒ ãã©ã³ãã¯ããã«ä¿®æ£ãããJIRAã®ãã±ããã¯ã¯ããŒãºãããŸãããã¹ãŠåé¡ãããŸããã Vasyaã¯ãã¹ããç¶ãããã¹ãŠã圌ã®ããã«æ©èœããŠããŸãã
ãããããã®æç¹ã§ãéšå±ã®å察åŽã§ãVovaã®éçºè ã¯ãå¥åŠãªããšã§ããããªãç§ã«ã¯ããŸããããªãã®ã§ããïŒããšèããŸãããããã圌ã¯ããã«ãã©ã³ããåãã§ã¯ãªãããšã«æ°ä»ããŸãã å¿ èŠãªãã®ãå±éãããšãVasyaã¯åã³åé¡ãæ±ããŠããŸãã
æ°åã®å埩ã§ã圌ãã¯åããã¹ããã³ãã§ãã¹ãããŠããã ãã§ãäºãã«å¹²æžãåã£ãŠããããšã«æ°ä»ããŸãã ãã®çµæã æéã®æµªè²» ãVasyaãšVovaã¯äžå¹žã§ãã
å¥ã®è©±ã éçºè ã®Kolyaã¯Vasinaã®åé¡ãç¥ã£ãŠãããäºåã«åœŒã«æ¥ãŠãã©ã®ãã¹ããã³ããçŸåšç¡æããå°ããŸãã Vasyaã¯ç¡æã瀺ãããã¹ãŠãé 調ã§ãã æ°æ¥åŸã圌ãã¯åã³äŒããVasyaã¯Kolyaã«å°ããŸããããã¹ããã³ããç§ãã¡ã«è¿ããŸããïŒ 1æéãããŠã2æ¥ãçµéããŸãããã
ãããŠåã³åé¡-éçºè ãå¥ã®ã¹ã¿ã³ããæ¢ããããã¹ããå®äºãããŸã§èª°ããå æ°ã«åŸ ã€ã§ãããã
å®éãäžã®å³ã«ãã¹ãŠã衚瀺ãããŠããããã§ã¯ãããŸããã ãããŒãžã£ãŒãäžè¶³ããŠããŸãã ãããŒãžã£ãŒã¯ããŸã ãã¹ããããŠããªãçã®ã³ãŒããèŠããå ŽåããããŸãã ã¢ãããŒãã¯æšæºã§ã-ãã¹ããµãŒããŒã®ã³ãŒããŒãåã³åŒ·èª¿è¡šç€ºãããã¹ãã¹ã¿ã³ããäœæããŸãã
ãã®ã·ã¹ãã ã®æåŸã®éšåã¯ãã¡ããCIã§ãã圌ã¯ã©ããã§æ®åœ±ããã©ããã§ãã¹ãããããšèããŠããŸãã
ãã®ãããªã¹ããŒã ãã¹ã ãŒãºã«éçºããããšã§ããã¹ããã³ãã®å¶åŸ¡äžèœãªå€æŽãååŸã§ããŸã ã ãã®ãããªã¹ã¿ã³ããå®éã«å¶åŸ¡ããªããšããç¹ã§ããã®ã¹ããŒã ã¯è¯ããããŸãã-ããããŸããïŒ
- çŸåšãã®ã¹ã¿ã³ãã§ãã¹ãããŠããã®ã¯èª°ã§ããã
- ããã«å±éãããŠãããã®;
- 圌ãå¿ããã®ã空ããŠãããã¯ãŸã£ããããããŸããã
ããã«ãã©ã®ãã¹ããã³ããçŸåšç¡æã§ãããã¯ããããŸããããã®æç¹ã§ããã€ãã®ãã¥ãŒãååšããå¯èœæ§ããããŸãã
ã¢ã€ãã¢
ãã®ç¬éãç§ãã¡ã¯èããŸãã-äœããã¹ããïŒ ãªãããã»ã©å€ãã®ãã¹ãã¹ã¿ã³ããå¿ èŠãªã®ã§ããïŒ å¿ èŠãªãšãã«æ£ç¢ºã«ãã¹ããã³ããäœæããŠã¿ãŸãããïŒ ãã¹ããã³ããå¿ èŠã«ãªããŸãã-äœæããŸããããäžèŠã§ã-åé€ããŸããã
ãã®ã¢ã€ãã¢ã®æ¬¡ã®ã¹ãããã¯ãåã³ãŒããã©ã³ãã®ãã¹ããã³ããäœæããããšã§ãã
è¯ãã¢ã€ãã¢ã®ããã«æããŸãããæè¡çãªãã¥ã¢ã³ã¹ããããŸãã ã¹ã¿ã³ããå¿ èŠã§ãã
- ç¬ç«ãã ;
- æ¬çªãšéåžžã«ãã䌌ãŠããŸã -æ¬çªç°å¢ã«ããè¿ããã¹ããè¡ããŸãã
- ããã«ã¹ã¿ã³ããäœæã§ããããããã©ã³ãã衚瀺ããããšããã«ããã¹ãã¹ã¿ã³ããããäžã«è¡šç€ºãããŸãã
çæ³çã«ã¯ãã ãã¹ããã³ããäœæãã ããã¿ã³ã1ã€å¿ èŠã§ãã
å³ããçŸå®
ç§ãã¡ãæã£ãŠããå³ããçŸå®ããŸã ãããŸãïŒ
- 倧ããªè€éãªãããžã§ã¯ã-ããªãé·ãæŽå²ãæã€å·šå€§ãªPHPã¢ããªã¹ã
- 4ã€ã®ãã¡ã€ã³ãŸãŒã³ã§ã®ãµãŒãã¹ã ãã·ã¢ããŠã¯ã©ã€ãããŠãºãã¯ããã©ã«ãŒã·ã®åãŸãŒã³ãåæã«ãµããŒãããŠããŸãã
- APIãstudents.superjob.ruãªã©ã®ãµããã¡ã€ã³ã®éãŸãâãžãªãã¡ã€ã³ãšãµãŒãã¹ãµããã¡ã€ã³ã
ãããŠãããæç¹ã§ããã¹ã¿ãŒã¯ããããã¹ãŠãã¹ãããããšæãã§ãããã çŸåšãŠã¯ã©ã€ãã§ãã¹ãããŠããªããŠããææ¥ã¯ãŠã¯ã©ã€ãåŽã®ç¹å¥ãªããŒãžãäœæããã¿ã¹ã¯ããããŸãããããèæ ®ããå¿ èŠããããŸãã
ããã«èšã£ãŠãã£ãïŒ
Docker / docker-compose
ãŸãããã¹ãã¹ã¿ã³ããåé¢ããå¯èœãªéãåæ§ã«ããå¿ èŠããããšããäºå®ã«ã€ããŠèª¬æããŸããã æè¿ã§ã¯ãããã«ããdockerãå®è£ ã§ããŸãã ã³ã³ãããå®è¡ããæ©äŒãäžããããŸãã æããã«ã 1ã€ã®ã³ã³ããã§ç®¡çããããšã¯ãããŸãã ãããã«ãåæ§ã®ã¹ã¿ãã¯ãããããèµ·åããå¿ èŠããããŸãã ãããã£ãŠã docker-composeãå¿ èŠã§ãã
çŽ æŽããã-ç§ãã¡ã¯æž¯æ¹ŸåŽåè ã䜿çšããŸã-ããã¯ã¹ã¿ã€ãªãã·ã¥ã§ãã¡ãã·ã§ããã«ãªè¥è ã§ãã
Dockerã¯ãã€ã¯ããµãŒãã¹ã¢ãããŒããæšé²ããŠããŸãããããã§ã¯ã¢ããªã¹ãããããã«åé¡ã«çŽé¢ããŠããŸãã
ãã€ã¯ããµãŒãã¹ã§ã¢ããªã¹ãåæžããã®ã«ãããè²»çšãèŠç©ããããšããããšã¯ãããŸããïŒ æããã«ããã®æ°åã¯äººå¹Žã§æž¬å®ãããŸãã
ããæç¹ã§ãã·ã¹ãã ã®ã³ã³ããŒãã³ãå³ãèŠãŠãããã«ããŒããã©ã³ã·ã³ã°ãããããšã確èªããŸãããããã¯phpã¢ããªã±ãŒã·ã§ã³ãããã¯node.jsã¢ããªã±ãŒã·ã§ã³ã§ãã ãµãŒãã¹ãšããŠããã ããå§ããŠã¿ãŸãããã Dockerã³ã³ããã§å®è¡ã§ãããã®ãèŠã€ããŸãããã
ãããã¯ãŒã¯ãèšå®ããŸãã
ããã«ããã¹ããã³ãã«äœããã®æ¹æ³ã§å°éããå¿ èŠããããŸãã åœç¶ããã©ãŠã¶ããã¹ãã¹ã¿ã³ããéãããšãã§ããããã«80çªç®ã®ããŒããåŒãåºãå¿ èŠããããŸãããåããã·ã³å ã§ãã®ãããªã¹ã¿ã³ããèµ·åããå Žåã¯ãIPãçºè¡ããå¿ èŠããããŸãã
ããã¥ã¡ã³ãã«ã¯ããããã¯ãŒã¯ã®ã»ããã¢ããã«é¢ãã倧ããªã»ã¯ã·ã§ã³ããããŸãã
Dockerã¯ããŸããŸãªã¿ã€ãã®ãããã¯ãŒã¯ã䜿çšã§ããŸãã ç§ãã¡ã®å Žåãmacvlanã®ãããªãããã¯ãŒã¯ãæ¬åœã«åœ¹ç«ã¡ãŸããã ããã¯ã1ã€ã®ç©çãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã«ä»®æ³ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã®ãã³ãã«ãå®è£ ã§ãããã¯ãããžãŒã§ãã åæã«ãdockerèªäœããããã®ã€ã³ã¿ãŒãã§ã€ã¹ã管çããŸãïŒäœæããã·ã³ãžã®è¿œå ããã¹ããã·ã³ã«é¢é£ããå€éšIPã¢ãã¬ã¹ã®åä¿¡ã
ãããã£ãŠãã³ã³ãããŒã®ããã¯ãéå§ããããã³ãã³ã³ãããŒïŒãã©ã³ãµãŒïŒã«å€éšIPã¢ãã¬ã¹ãååŸãããã®80çªç®ã®ããŒããéãæ©äŒãäžããããšãã§ããŸãã ãã©ãŠã¶ã䜿çšããŠããã§ã«ãããããã¯ããããšãã§ããŸãã
DNSãšAPIãäžãã
ãã¡ã€ã³ãŸãŒã³ãšå€æ°ã®ãµããã¡ã€ã³ãããããšãèŠããŠããŸãã ãããã£ãŠã2çªç®ã®ã¬ãã«ã®ãã¡ã€ã³ã§ã®ã¿ãã¹ããã³ãã«ã¢ã¯ã»ã¹ã§ããŸãã 巚倧ãªãã©ã¹ãšå·šå€§ãªãã€ãã¹ã®äž¡æ¹ããããŸãïŒ
- ãã€ãã¹ -ãŸãŒã³ããšã«ruãuaãuzã®å®éã®ãã¡ã€ã³ãã©ããããããéè€ãããå¿
èŠããããŸãã
- ããã« ã第2ã¬ãã«ã®ãã¡ã€ã³ãšããŠããã©ã³ãã®ç¹å®ã®ååãçŽæ¥çž«ãããšãã§ããŸã-åã³ãŒããã©ã³ãã®ãã¹ãã¹ã¿ã³ããè¡ããŸãã
ãããã£ãŠã æ確ã§ç°¡æœã§æ確ãªã¢ãã¬ã¹ãååŸããŸã ããã®ã¢ãã¬ã¹ã«ã¯ ããã§ã«ã³ãŒãåå²ã®æ瀺ãå«ãŸããŠããŸãã
æ¬ ç¹ã¯æ¬åœã«ç°¡åã§ãã ãã¡ã€ã³ããªãŒããŒã©ããããå¿ èŠãããå Žåã¯ããã¬ãã£ãã¯ã¹ãè¿œå ããã ãã§ããªãŒããŒã©ãããããã¡ã€ã³ã®ã»ãããå¶éããŸããããã¯æ¢ã«ææ ¢ã§ããŸãã
ãã®äŸã§ã¯ãsjãã¬ãã£ãã¯ã¹ãéžæããŸããã ãã¡ã€ã³ãsjãã¬ãã£ãã¯ã¹ã®ã¿ã§ãªãŒããŒã©ããããå¿ èŠãããããšãããããŸããæããã«ãããã®å€ãã¯ãããŸããã
DNSã®ãã1ã€ã®éšåã¯APIã§ãã ãã§ã«è¿°ã¹ãããã«ããã¹ãã¹ã¿ã³ãããã°ããäžããå¿ èŠããããŸãã ãããã£ãŠãèªåã¢ãŒãã®APIã§ãšã³ããªããã°ããè¿œå ããã³åé€ã§ããDNSãµãŒããŒãå¿ èŠã§ãã
ãœãªã¥ãŒã·ã§ã³ã¯PowerDNSã§ãã ãã®ãµãŒããŒã䜿çšãããšãAPIããã°ããç°¡åã«åºå®ããã¹ã¯ãªããã䜿çšããŠãã¹ãã¹ã¿ã³ããè¿œå ããã³åé€ã§ããŸãã
ãããïŒ DNSãäœæããã³æ§æããã³ã³ããã«IPãç»é²ããããã«æããŸããããäœããæ¬ èœããŠããŸãã
SSL-CAã®äœæ
ç§ãã¡ã¯21äžçŽã«äœãã§ããŸãã æããã«ããã¹ãŠã®ã€ã³ã¿ãŒãããSSLããã³ãã¹ãã¹ã€ãŒãã¯SSLããµããŒãããå¿ èŠããããŸã ã ååãªãã°ã¯SSLåºæã®ãã®ã§ãããæ··åã³ã³ãã³ãã¯æ°·å±±ã®äžè§ã«ãããŸããã
åèšã§ã蚌ææžãè¿ éã«ååŸãããããäžæäžã®ãã¹ããã³ãã«è¿ éã«é©çšããæ¹æ³ãå¿ èŠã§ãã åœç€Ÿã«ã¯ãã§ã«OpenSSLã«åºã¥ãèªèšŒå±ããããŸããã ããã§ã¯ãèªè»¢è»ãæžãç°¡åãªæ¹æ³ã䜿çšããŸããã
èªè»¢è»ã¯1æ¥ã§äœæãããGETèŠæ±ã䜿çšããŠãç¹å®ã®ãã¡ã€ã³åã«å¯ŸããŠæ¢ã«çæããã蚌ææžãåä¿¡ã§ããŸãã
æå°ã®ãŸãŸã§ãã ãã®ãã¹ãŠã1ã€ã®ãã¿ã³ã§è¡ãããããããããèªååããå¿ èŠããããŸãã
èªåå
ç§ãã¡èªèº«ã®åæ段éã§ã¯ããã¹ããã³ããåçŽã«äžãããåé€ããããšãã§ããã³ã³ãœãŒã«ã¹ã¯ãªãããäœæããŸããã
æããã«ãããã¯ãã¹ã¿ãŒã«ââãšã£ãŠããŸã䟿å©ã§ã¯ãããŸããã ãããã£ãŠãããšãã°ããã¹ããã³ããçµã¿ç«ãŠãŠå®è¡ããç¹å¥ãªã¢ã»ã³ããªãäœæã§ããŸãã
ããããå®éã«ã¯ããã®ç¹ã§æãã¯ãŒã«ãªã¹ãããã¯ãJIRAãã±ããã«ãã®ãããªãã¿ã³ãçŽæ¥è¿œå ããããšã§ãã ãã¹ã¿ãŒãJIRAãã±ãããéãããªã¯ãšã¹ããèªã¿åãããã¿ã³ãæŒããŠãæ°åã§ãã¹ããã³ããåãåããšæ³åããŠãã ããã
é·æ
- åœåããã¹ã¿ãŒãèªåã®ã³ãŒãã®ä»»æã®ããŒãžã§ã³ãå®è¡ããŠã¯ãªãã¯ã§ããããã«ããããæåãã¹ãå°çšã«èšç»ããŸããã
- 次ã®è¿œå ããŒãã¹- ãã¢ãã¹ãããããŸã ã ããã¯åãã§ãããã¹ã¿ãŒã®ã¿ãJIRAãã±ãããå
¥åããããããžã§ã¯ããããŒãžã£ãŒãå
¥åããŸãã ãŸããçã®ã³ãŒããèŠãŠã¯ãªãã¯ããããšãã§ããŸãã
- CIã«å€§ããªãã©ã¹ãç²åŸããŸããã CIããŸã£ããåãæ¹æ³ã§æãããã¹ããã³ããç¹å®ã®ããŒãžã§ã³ã®ã³ãŒãã«äžããŠããåé€ãããšãã©ã®ãã©ã³ãã§ã絶察ã«ãã¹ãŠã®ãã¹ããå®è¡ããæ©äŒããããŸããã æãè€éãªã€ã³ã¿ãŒãã§ã€ã¹ã®ã»ã¬ã³ãã¹ãã§ããããããžã§ã¯ãã®ä»»æã®ãã©ã³ãã«å¯ŸããŠã¯ã³ã¯ãªãã¯ã§å®è¡ã§ããŸãã
çæ
ããããã¹ã¿ã³ãã®ç®¡çã«ã¯åŸ®åŠãªæ¬ ç¹ããããŸã ã ããããæ£ãã管çããæ¹æ³ãåŠã¶å¿ èŠããããŸãã
ã·ã¹ãã ã®æåã®ããŒãžã§ã³ãå€ãè匱ãªãµãŒããŒã«å±éããæ°ãããã©ã³ãããšã«ãã¹ãã¹ã¿ã³ãã®äœæãã»ããã¢ããããŸããã ãã¡ããã1æ¥ãååã§ãµãŒããŒã察åŠã§ããŸããã§ãã -åã«å€ãã®ãã©ã³ããããããã§ãã
次ã«ããããã®èªåäœæãåæ¢ããJIRAã«ãã¿ã³ã衚瀺ãããCIã¯ãã¹ãã¹ã¿ã³ãã®éå§ãšåæ¢ããã°ã®åéãåŠã³ãŸããã
ãã®ã·ã¹ãã ã§ã¯è§£æ±ºã§ããªãã¿ã¹ã¯ã®ã¯ã©ã¹ãééããªããããŸãã ããšãã°ãé »ç¹ã«çºçãããããã¢ããã®åé¡ã¯ããã¹ãŠã®ã³ã³ããã®åèšæéã§ãã ãµãŒããŒã®æéãããããŠãããã€ãã®ã¿ã¹ã¯ããã¹ããããšäŸ¿å©ã§ãã æ®å¿µãªããããã®ã·ã¹ãã ã§ã¯ãã®ãããªåé¡ã解決ããããšã¯ã§ããŸããã ãã ãããã¹ãã®ããã«ã³ãŒãã«ç¹å¥ãªãã©ã³ããè¿œå ããããšã«ããããã®ãããªåé¡ã解決ã§ãããããããšãã°ã2é±éåŸã®ãã©ãŒã ã®åäœã確èªã§ããŸãã
ãŸãšã
å ¥ãå£ã«ã¯ãã¹ããã³ãã®ã·ã¹ãã ãããããã¹ããã³ããæ¢ãããšãäœåãªãããããããã®ãã¹ããã³ãã§èª°ãå¹²æžããªããšããä¿èšŒã¯ãããŸããã§ããã
ãVasyaããããŠã©ããªçš®é¡ã®ãã¹ããç¡æã§ã-ç§ã¯èªåã®ã¿ã¹ã¯ããã¹ãããã®ã§ããã
åºåã¯1ã€ã®ãã¿ã³ã§ ãã¯ãªãã¯ããŠæ°åã§ç¹å®ã®ããŒãžã§ã³ã®ã³ãŒãã®å®æãããã¹ããã³ããååŸã§ããŸãã è€æ°ã®äººããã®ã¹ã¿ã³ãã䜿çšããŠããå Žåã§ãããããã®äººããã®ç¹å®ã®ããŒãžã§ã³ã®ã³ãŒããèŠãããšæãããšãä¿èšŒãããŠããŸãã
ããã¿ã³ãæŒããšã1ååã§ç¹å®ã®ã¿ã¹ã¯çšã®æ°ãããã¹ãã¹ã¿ã³ããæã«å ¥ããŸããã
ããŒãã¹ãšããŠããã¹ãŠã®ãã¹ããã¯ã³ã¯ãªãã¯ã§ååŸã§ããŸããã å ã»ã©èšã£ãããã«ãCIããçŽæ¥åå²ãããã¹ãŠã®ãã¹ãã¯ã1ã€ã®ãã¿ã³ã§éžæãããŸãã ãã®åŸããã·ã³ã¯ãã¹ãŠãå®è¡ããŸãããã¹ããã³ããäžããçºå°ãããã°ãåéããŠåé€ããŸãã
æåã®è³ªåã«æ»ããŸããããã¹ãã¹ã¿ã³ãã¯ããã€å¿ èŠã§ããã å¿ èŠãªãã¹ãã¹ã¿ã³ãã®æ°ã¯ããããŸãããä»æ¥å¿ èŠãªãã¹ãã¹ã¿ã³ãã¯20ãææ¥-15ãæåŸæ¥ã®25ã§ãã
ãããã ããã§å¿ èŠãªæ°ã®ãã¹ããã³ããããããšã¯ç¢ºãã§ãã
æéãçµã¡ã RIT ++ã«ã³ãã¡ã¬ã³ã¹ãã§ã¹ãã£ãã«ã®åã«ã¯ã»ãšãã©æ®ã£ãŠããŸãããã5æ28æ¥ãš29æ¥ã«ã¹ã³ã«ã³ãã§éå¬ãããããšãæãåºããŸãã ãã®æ©äŒãå©çšããŠãå¹ åºããªã¹ããŒåãã®RootConfã¢ããªã±ãŒã·ã§ã³ã®å°ããªã»ã¬ã¯ã·ã§ã³ã玹ä»ããŸãã
- ãããšã«ã»ãã¬ãªã³ ïŒãã€ã¯ããœããïŒã ã·ã³ãã«ãªããŒã«ã䜿çšãããèªåã§ä¿¡é Œæ§ã®é«ã管çå¯èœãªå±éã
- ã¢ã¬ã¯ã»ã€ã»ãã©ãžãã§ã³ã³ ïŒãã«ã³ãïŒã ããã¡ããŠã¹ææšã®é·æä¿åã
- ããã€ã«ã»ã¯ãºãã³ ïŒJetBrainsïŒã ä»®æ³ãã·ã³é ä¿¡ãã€ãã©ã€ã³ã
- ãã³ã©ã€ã»ã·ãŽã³ ïŒokmeter.ioïŒã è² è·åæ£ã埮調æŽããŸãã
ããªãã¯ãŸã ãã±ãããäºçŽããããšãã§ããŸãããå¿ããªãã§ãã ãããäŸ¡æ Œã¯çå®ã«å¢å ããŠããŸãã