Ã¥¼Ò°³
"ºÐ»ê À¥ ¾Û ±¸ÃàÇϸç Ç®½ºÅà ·¯½ºÆ® ¸¶½ºÅÍÇϱâ
ÀÌ Ã¥Àº ¿ÀÁ÷ ·¯½ºÆ®¸¸À¸·Î À¥¼¹ö, RESTful ¼ºñ½º, ¼¹ö ·»´õ¸µ ¾Û, Ŭ¶óÀ̾ðÆ® ÇÁ·±Æ®¿£µå¸¦ ¸¸µç´Ù. ÀÛ°í ¿¹Ãø °¡´ÉÇÑ ¸®¼Ò½º DzÇÁ¸°Æ®·Î Äڵ带 ÀÛ¼ºÇÏ´Â ¹ý, Ź¿ùÇÑ ¾ÈÀü¼º°ú ½Å·Ú¼ºÀ» °®Ãá °í¼º´É ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÏ´Â ¹ýÀ» ¹è¿ï ¼ö ÀÖ´Ù. Ã¥ Àüü¿¡ °ÉÃÄ, °»çµéÀ» À§ÇÑ ¿Â¶óÀÎ ±³À° Ç÷§ÆûÀ» Ç®½ºÅà ·¯½ºÆ®·Î ¸¸µé¾î³ª°£´Ù. °£´ÜÇÑ HTTP ¼¹ö¿Í RESTful À¥ ¼ºñ½º¸¦ ±¸ÃàÇÏ´Â ±âÃʺÎÅÍ ½ÃÀÛÇؼ º¸¾È, µ¥ÀÌÅͺ£À̽º »óÈ£ÀÛ¿ë, ¿À·ù 󸮸¦ Ãß°¡ÇØ ÇÁ·Î´ö¼Ç ·¹µð »óÅ·Π¸¸µç´Ù. ÃÖÁ¾ÀûÀ¸·Î ¼ºñ½º¸¦ ±¸ÇöÇÏ°í SPA¸¦ ¸¸µé°í ºñµ¿±â ÇÁ·Î±×·¡¹Ö±îÁö »ìÆ캻´Ù."
ÀúÀÚ¼Ò°³
"Àú : ÇÁ¶óºÎ ¿¡½º¿Ð¶ó (Prabhu Eshwarla)
20³â ÀÌ»ó ´ë±â¾÷¿¡ °íÇ°ÁúÀÇ ºñÁî´Ï½º Å©¸®Æ¼Äà ¼ÒÇÁÆ®¿þ¾î¿Í ºÐ»ê ½Ã½ºÅÛÀ» °ø±ÞÇÏ°í IT ¿î¿µÀ» ´ã´çÇß´Ù. ÇöÀç´Â ·¯½ºÆ®¸¦ »ç¿ëÇØ ·¹À̾î 1 ºí·ÏüÀÎÀ» ±¸ÃàÇÏ´Â ½ºÅ¸Æ®¾÷ÀÇ CTO´Ù. º¹ÀâÇÑ ±â¼úÀ» ½±°Ô °¡¸£Ä¡´Â µ¥ Áø½ÉÀÎ ±³À°ÀÚÀ̱⵵ ÇÏ´Ù. ºÐ»ê ½Ã½ºÅÛ¿ë ¼ÒÇÁÆ®¿þ¾î ÀÎÇÁ¶ó ¹× ½Ã½ºÅÛ µµ±¸ ±¸Ãà¿¡ ·¯½ºÆ®°¡ °Á¡ÀÌ ÀÖÀ½À» ÀÏÂïÀÌ ÆľÇÇÏ°í È°¿ëÇØ¿Ô´Ù. ÄÚµùÀÇ Ã¢ÀÇÀû ¼º°ÝÀ» Áß¿äÇÏ°Ô ¿©±âÁö¸¸, ±ò²ûÇÏ°í È¿À²ÀûÀÌ¸ç ¾ÈÀüÇÏ°í À¯Áö °¡´ÉÇÑ Äڵ带 ¸¸µé±â À§ÇÑ ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸µÀÇ ¾ö°ÝÇÔ ¶ÇÇÑ Áß½ÃÇÑ´Ù.
¿ª : ±è¸ð¼¼
¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î, ¼ÒÇÁÆ®¿þ¾î Ç°Áú ¿£Áö´Ï¾î, ¾ÖÀÚÀÏ ÄÚÄ¡ µî ´Ù¾çÇÑ ºÎ¹®¿¡¼ ¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡ Âü¿©Çß´Ù. Àç¹ÌÀÖ´Â ÀÏ, ³ª¿Í Á¶Á÷ÀÌ ¼ºÀåÇÏ°í ¼º°ú¸¦ ³»µµ·Ï µ½´Â ÀÏ¿¡ º¸¶÷À» ´À²¸ 2019³âºÎÅÍ ¹ø¿ªÀ» ½ÃÀÛÇß´Ù. ÁöÀº Ã¥À¸·Î ¡ºÄÚµå Ç°Áú ½Ã°¢ÈÀÇ Á¤¼®¡»(Áö¾Ø¼±, 2015)ÀÌ ÀÖ°í, ¿Å±ä Ã¥À¸·Î´Â ¡ºÃßõ ½Ã½ºÅÛ ÀÔ¹®¡»(ÇѺû¹Ìµð¾î, 2023), ¡º±×¸²°ú ÀÛµ¿ ¿ø¸®·Î ½±°Ô ÀÌÇØÇÏ´Â À¥ÀÇ ±âÃÊ¡»(À§Å°ºÏ½º, 2023), ¡º±×¸²°ú ÀÛµ¿ ¿ø¸®·Î ½±°Ô ÀÌÇØÇÏ´Â ¼¹öÀÇ ±âÃÊ¡»(À§Å°ºÏ½º, 2023), ¡º½Ã½ºÅÛÀ» Àß ¸¸µé°Ô ÇÏ´Â ±â¼ú¡»(À§Å°ºÏ½º, 2023), ¡º¾ÆÆ® ¿Àºê ¼Ð ¿ø¶óÀÌ³Ê 160Á¦¡»(Á¦ÀÌÆà, 2023), ¡º¾ÖÀÚÀÏ ¼ÒÇÁÆ®¿þ¾î ¾ÆÅ°ÅØÆ®ÀÇ ±æ¡»(¿¡ÀÌÄÜ, 2022), ¡º¾ÖÀÚÀÏ °³¹ßÀÇ ±â¼ú 2/e¡»(¿¡ÀÌÄÜ, 2023), ¡ºÀκ£½ºÆ®¸ÕÆ® ¾ð¸®¹ÌƼµå¡»(¿¡ÀÌÄÜ, 2024) µîÀÌ ÀÖ´Ù."
¸ñÂ÷
"¿Å±äÀÌ ¸Ó¸®¸» ix
º£Å¸¸®´õ Èıâ x
½ÃÀÛÇϸç xii
°¨»çÀÇ ±Û xiv
ÀÌ Ã¥¿¡ ´ëÇÏ¿© xv
Ç¥Áö¿¡ ´ëÇÏ¿© xix
PART I À¥¼¹ö¿Í À¥ ¼ºñ½º
CHAPTER 1 ¿Ö ·¯½ºÆ®°¡ À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀûÇÕÇÑ°¡? 3
1.1 ¸ð´ø À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¿ä 4
1.2 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇØ ·¯½ºÆ®¸¦ ¼±ÅÃÇϱâ 7
__1.2.1 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ Æ¯¼º 8
__1.2.2 ·¯½ºÆ®¸¦ »ç¿ëÇÑ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸ÇöÀÇ ÀÌÁ¡ 9
__1.2.3 ·¯½ºÆ®¿¡ ¾ø´Â °ÍÀº? 15
1.3 ¿¹Á¦ ¾ÖÇø®ÄÉÀÌ¼Ç ¼Ò°³ 15
__1.3.1 ¹«¾ùÀ» ¸¸µé °ÍÀΰ¡? 16 / 1.3.2 ¿¹Á¦ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±â¼úÀû °¡À̵å¶óÀÎ 19
¿ä¾à 20
CHAPTER 2 ±âº» À¥¼¹ö ÀÛ¼ºÇϱâ 21
2.1 ³×Æ®¿öÅ· ¸ðµ¨ 22
2.2 ·¯½ºÆ®¸¦ »ç¿ëÇØ TCP ¼¹ö ÀÛ¼ºÇϱâ 24
__2.2.1 TCP/IP Åë½Å È帧 ¼³°èÇϱâ 24 / 2.2.2 TCP ¼¹ö¿Í Ŭ¶óÀ̾ðÆ® ÀÛ¼ºÇϱâ 26
2.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
¿ä¾à 60
CHAPTER 3 RESTful À¥ ¼ºñ½º ±¸ÃàÇϱâ 62
3.1 Actix ½ÃÀÛÇϱâ 62
__3.1.1 ù ¹ø° REST API ÀÛ¼ºÇϱâ 63 / 3.1.2 Actix °³³ä ÀÌÇØÇϱâ 66
3.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
¿ä¾à 93
CHAPTER 4 µ¥ÀÌÅͺ£À̽º Á¶ÀÛÇϱâ 95
4.1 ÇÁ·ÎÁ§Æ® ±¸Á¶ ¼³Á¤Çϱâ 96
4.2 ù ¹ø° µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ºñµ¿±â Ä¿³Ø¼Ç ÀÛ¼ºÇϱâ(ÀÌÅÍ·¹ÀÌ¼Ç 1) 98
__4.2.1 µ¥ÀÌÅͺ£À̽º ¹× Ä¿³Ø¼Ç ¶óÀ̺귯¸® ¼±ÅÃÇϱâ 98
__4.2.2 µ¥ÀÌÅͺ£À̽º¸¦ ¼³Á¤ÇÏ°í ºñµ¿±â Ç®°ú ¿¬°áÇϱâ 99
4.3 À¥ ¼ºñ½º ¼³Á¤Çϱâ¿Í ´ÜÀ§ Å×½ºÆ® ÀÛ¼ºÇϱâ(ÀÌÅÍ·¹ÀÌ¼Ç 2) 105
__4.3.1 µðÆæ´ø½Ã¿Í ¶ó¿ìÆ® ¼³Á¤Çϱâ 106
__4.3.2 ¾ÖÇø®ÄÉÀÌ¼Ç »óÅÂ¿Í µ¥ÀÌÅÍ ¸ðµ¨ ¼³Á¤Çϱâ 107
__4.3.3 µðÆæ´ø½Ã ÁÖÀÔÀ» »ç¿ëÇØ Ä¿³Ø¼Ç Ç® ¼³Á¤Çϱâ 108
__4.3.4 ´ÜÀ§ Å×½ºÆ® ÀÛ¼ºÇϱâ 111
4.4 µ¥ÀÌÅͺ£À̽º¿¡¼ ·¹Äڵ带 »ý¼ºÇÏ°í ÁúÀÇÇϱâ(ÀÌÅÍ·¹ÀÌ¼Ç 3) 113
__4.4.1 µ¥ÀÌÅͺ£À̽º Á¢±Ù ÇÔ¼ö ÀÛ¼ºÇϱâ 114 / 4.4.2 Çڵ鷯 ÇÔ¼ö ÀÛ¼ºÇϱâ 117
__4.4.3 µ¥ÀÌÅͺ£À̽º ±â¹Ý À¥ ¼ºñ½º¸¦ À§ÇÑ main() ÇÔ¼ö ÀÛ¼ºÇϱâ 120
¿ä¾à 124
CHAPTER 5 ¿¡·¯ Çڵ鸵Çϱâ 125
5.1 ÇÁ·ÎÁ§Æ® ±¸Á¶ ¼³Á¤Çϱâ 126
5.2 ·¯½ºÆ®¿Í Actix Web¿¡¼ÀÇ ¿¡·¯ Çڵ鸵 ±âº» 130
5.3 Ä¿½ºÅÒ ¿¡·¯ Çڵ鷯 Á¤ÀÇÇϱâ 137
5.4 ¸ðµç °ÀÇ Á¤º¸ ¾ò±â¿¡ ´ëÇÑ ¿¡·¯ Çڵ鸵Çϱâ 141
5.5 °ÀÇ »ó¼¼ Á¤º¸ ¾ò±â¿¡ ´ëÇÑ ¿¡·¯ Çڵ鸵Çϱâ 148
5.6 »õ·Î¿î °ÀÇ °Ô½Ã¿¡ ´ëÇÑ ¿¡·¯ Çڵ鸵Çϱâ 150
¿ä¾à 153
CHAPTER 6 APIÀÇ ÁøÈ¿Í µÎ·Á¿ò ¾ø´Â ¸®ÆÑÅ͸µ 154
6.1 ÇÁ·ÎÁ§Æ® ±¸Á¶ °³ÆíÇϱâ 155
6.2 °ÀÇ »ý¼º ¹× °ü¸®¿Í °ü·ÃµÈ µ¥ÀÌÅÍ ¸ðµ¨ °³¼±Çϱâ 160
__6.2.1 µ¥ÀÌÅÍ ¸ðµ¨ º¯°æÇϱâ 162 / 6.2.2 °ÀÇ API º¯°æÇϱâ 168
6.3 °»ç µî·Ï ¹× À¯Áö °ü¸®¸¦ °¡´ÉÇÏ°Ô Çϱâ 183
__6.3.1 °»ç¸¦ À§ÇÑ µ¥ÀÌÅÍ ¸ðµ¨°ú ¶ó¿ìÆ® 184
__6.3.2 °»ç °ü·Ã ¶ó¿ìÆ®¿¡ ´ëÇÑ Çڵ鷯 ÇÔ¼ö 187
__6.3.3 °»ç °ü·Ã ¶ó¿ìÆ®¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º Á¢±Ù ÇÔ¼ö 189
__6.3.4 °»ç¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º ½ºÅ©¸³Æ® 191
__6.3.5 °»ç °ü·Ã API ½ÇÇà ¹× Å×½ºÆ®Çϱâ 193
¿ä¾à 197
PART II ¼¹ö »çÀ̵å À¥ ¾ÖÇø®ÄÉÀ̼Ç
CHAPTER 7 ·¯½ºÆ®¸¦ »ç¿ëÇÑ
¼¹ö »çÀ̵å À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¿ä 201
7.1 ¼¹ö »çÀÌµå ·»´õ¸µ °³¿ä 202
7.2 Actix¸¦ »ç¿ëÇØ Á¤Àû À¥ÆäÀÌÁö Á¦°øÇϱâ 204
7.3 Actix¿Í Tera¸¦ »ç¿ëÇØ µ¿Àû À¥ÆäÀÌÁö ·»´õ¸µÇϱâ 207
7.4 ÆûÀ» »ç¿ëÇØ »ç¿ëÀÚ ÀÔ·Â Ãß°¡Çϱâ 210
7.5 ÅÛÇø´À» »ç¿ëÇØ ¸®½ºÆ® Ç¥½ÃÇϱâ 213
7.6 Ŭ¶óÀ̾ðÆ® »çÀ̵å Å×½ºÆ® ÀÛ¼º ¹× ½ÇÇàÇϱâ 217
7.7 ¹é¿£µå À¥ ¼ºñ½º¿¡ ¿¬°áÇϱâ 220
¿ä¾à 224
CHAPTER 8 ÅÛÇø´À» »ç¿ëÇØ °»ç µî·ÏÇϱâ 226
8.1 Ãʱâ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÀÛ¼ºÇϱâ 227
8.2 µî·Ï Æû Ç¥½ÃÇϱâ 234
8.3 µî·Ï Á¦Ãâ ó¸®Çϱâ 240
¿ä¾à 247
CHAPTER 9 °ÀÇ À¯Áöº¸¼ö¸¦ À§ÇÑ Æû ´Ù·ç±â 249
9.1 »ç¿ëÀÚ ÀÎÁõ ¼³°èÇϱâ 250
9.2 ÇÁ·ÎÁ§Æ® ±¸Á¶ ¼³Á¤Çϱâ 251
9.3 »ç¿ëÀÚ ÀÎÁõ ±¸ÇöÇϱâ 252
9.4 HTTP ¿äû ¶ó¿ìÆÃÇϱâ 258
9.5 HTTP POST ¸Þ¼µå¸¦ »ç¿ëÇØ ¸®¼Ò½º »ý¼ºÇϱâ 262
9.6 HTTP PUT ¸Þ¼µå¸¦ »ç¿ëÇØ ¸®¼Ò½º ¾÷µ¥ÀÌÆ®Çϱâ 265
9.7 HTTP DELETE ¸Þ¼µå¸¦ »ç¿ëÇØ ¸®¼Ò½º »èÁ¦Çϱâ 268
¿ä¾à 269
PART III °í±Þ ÁÖÁ¦: ºñµ¿±â ·¯½ºÆ®
CHAPTER 10 ºñµ¿±â ·¯½ºÆ® ÀÌÇØÇϱâ 273
10.1 ºñµ¿±â ÇÁ·Î±×·¡¹Ö °³³ä ¼Ò°³ 274
10.2 µ¿½Ã ÇÁ·Î±×·¥ ÀÛ¼ºÇϱâ 281
10.3 ºñµ¿±â ·¯½ºÆ® ÀÚ¼¼È÷ »ìÆ캸±â 287
10.4 ǻó ÀÌÇØÇϱâ 292
10.5 Ä¿½ºÅÒ Ç»Ã³ ±¸ÇöÇϱâ 300
¿ä¾à 304
CHAPTER 11 ºñµ¿±â ·¯½ºÆ®¸¦ »ç¿ëÇØ P2P ³ëµå ±¸ÇöÇϱâ 305
11.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 ½ºÆ®¸² ¸ÖƼÇ÷º½Ì 309
11.2 libp2p ³×Æ®¿öÅ·ÀÇ ÇÙ½É ¾ÆÅ°ÅØó ÀÌÇØÇϱâ 310
__11.2.1 ÇǾî ID ¹× Å° Æä¾î 311 / 11.2.2 ¸ÖƼ¾îµå·¹½º 312
__11.2.3 ½º¿ú°ú ³×Æ®¿öÅ© µ¿ÀÛ 314
11.3 ÇÇ¾î ³ëµå »çÀÌ¿¡¼ ping ¸í·É ±³È¯Çϱâ 316
11.4 ÇÇ¾î ¹ß°ßÇϱâ 318
¿ä¾à 321
CHAPTER 12 µµÄ¿¸¦ »ç¿ëÇØ À¥ ¼ºñ½º ¹èÆ÷Çϱâ 323
12.1 ¼¹ö¿Í ¾ÛÀÇ ÇÁ·Î´ö¼Ç ¹èÆ÷ °³¿ä 324
__12.1.1 ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷ ¼ö¸í ÁÖ±â 325 / 12.1.2 µµÄ¿ ÄÁÅ×ÀÌ³Ê ±âº» 327
12.2 ù ¹ø° µµÄ¿ ÄÁÅ×ÀÌ³Ê ÀÛ¼ºÇϱâ 329
__12.2.1 µµÄ¿ ¼³Ä¡ È®ÀÎÇϱâ 329 / 12.2.2 °£´ÜÇÑ µµÄ¿ ÄÁÅ×ÀÌ³Ê ÀÛ¼ºÇϱâ 331
__12.2.3 ´Ù´Ü°è µµÄ¿ ºôµå 334
12.3 µ¥ÀÌÅͺ£À̽º ÄÁÅ×ÀÌ³Ê ºôµåÇϱâ 337
__12.3.1 Postgres µ¥ÀÌÅͺ£À̽º ÆÐŰ¡Çϱâ 338
__12.3.2 µ¥ÀÌÅͺ£À̽º Å×ÀÌºí »ý¼ºÇϱâ 344
12.4 µµÄ¿¸¦ »ç¿ëÇؼ À¥ ¼ºñ½º ÆÐŰ¡Çϱâ 347
12.5 µµÄ¿ ÄÄÆ÷Á »ç¿ëÇؼ µµÄ¿ ÄÁÅ×ÀÌ³Ê Á¶Á¤Çϱâ 348
¿ä¾à 355
APPENDIX A ºÎ·Ï 357
Postgres ¼³Ä¡ 357
ã¾Æº¸±â 360"