Go ÇÁ·Î±×·¡¹ÖÀ¸·Î ¹è¿ì´Â Ŭ¶ó¿ìµå ³×ÀÌƼºê ¼ºñ½ºÀÇ ¸ðµç °Í!µµÄ¿(Docker), Äí¹ö³×Ƽ½º(Kubernetes), ÇÁ·Î¸ÞÅ׿콺(Prometheus) °°Àº Ŭ¶ó¿ìµå ³×ÀÌƼºê ±â¼úÀÇ °øÅëÁ¡Àº ¹«¾ùÀϱî¿ä? ¹Ù·Î Go¶ó´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ¸¸µé¾îÁ³´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ Ã¥Àº GoÀÇ ÀåÁ¡À» È°¿ëÇØ ¿¹ÃøÇÒ ¼ö ¾ø´Â ȯ°æ¿¡¼µµ È®Àå °¡´ÉÇÏ¸é¼ Åº·ÂÀûÀΠŬ¶ó¿ìµå ³×ÀÌƼºê ¼ºñ½º¸¦ °³¹ßÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁÝ´Ï´Ù. ƯÈ÷ Go ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ Áö´Ñ ·Î ·¹º§ÀÇ Æ¯Â¡, ¹Ìµé·¹º§ÀÇ µðÀÚÀÎ ÆÐÅÏ, ÇÏÀÌ·¹º§ ¾ÆÅ°ÅØó °í·Á »çÇ× µî¿¡ ¸ÂÃá ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±¸Á¶°ú ±¸¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.ÀÌ Ã¥¿¡¼´Â Go¸¦ ÀÌ¿ëÇØ °£´ÜÇÏÁö¸¸ ¸ðµç ±â´ÉÀ» °®Ãá ºÐ»ê Å°-°ª ÀúÀå¼Ò¸¦ ±¸ÃàÇÕ´Ï´Ù. ÀúÀå¼Ò¸¦ ±¸ÃàÇÏ¸é¼ Áß±Þ¿¡¼ °í±Þ °³¹ßÀÚ±îÁö Âü°íÇÒ ¼ö Àִ Ŭ¶ó¿ìµå ³×ÀÌƼºê °ü¸®¿Í ¹èÆ÷ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¸ð¹ü »ç·Ê¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ¿Ö Ŭ¶ó¿ìµå ³×ÀÌƼºê ¼ºñ½º¸¦ °³¹ßÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î Go¸¦ äÅÃÇß´ÂÁö¸¦ ÀÚ¿¬½º·´°Ô ¾Ë ¼ö ÀÖ½À´Ï´Ù.
ºÐÀÚ »ý¹°ÇÐ ÇÐÀ§¸¦ ÃëµæÇÑ °æÇèÀÌ ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î °³¹ß ¾÷°èÀÇ Àü¹®°¡ÀÔ´Ï´Ù. Ŭ¶ó¿ìµå ³×ÀÌƼºê ±â¼ú°ú Go ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¾ó¸® ¾î´äÅÍÀÌÀÚ ¿ËÈ£ÀÚÀ̸ç, ÇÁ·Î´ö¼Ç Ç°Áú ½Ã½ºÅÛ ±¸Ãà¿¡ ÇÊ¿äÇÑ »çÇ׿¡ °üÇØ ¿Á¤ÀûÀÎ °ü½ÉÀÌ ÀÖ½À´Ï´Ù. ºÐ»ê ½Ã½ºÅÛÀ» °üÂûÇÏ°í Á¶Á¤ÇÏ´Â Àü·«À» ±¸ÇöÇÏ´Â µ¥ ¸¹Àº ½Ã°£À» º¸³»´Â ÁßÀÔ´Ï´Ù.
Part 1 Ŭ¶ó¿ìµå ³×ÀÌƼºê·ÎÀÇ º¯È1Àå Ŭ¶ó¿ìµå ³×ÀÌƼºê ¾ÖÇø®ÄÉÀ̼ÇÀ̶õ? 1.1 Áö±Ý±îÁöÀÇ À̾߱â 1.2 Ŭ¶ó¿ìµå ³×ÀÌƼºê¶õ ¹«¾ùÀΰ¡? 1.2.1 È®À强 1.2.2 ´À½¼ÇÑ °áÇÕ 1.2.3 ź·Â¼º 1.2.4 °ü¸® ¿ëÀ̼º 1.2.5 °üÂû °¡´É¼º 1.3 Ŭ¶ó¿ìµå ³×ÀÌƼºê´Â ¿Ö Áß¿äÇÑ°¡? ¿ä¾à2Àå ¿Ö Go°¡ Ŭ¶ó¿ìµå ³×ÀÌƼºê ¼¼»óÀ» Áö¹èÇϴ°¡? 2.1 Go¸¦ ¸¸µé°Ô µÈ °è±â 2.2 Ŭ¶ó¿ìµå ³×ÀÌƼºê ¼¼°è¸¦ À§ÇÑ ±â´É 2.2.1 ÄÄÆ÷Áö¼Ç°ú ±¸Á¶ ŸÀÌÇÎ 2.2.2 ÀÌÇØÇϱ⠽¬¿î ¾ð¾î 2.2.3 CSP ½ºÅ¸ÀÏÀÇ µ¿½Ã¼º 2.2.4 ºü¸¥ ºôµå ¼Óµµ 2.2.5 ¾ð¾îÀÇ ¾ÈÁ¤¼º 2.2.6 ¸Þ¸ð¸® º¸¾È 2.2.7 ¼º´É 2.2.8 Á¤Àû ¸µÅ© 2.2.9 Á¤Àû ŸÀÌÇÎ ¿ä¾àPart 2 Ŭ¶ó¿ìµå ³×ÀÌƼºê GoÀÇ ±¸¼º3Àå Go ÇÁ·Î±×·¡¹Ö ±âÃÊ 3.1 ±âº» µ¥ÀÌÅÍ Å¸ÀÔ 3.1.1 ºÒ¸° 3.1.2 °£´ÜÇÑ ¼ýÀÚ 3.1.3 º¹¼Ò¼ö 3.1.4 ¹®ÀÚ¿ 3.2 º¯¼ö 3.2.1 ´ÜÃà º¯¼ö ¼±¾ð 3.2.2 Á¦·Î°ª 3.2.3 °ø¹é ½Äº°ÀÚ 3.2.4 »ó¼ö 3.3 ÄÁÅ×ÀÌ³Ê Å¸ÀÔ: ¹è¿, ½½¶óÀ̽º, ¸Ê 3.3.1 ¹è¿ 3.3.2 ½½¶óÀ̽º 3.3.3 ¸Ê 3.4 Æ÷ÀÎÅÍ 3.5 Á¦¾î ±¸Á¶ 3.5.1 forÀÇ Àç¹Ì 3.5.2 if ±¸¹® 3.5.3 switch ±¸¹® 3.6 ¿¡·¯ Á¦¾î 3.6.1 ¿¡·¯ Á¤ÀÇÇϱâ 3.7 ÇÔ¼ö¿¡ Àç¹Ì¸¦ ´õÇϱâ: °¡º¯ÀÎÀÚ¿Í Å¬·ÎÀú 3.7.1 ÇÔ¼ö 3.7.2 °¡º¯ÀÎÀÚ ÇÔ¼ö 3.7.3 À͸í ÇÔ¼ö¿Í Ŭ·ÎÀú 3.8 ±¸Á¶Ã¼, ¸Þ¼µå, ÀÎÅÍÆäÀ̽º 3.8.1 ±¸Á¶Ã¼ 3.8.2 ¸Þ¼µå 3.8.3 ÀÎÅÍÆäÀ̽º 3.8.4 ŸÀÔ ÀÓº£µùÀ» ÅëÇÑ ÄÄÆ÷Áö¼Ç 3.9 ÀåÁ¡: µ¿½Ã¼º 3.9.1 °í·çƾ 3.9.2 ä³Î 3.9.3 Select ¿ä¾à4Àå Ŭ¶ó¿ìµå ³×ÀÌƼºê ÆÐÅÏ 4.1 Context ÆÐÅ°Áö 4.1.1 Context°¡ ÇÏ´Â ÀÏ 4.1.2 Context »ý¼º 4.1.3 Context Á¾·á ½ÃÁ¡°ú ŸÀӾƿô Á¤ÀÇ 4.1.4 ¿äû ¹üÀ§ °ªÀÇ Á¤ÀÇ 4.1.5 Context »ç¿ëÇϱâ 4.2 ÀÌ ÀåÀÇ ±¸¼º 4.3 ¾ÈÁ¤¼º ÆÐÅÏ 4.3.1 ¼Å¶ ºê·¹ÀÌÄ¿ 4.3.2 µð¹Ù¿î½º 4.3.3 Àç½Ãµµ 4.3.4 ½º·ÎƲ 4.3.5 ŸÀӾƿô 4.4 µ¿½Ã¼º ÆÐÅÏ 4.4.1 ÆÒÀÎ 4.4.2 ÆҾƿô 4.4.3 ǻó 4.4.4 »þµù ¿ä¾à5Àå Ŭ¶ó¿ìµå ³×ÀÌƼºê ¼ºñ½º ±¸Ãà 5.1 ¼ºñ½º¸¦ ¸¸µé¾îº¾½Ã´Ù 5.1.1 Å°-°ª ÀúÀå¼Ò¶õ? 5.2 ¿ä±¸»çÇ× 5.2.1 ¸èµî¼ºÀ̶õ ¹«¾ùÀÌ°í ¿Ö Áß¿äÇÒ±î? 5.2.2 ±Ã±ØÀûÀÎ ¸ñÇ¥ 5.3 Á¦³Ê·¹ÀÌ¼Ç 0: ÇÙ½É ±â´É 5.3.1 ¾ÆÁÖ °£´ÜÇÑ API 5.4 Á¦³Ê·¹ÀÌ¼Ç 1: ¸ð³î¸®½º 5.4.1 net/http ÆÐÅ°Áö¸¦ ÀÌ¿ëÇÑ HTTP ¼¹ö ±¸¼º 5.4.2 gorilla/mux ÆÐÅ°Áö¸¦ ÀÌ¿ëÇÑ HTTP ¼¹ö ±¸¼º 5.4.3 RESTful ¼ºñ½º ¸¸µé±â 5.4.4 µ¿½Ã¼º À̽´·ÎºÎÅÍ ¾ÈÀüÇÑ µ¥ÀÌÅÍ ±¸Á¶ ¸¸µé±â 5.5 Á¦³Ê·¹ÀÌ¼Ç 2: ¸®¼Ò½º »óÅ À¯Áö 5.5.1 Æ®·£Àè¼Ç ·Î±×¶õ ¹«¾ùÀϱî? 5.5.2 Æ®·£Àè¼Ç ·Î±× ÆÄÀÏ¿¡ »óÅ ÀúÀåÇϱâ 5.5.3 ¿ÜºÎ µ¥ÀÌÅͺ£À̽º¿¡ »óÅ ÀúÀåÇϱâ 5.6 Á¦³Ê·¹ÀÌ¼Ç 3: Àü¼Û °èÃþ º¸¾È ±¸Çö 5.6.1 Àü¼Û °èÃþ º¸¾È 5.6.2 »ç¼³Å°¿Í ÀÎÁõ¼ ÆÄÀÏ 5.6.3 À¥ ¼ºñ½º¸¦ HTTPS·Î º¸È£Çϱâ 5.6.4 Àü¼Û °èÃþ ¿ä¾à 5.7 Å°-°ª ÀúÀå¼ÒÀÇ ÄÁÅ×À̳ÊÈ 5.7.1 »ýÃʺ¸¸¦ À§ÇÑ µµÄ¿ ±âÃÊ 5.7.2 Å°-°ª ÀúÀå¼Ò ÄÁÅ×ÀÌ³Ê ¸¸µé±â 5.7.3 ÄÁÅ×ÀÌ³Ê µ¥ÀÌÅÍÀÇ ¿ÜºÎÈ ¿ä¾àPart 3 Ŭ¶ó¿ìµå ³×ÀÌƼºê Ư¡6Àå ½ÅÀμº 6.1 Ŭ¶ó¿ìµå ³×ÀÌƼºêÀÇ ÇÙ½ÉÀº ¹«¾ùÀΰ¡? 6.2 °¡Àå Áß¿äÇÑ °ÍÀº ½ÅÀμºÀÌ´Ù 6.3 ½ÅÀμºÀº ¹«¾ùÀÌ°í ¿Ö Áß¿äÇÑ°¡? 6.3.1 ½ÅÀμº: ´õ ÀÌ»ó ¿î¿µ¸¸À» À§ÇÑ °ÍÀÌ ¾Æ´Ï´Ù 6.4 ½ÅÀμº È®º¸ 6.4.1 °áÇÔ ¿¹¹æ 6.4.2 °áÇÔ °¨³» 6.4.3 °áÇÔ Á¦°Å 6.4.4 °áÇÔ ¿¹Ãø 6.5 The Twelve-Factor App°úÀÇ Áö¼ÓÀûÀÎ °ü·Ã¼º 6.5.1 Äڵ庣À̽º 6.5.2 ÀÇÁ¸¼º 6.5.3 ¼³Á¤ 6.5.4 ¹é¿£µå ¼ºñ½º 6.5.5 ºôµå, ¸±¸®Áî, ½ÇÇà 6.5.6 ÇÁ·Î¼¼½º 6.5.7 µ¥ÀÌÅÍ °Ý¸® 6.5.8 È®À强 6.5.9 Æó±â °¡´É¼º 6.5.10 °³¹ß/ÇÁ·Î´ö¼Ç ȯ°æ ÀÏÄ¡ 6.5.11 ·Î±× 6.5.12 °ü¸® ÇÁ·Î¼¼½º ¿ä¾à7Àå È®À强 7.1 È®À强À̶õ ¹«¾ùÀϱî? 7.1.1 ´Ù¾çÇÑ ÇüÅÂÀÇ È®Àå 7.2 4°¡Áö ´ëÇ¥ÀûÀÎ º´¸ñ 7.3 ½ºÅ×ÀÌÆ®¿Í ½ºÅ×ÀÌÆ®¸®½º 7.3.1 ¾ÖÇø®ÄÉÀÌ¼Ç ½ºÅ×ÀÌÆ®¿Í ¸®¼Ò½º ½ºÅ×ÀÌÆ®ÀÇ Â÷ÀÌ 7.3.2 ½ºÅ×ÀÌÆ®¸®½ºÀÇ ÀåÁ¡ 7.4 Áö¿¬µÈ È®Àå: È¿À²¼º 7.4.1 LRU ij½Ã¸¦ ÀÌ¿ëÇÑ È¿À²Àû ij½Ì 7.4.2 È¿À²ÀûÀÎ µ¿±âÈ 7.4.3 ¸Þ¸ð¸® ¸¯ 7.4.4 È¿À²¼ºÀ̶õ 7.5 ¼ºñ½º ¾ÆÅ°ÅØó 7.5.1 ¸ð³î¸®½º ½Ã½ºÅÛ ¾ÆÅ°ÅØó 7.5.2 ¸¶ÀÌÅ©·Î¼ºñ½º ½Ã½ºÅÛ ¾ÆÅ°ÅØó 7.5.3 ¼¹ö¸®½º ¾ÆÅ°ÅØó ¿ä¾à8Àå ´À½¼ÇÑ °áÇÕ 8.1 °ÇÑ °áÇÕ 8.1.1 °ÇÑ °áÇÕÀÇ ´Ù¾çÇÑ ÇüÅ 8.2 ¼ºñ½º °£ÀÇ Åë½Å 8.3 ¿äû-ÀÀ´ä ¸Þ½Ã¡ 8.3.1 ÀϹÝÀûÀÎ ¿äû-ÀÀ´ä ±¸Çö 8.3.2 net/http ÆÐÅ°Áö¸¦ ÀÌ¿ëÇÑ HTTP ¿äû ¹ßÇà 8.3.3 gRPC¸¦ ÀÌ¿ëÇÑ ¿ø°Ý ÇÁ·Î½ÃÀú È£Ãâ 8.4 Ç÷¯±×ÀÎÀ» ÀÌ¿ëÇÑ ·ÎÄà ¸®¼Ò½ºÀÇ ´À½¼ÇÑ °áÇÕ 8.4.1 Ç÷¯±×ÀÎ ÆÐÅ°Áö¸¦ ÅëÇÑ ÇÁ·Î¼¼½º ³»ºÎ Ç÷¯±×ÀÎ 8.4.2 RPC¸¦ ÀÌ¿ëÇÑ ÇؽÃÄÚÇÁÀÇ Go Ç÷¯±×ÀÎ ½Ã½ºÅÛ 8.5 À°°¢Çü ¾ÆÅ°ÅØó 8.5.1 ¾ÆÅ°ÅØó 8.5.2 À°°¢Çü ¼ºñ½º ±¸Çö ¿ä¾à9Àå ź·Â¼º 9.1 ¿Ö ź·Â¼ºÀÌ ¹®Á¦Àΰ¡ 9.2 ½Ã½ºÅÛÀÌ ½ÇÆÐÇÑ´Ù´Â Àǹ̴ ¹«¾ùÀΰ¡? 9.2.1 ź·Â¼ºÀ» ³ôÀÌ´Â ¿©·¯ °¡Áö ¹æ¹ý 9.3 ¿¬¼âÀûÀÎ ½ÇÆÐ 9.3.1 °úºÎÇÏ ¹æÁö 9.4 ´Ù½Ã ½ÃµµÇϱâ: ¿äû Àç½Ãµµ 9.4.1 ¹é¿ÀÇÁ ¾Ë°í¸®Áò 9.4.2 ¼Å¶ ºê·¹ÀÌÅ· 9.4.3 ŸÀӾƿô 9.4.4 ¸èµî¹ýÄ¢ 9.5 ¼ºñ½º Áߺ¹¼º 9.5.1 Áߺ¹¼ºÀ» À§ÇÑ ¼³°è 9.5.2 ¿ÀÅ佺ÄÉÀϸµ 9.6 °Ç°ÇÑ Çコ üũ 9.6.1 ÀνºÅϽº°¡ ¡®°Ç°ÇÏ´Ù¡¯´Â °ÍÀº ¾î¶² ÀǹÌÀϱî? 9.6.2 Çコ üũÀÇ ¼¼ °¡Áö ŸÀÔ 9.6.3 ÆäÀÏ ¿ÀÇ ¿ä¾à10Àå °ü¸® ¿ëÀ̼º 10.1 °ü¸® ¿ëÀ̼ºÀº ¹«¾ùÀÌ°í ¿Ö ½Å°æ ½á¾ß ÇÒ±î¿ä? 10.2 ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤Çϱâ 10.2.1 ¼³Á¤ ¸ð¹ü »ç·Ê 10.2.2 ȯ°æ º¯¼ö¸¦ ÀÌ¿ëÇÑ ¼³Á¤ 10.2.3 Ä¿¸Çµå¶óÀÎ ÀÎÀÚ¸¦ ÀÌ¿ëÇÑ ¼³Á¤ 10.2.4 ÆÄÀÏÀ» ÀÌ¿ëÇÑ ¼³Á¤ 10.2.5 Viper: ¼³Á¤ ÆÐÅ°Áö¸¦ À§ÇÑ ½ºÀ§½º ±º¿ë Ä® 10.3 ÇÇó Ç÷¡±×¸¦ ÀÌ¿ëÇÑ ±â´É °ü¸® 10.3.1 ±â´É Ç÷¡±×ÀÇ ÁøÈ 10.3.2 Á¦³Ê·¹ÀÌ¼Ç 0: Ãʱ⠱¸Çö 10.3.3 Á¦³Ê·¹ÀÌ¼Ç 1: ÇϵåÄÚµùµÈ ÇÇó Ç÷¡±× 10.3.4 Á¦³Ê·¹ÀÌ¼Ç 2: ¼³Á¤ÇÒ ¼ö ÀÖ´Â Ç÷¡±× 10.3.5 Á¦³Ê·¹ÀÌ¼Ç 3: µ¿ÀûÀÎ ÇÇó Ç÷¡±× ¿ä¾à11Àå °üÂû °¡´É¼º 11.1 °üÂû °¡´É¼ºÀ̶õ ¹«¾ùÀΰ¡? 11.1.1 °üÂû °¡´É¼ºÀº ¿Ö ÇÊ¿äÇÑ°¡? 11.1.2 °üÂû °¡´É¼ºÀº ¡®ÀüÅëÀûÀΡ¯ ¸ð´ÏÅ͸µ°ú ¾î¶»°Ô ´Ù¸¥°¡? 11.2 °üÂû °¡´É¼ºÀÇ ¼¼ °¡Áö ±âµÕ 11.3 OpenTelemetry 11.3.1 OpenTelemetry ÄÄÆ÷³ÍÆ® 11.4 Æ®·¹ÀÌ½Ì 11.4.1 Æ®·¹À̽ÌÀÇ °³³ä 11.4.2 OpenTelemetry¸¦ ÀÌ¿ëÇÑ Æ®·¹ÀÌ½Ì 11.4.3 ¸ðµÎ Çϳª·Î ÇÕÄ¡±â: Æ®·¹ÀÌ½Ì 11.5 ÁöÇ¥ 11.5.1 Ǫ½Ã, Ç® ¹æ½ÄÀÇ ÁöÇ¥ ¼öÁý ºñ±³ 11.5.2 OpenTelemetryÀÇ ÁöÇ¥ 11.5.3 ¸ðµÎ Çϳª·Î ÇÕÄ¡±â: ÁöÇ¥ 11.6 ·Î±ë 11.6.1 ·Î±ë ¸ð¹ü »ç·Ê 11.6.2 Go Ç¥ÁØ ·Î±× ÆÐÅ°Áö¸¦ ÀÌ¿ëÇÑ ·Î±ë 11.6.3 Zap ·Î±ë ÆÐÅ°Áö ¿ä¾à