ºÐ»ê À¥ ¾Û ±¸ÃàÇϸç Ç®½ºÅà ·¯½ºÆ® ¸¶½ºÅÍÇϱâ ÀÌ Ã¥Àº ¿ÀÁ÷ ·¯½ºÆ®¸¸À¸·Î À¥¼¹ö, RESTful ¼ºñ½º, ¼¹ö ·»´õ¸µ ¾Û, Ŭ¶óÀ̾ðÆ® ÇÁ·±Æ®¿£µå¸¦ ¸¸µç´Ù. ÀÛ°í ¿¹Ãø °¡´ÉÇÑ ¸®¼Ò½º DzÇÁ¸°Æ®·Î Äڵ带 ÀÛ¼ºÇÏ´Â ¹ý, Ź¿ùÇÑ ¾ÈÀü¼º°ú ½Å·Ú¼ºÀ» °®Ãá °í¼º´É ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÏ´Â ¹ýÀ» ¹è¿ï ¼ö ÀÖ´Ù. Ã¥ Àüü¿¡ °ÉÃÄ, °»çµéÀ» À§ÇÑ ¿Â¶óÀÎ ±³À° Ç÷§ÆûÀ» Ç®½ºÅà ·¯½ºÆ®·Î ¸¸µé¾î³ª°£´Ù. °£´ÜÇÑ HTTP ¼¹ö¿Í RESTful À¥ ¼ºñ½º¸¦ ±¸ÃàÇÏ´Â ±âÃʺÎÅÍ ½ÃÀÛÇؼ º¸¾È, µ¥ÀÌÅͺ£À̽º »óÈ£ÀÛ¿ë, ¿À·ù 󸮸¦ Ãß°¡ÇØ ÇÁ·Î´ö¼Ç ·¹µð »óÅ·Π¸¸µç´Ù. ÃÖÁ¾ÀûÀ¸·Î ¼ºñ½º¸¦ ±¸ÇöÇÏ°í SPA¸¦ ¸¸µé°í ºñµ¿±â ÇÁ·Î±×·¡¹Ö±îÁö »ìÆ캻´Ù.
20³â ÀÌ»ó ´ë±â¾÷¿¡ °íÇ°ÁúÀÇ ºñÁî´Ï½º Å©¸®Æ¼Äà ¼ÒÇÁÆ®¿þ¾î¿Í ºÐ»ê ½Ã½ºÅÛÀ» °ø±ÞÇÏ°í IT ¿î¿µÀ» ´ã´çÇß´Ù. ÇöÀç´Â ·¯½ºÆ®¸¦ »ç¿ëÇØ ·¹À̾î 1 ºí·ÏüÀÎÀ» ±¸ÃàÇÏ´Â ½ºÅ¸Æ®¾÷ÀÇ CTO´Ù. º¹ÀâÇÑ ±â¼úÀ» ½±°Ô °¡¸£Ä¡´Â µ¥ Áø½ÉÀÎ ±³À°ÀÚÀ̱⵵ ÇÏ´Ù. ºÐ»ê ½Ã½ºÅÛ¿ë ¼ÒÇÁÆ®¿þ¾î ÀÎÇÁ¶ó ¹× ½Ã½ºÅÛ µµ±¸ ±¸Ãà¿¡ ·¯½ºÆ®°¡ °Á¡ÀÌ ÀÖÀ½À» ÀÏÂïÀÌ ÆľÇÇÏ°í È°¿ëÇØ¿Ô´Ù. ÄÚµùÀÇ Ã¢ÀÇÀû ¼º°ÝÀ» Áß¿äÇÏ°Ô ¿©±âÁö¸¸, ±ò²ûÇÏ°í È¿À²ÀûÀÌ¸ç ¾ÈÀüÇÏ°í À¯Áö °¡´ÉÇÑ Äڵ带 ¸¸µé±â À§ÇÑ ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸µÀÇ ¾ö°ÝÇÔ ¶ÇÇÑ Áß½ÃÇÑ´Ù.
¿Å±äÀÌ ¸Ó¸®¸» ixº£Å¸¸®´õ Èıâ x½ÃÀÛÇϸç xii°¨»çÀÇ ±Û xivÀÌ Ã¥¿¡ ´ëÇÏ¿© xvÇ¥Áö¿¡ ´ëÇÏ¿© xixPART I À¥¼¹ö¿Í À¥ ¼ºñ½ºCHAPTER 1 ¿Ö ·¯½ºÆ®°¡ À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀûÇÕÇÑ°¡? 31.1 ¸ð´ø À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¿ä 41.2 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇØ ·¯½ºÆ®¸¦ ¼±ÅÃÇϱâ 7__1.2.1 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ Æ¯¼º 8__1.2.2 ·¯½ºÆ®¸¦ »ç¿ëÇÑ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸ÇöÀÇ ÀÌÁ¡ 9__1.2.3 ·¯½ºÆ®¿¡ ¾ø´Â °ÍÀº? 151.3 ¿¹Á¦ ¾ÖÇø®ÄÉÀÌ¼Ç ¼Ò°³ 15__1.3.1 ¹«¾ùÀ» ¸¸µé °ÍÀΰ¡? 16 / 1.3.2 ¿¹Á¦ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±â¼úÀû °¡À̵å¶óÀÎ 19¿ä¾à 20CHAPTER 2 ±âº» À¥¼¹ö ÀÛ¼ºÇϱâ 212.1 ³×Æ®¿öÅ· ¸ðµ¨ 222.2 ·¯½ºÆ®¸¦ »ç¿ëÇØ TCP ¼¹ö ÀÛ¼ºÇϱâ 24__2.2.1 TCP/IP Åë½Å È帧 ¼³°èÇϱâ 24 / 2.2.2 TCP ¼¹ö¿Í Ŭ¶óÀ̾ðÆ® ÀÛ¼ºÇϱâ 262.3 ·¯½ºÆ®¸¦ »ç¿ëÇØ HTTP ¼¹ö ÀÛ¼ºÇϱâ 31__2.3.1 HTTP ¿äû ¸Þ½ÃÁö ÆĽÌÇϱâ 33 / 2.3.2 HTTP ÀÀ´ä ¸Þ½ÃÁö ±¸¼ºÇϱâ 42__2.3.3 main() ÇÔ¼ö¿Í server ¸ðµâ ÀÛ¼ºÇϱâ 51__2.3.4 router ¹× handler ¸ðµâ ÀÛ¼ºÇϱâ 52 / 2.3.5 À¥¼¹ö Å×½ºÆÃÇϱâ 57¿ä¾à 60CHAPTER 3 RESTful À¥ ¼ºñ½º ±¸ÃàÇϱâ 623.1 Actix ½ÃÀÛÇϱâ 62__3.1.1 ù ¹ø° REST API ÀÛ¼ºÇϱâ 63 / 3.1.2 Actix °³³ä ÀÌÇØÇϱâ 663.2 REST¸¦ »ç¿ëÇØ À¥ API ¸¸µé±â 70__3.2.1 ÇÁ·ÎÁ§Æ® ¹üÀ§¿Í ±¸Á¶ Á¤ÀÇÇϱâ 71 / 3.2.2 ¾ÖÇø®ÄÉÀÌ¼Ç »óÅ Á¤ÀÇ ¹× °ü¸®Çϱâ 74__3.2.3 µ¥ÀÌÅÍ ¸ðµ¨ Á¤ÀÇÇϱâ 78 / 3.2.4 °ÀÇ °Ô½ÃÇϱâ 83__3.2.5 ÇÑ °»çÀÇ ¸ðµç °ÀÇ Á¤º¸ ¾ò±â 87 / 3.2.6 ÇÑ °ÀÇ¿¡ °üÇÑ ¼¼ºÎ Á¤º¸ ¾ò±â 90¿ä¾à 93CHAPTER 4 µ¥ÀÌÅͺ£À̽º Á¶ÀÛÇϱâ 954.1 ÇÁ·ÎÁ§Æ® ±¸Á¶ ¼³Á¤Çϱâ 964.2 ù ¹ø° µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ºñµ¿±â Ä¿³Ø¼Ç ÀÛ¼ºÇϱâ(ÀÌÅÍ·¹ÀÌ¼Ç 1) 98__4.2.1 µ¥ÀÌÅͺ£À̽º ¹× Ä¿³Ø¼Ç ¶óÀ̺귯¸® ¼±ÅÃÇϱâ 98__4.2.2 µ¥ÀÌÅͺ£À̽º¸¦ ¼³Á¤ÇÏ°í ºñµ¿±â Ç®°ú ¿¬°áÇϱâ 994.3 À¥ ¼ºñ½º ¼³Á¤Çϱâ¿Í ´ÜÀ§ Å×½ºÆ® ÀÛ¼ºÇϱâ(ÀÌÅÍ·¹ÀÌ¼Ç 2) 105__4.3.1 µðÆæ´ø½Ã¿Í ¶ó¿ìÆ® ¼³Á¤Çϱâ 106__4.3.2 ¾ÖÇø®ÄÉÀÌ¼Ç »óÅÂ¿Í µ¥ÀÌÅÍ ¸ðµ¨ ¼³Á¤Çϱâ 107__4.3.3 µðÆæ´ø½Ã ÁÖÀÔÀ» »ç¿ëÇØ Ä¿³Ø¼Ç Ç® ¼³Á¤Çϱâ 108__4.3.4 ´ÜÀ§ Å×½ºÆ® ÀÛ¼ºÇϱâ 1114.4 µ¥ÀÌÅͺ£À̽º¿¡¼ ·¹Äڵ带 »ý¼ºÇÏ°í ÁúÀÇÇϱâ(ÀÌÅÍ·¹ÀÌ¼Ç 3) 113__4.4.1 µ¥ÀÌÅͺ£À̽º Á¢±Ù ÇÔ¼ö ÀÛ¼ºÇϱâ 114 / 4.4.2 Çڵ鷯 ÇÔ¼ö ÀÛ¼ºÇϱâ 117__4.4.3 µ¥ÀÌÅͺ£À̽º ±â¹Ý À¥ ¼ºñ½º¸¦ À§ÇÑ main() ÇÔ¼ö ÀÛ¼ºÇϱâ 120¿ä¾à 124CHAPTER 5 ¿¡·¯ Çڵ鸵Çϱâ 1255.1 ÇÁ·ÎÁ§Æ® ±¸Á¶ ¼³Á¤Çϱâ 1265.2 ·¯½ºÆ®¿Í Actix Web¿¡¼ÀÇ ¿¡·¯ Çڵ鸵 ±âº» 1305.3 Ä¿½ºÅÒ ¿¡·¯ Çڵ鷯 Á¤ÀÇÇϱâ 1375.4 ¸ðµç °ÀÇ Á¤º¸ ¾ò±â¿¡ ´ëÇÑ ¿¡·¯ Çڵ鸵Çϱâ 1415.5 °ÀÇ »ó¼¼ Á¤º¸ ¾ò±â¿¡ ´ëÇÑ ¿¡·¯ Çڵ鸵Çϱâ 1485.6 »õ·Î¿î °ÀÇ °Ô½Ã¿¡ ´ëÇÑ ¿¡·¯ Çڵ鸵Çϱâ 150¿ä¾à 153CHAPTER 6 APIÀÇ ÁøÈ¿Í µÎ·Á¿ò ¾ø´Â ¸®ÆÑÅ͸µ 1546.1 ÇÁ·ÎÁ§Æ® ±¸Á¶ °³ÆíÇϱâ 1556.2 °ÀÇ »ý¼º ¹× °ü¸®¿Í °ü·ÃµÈ µ¥ÀÌÅÍ ¸ðµ¨ °³¼±Çϱâ 160__6.2.1 µ¥ÀÌÅÍ ¸ðµ¨ º¯°æÇϱâ 162 / 6.2.2 °ÀÇ API º¯°æÇϱâ 1686.3 °»ç µî·Ï ¹× À¯Áö °ü¸®¸¦ °¡´ÉÇÏ°Ô Çϱâ 183__6.3.1 °»ç¸¦ À§ÇÑ µ¥ÀÌÅÍ ¸ðµ¨°ú ¶ó¿ìÆ® 184__6.3.2 °»ç °ü·Ã ¶ó¿ìÆ®¿¡ ´ëÇÑ Çڵ鷯 ÇÔ¼ö 187__6.3.3 °»ç °ü·Ã ¶ó¿ìÆ®¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º Á¢±Ù ÇÔ¼ö 189__6.3.4 °»ç¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º ½ºÅ©¸³Æ® 191__6.3.5 °»ç °ü·Ã API ½ÇÇà ¹× Å×½ºÆ®Çϱâ 193¿ä¾à 197PART II ¼¹ö »çÀ̵å À¥ ¾ÖÇø®ÄÉÀ̼ÇCHAPTER 7 ·¯½ºÆ®¸¦ »ç¿ëÇѼ¹ö »çÀ̵å À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¿ä 2017.1 ¼¹ö »çÀÌµå ·»´õ¸µ °³¿ä 2027.2 Actix¸¦ »ç¿ëÇØ Á¤Àû À¥ÆäÀÌÁö Á¦°øÇϱâ 2047.3 Actix¿Í Tera¸¦ »ç¿ëÇØ µ¿Àû À¥ÆäÀÌÁö ·»´õ¸µÇϱâ 2077.4 ÆûÀ» »ç¿ëÇØ »ç¿ëÀÚ ÀÔ·Â Ãß°¡Çϱâ 2107.5 ÅÛÇø´À» »ç¿ëÇØ ¸®½ºÆ® Ç¥½ÃÇϱâ 2137.6 Ŭ¶óÀ̾ðÆ® »çÀ̵å Å×½ºÆ® ÀÛ¼º ¹× ½ÇÇàÇϱâ 2177.7 ¹é¿£µå À¥ ¼ºñ½º¿¡ ¿¬°áÇϱâ 220¿ä¾à 224CHAPTER 8 ÅÛÇø´À» »ç¿ëÇØ °»ç µî·ÏÇϱâ 2268.1 Ãʱâ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÀÛ¼ºÇϱâ 2278.2 µî·Ï Æû Ç¥½ÃÇϱâ 2348.3 µî·Ï Á¦Ãâ ó¸®Çϱâ 240¿ä¾à 247CHAPTER 9 °ÀÇ À¯Áöº¸¼ö¸¦ À§ÇÑ Æû ´Ù·ç±â 2499.1 »ç¿ëÀÚ ÀÎÁõ ¼³°èÇϱâ 2509.2 ÇÁ·ÎÁ§Æ® ±¸Á¶ ¼³Á¤Çϱâ 2519.3 »ç¿ëÀÚ ÀÎÁõ ±¸ÇöÇϱâ 2529.4 HTTP ¿äû ¶ó¿ìÆÃÇϱâ 2589.5 HTTP POST ¸Þ¼µå¸¦ »ç¿ëÇØ ¸®¼Ò½º »ý¼ºÇϱâ 2629.6 HTTP PUT ¸Þ¼µå¸¦ »ç¿ëÇØ ¸®¼Ò½º ¾÷µ¥ÀÌÆ®Çϱâ 2659.7 HTTP DELETE ¸Þ¼µå¸¦ »ç¿ëÇØ ¸®¼Ò½º »èÁ¦Çϱâ 268¿ä¾à 269PART III °í±Þ ÁÖÁ¦: ºñµ¿±â ·¯½ºÆ®CHAPTER 10 ºñµ¿±â ·¯½ºÆ® ÀÌÇØÇϱâ 27310.1 ºñµ¿±â ÇÁ·Î±×·¡¹Ö °³³ä ¼Ò°³ 27410.2 µ¿½Ã ÇÁ·Î±×·¥ ÀÛ¼ºÇϱâ 28110.3 ºñµ¿±â ·¯½ºÆ® ÀÚ¼¼È÷ »ìÆ캸±â 28710.4 ǻó ÀÌÇØÇϱâ 29210.5 Ä¿½ºÅÒ Ç»Ã³ ±¸ÇöÇϱâ 300¿ä¾à 304CHAPTER 11 ºñµ¿±â ·¯½ºÆ®¸¦ »ç¿ëÇØ P2P ³ëµå ±¸ÇöÇϱâ 30511.1 P2P ³×Æ®¿öÅ© ¼Ò°³ 306__11.1.1 Àü¼Û 308 / 11.1.2 ÇÇ¾î ½Å¿ø 308 / 11.1.3 º¸¾È 308__11.1.4 ÇÇ¾î ¶ó¿ìÆà 308 / 11.1.5 ¸Þ½Ã¡ 309 / 11.1.6 ½ºÆ®¸² ¸ÖƼÇ÷º½Ì 30911.2 libp2p ³×Æ®¿öÅ·ÀÇ ÇÙ½É ¾ÆÅ°ÅØó ÀÌÇØÇϱâ 310__11.2.1 ÇǾî ID ¹× Å° Æä¾î 311 / 11.2.2 ¸ÖƼ¾îµå·¹½º 312__11.2.3 ½º¿ú°ú ³×Æ®¿öÅ© µ¿ÀÛ 31411.3 ÇÇ¾î ³ëµå »çÀÌ¿¡¼ ping ¸í·É ±³È¯Çϱâ 31611.4 ÇÇ¾î ¹ß°ßÇϱâ 318¿ä¾à 321CHAPTER 12 µµÄ¿¸¦ »ç¿ëÇØ À¥ ¼ºñ½º ¹èÆ÷Çϱâ 32312.1 ¼¹ö¿Í ¾ÛÀÇ ÇÁ·Î´ö¼Ç ¹èÆ÷ °³¿ä 324__12.1.1 ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷ ¼ö¸í ÁÖ±â 325 / 12.1.2 µµÄ¿ ÄÁÅ×ÀÌ³Ê ±âº» 32712.2 ù ¹ø° µµÄ¿ ÄÁÅ×ÀÌ³Ê ÀÛ¼ºÇϱâ 329__12.2.1 µµÄ¿ ¼³Ä¡ È®ÀÎÇϱâ 329 / 12.2.2 °£´ÜÇÑ µµÄ¿ ÄÁÅ×ÀÌ³Ê ÀÛ¼ºÇϱâ 331__12.2.3 ´Ù´Ü°è µµÄ¿ ºôµå 33412.3 µ¥ÀÌÅͺ£À̽º ÄÁÅ×ÀÌ³Ê ºôµåÇϱâ 337__12.3.1 Postgres µ¥ÀÌÅͺ£À̽º ÆÐŰ¡Çϱâ 338__12.3.2 µ¥ÀÌÅͺ£À̽º Å×ÀÌºí »ý¼ºÇϱâ 34412.4 µµÄ¿¸¦ »ç¿ëÇؼ À¥ ¼ºñ½º ÆÐŰ¡Çϱâ 34712.5 µµÄ¿ ÄÄÆ÷Á »ç¿ëÇؼ µµÄ¿ ÄÁÅ×ÀÌ³Ê Á¶Á¤Çϱâ 348¿ä¾à 355APPENDIX A ºÎ·Ï 357Postgres ¼³Ä¡ 357ã¾Æº¸±â 360