ÄÜÅÙÃ÷ »ó¼¼º¸±â
·¯½ºÆ® ¼­¹ö, ¼­ºñ½º, ¾Û ¸¸µé±â


·¯½ºÆ® ¼­¹ö, ¼­ºñ½º, ¾Û ¸¸µé±â

·¯½ºÆ® ¼­¹ö, ¼­ºñ½º, ¾Û ¸¸µé±â

<ÇÁ¶óºÎ ¿¡½º¿Ð¶ó> Àú/<±è¸ð¼¼> ¿ª | Á¦ÀÌÆà

Ãâ°£ÀÏ
2024-06-14
ÆÄÀÏÆ÷¸Ë
ePub
¿ë·®
9 M
Áö¿ø±â±â
PC½º¸¶Æ®ÆùÅÂºí¸´PC
ÇöȲ
½Åû °Ç¼ö : 0 °Ç
°£·« ½Åû ¸Þ¼¼Áö
ÄÜÅÙÃ÷ ¼Ò°³
ÀúÀÚ ¼Ò°³
¸ñÂ÷
ÇÑÁÙ¼­Æò

ÄÜÅÙÃ÷ ¼Ò°³

ºÐ»ê À¥ ¾Û ±¸ÃàÇϸç Ç®½ºÅà ·¯½ºÆ® ¸¶½ºÅÍÇϱâ

ÀÌ Ã¥Àº ¿ÀÁ÷ ·¯½ºÆ®¸¸À¸·Î À¥¼­¹ö, RESTful ¼­ºñ½º, ¼­¹ö ·»´õ¸µ ¾Û, Ŭ¶óÀ̾ðÆ® ÇÁ·±Æ®¿£µå¸¦ ¸¸µç´Ù. ÀÛ°í ¿¹Ãø °¡´ÉÇÑ ¸®¼Ò½º DzÇÁ¸°Æ®·Î Äڵ带 ÀÛ¼ºÇÏ´Â ¹ý, Ź¿ùÇÑ ¾ÈÀü¼º°ú ½Å·Ú¼ºÀ» °®Ãá °í¼º´É ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÏ´Â ¹ýÀ» ¹è¿ï ¼ö ÀÖ´Ù. Ã¥ Àüü¿¡ °ÉÃÄ, °­»çµéÀ» À§ÇÑ ¿Â¶óÀÎ ±³À° Ç÷§ÆûÀ» Ç®½ºÅà ·¯½ºÆ®·Î ¸¸µé¾î³ª°£´Ù. °£´ÜÇÑ HTTP ¼­¹ö¿Í RESTful À¥ ¼­ºñ½º¸¦ ±¸ÃàÇÏ´Â ±âÃʺÎÅÍ ½ÃÀÛÇؼ­ º¸¾È, µ¥ÀÌÅͺ£À̽º »óÈ£ÀÛ¿ë, ¿À·ù 󸮸¦ Ãß°¡ÇØ ÇÁ·Î´ö¼Ç ·¹µð »óÅ·Π¸¸µç´Ù. ÃÖÁ¾ÀûÀ¸·Î ¼­ºñ½º¸¦ ±¸ÇöÇÏ°í SPA¸¦ ¸¸µé°í ºñµ¿±â ÇÁ·Î±×·¡¹Ö±îÁö »ìÆ캻´Ù.

ÀúÀÚ¼Ò°³

20³â ÀÌ»ó ´ë±â¾÷¿¡ °íÇ°ÁúÀÇ ºñÁî´Ï½º Å©¸®Æ¼Äà ¼ÒÇÁÆ®¿þ¾î¿Í ºÐ»ê ½Ã½ºÅÛÀ» °ø±ÞÇÏ°í IT ¿î¿µÀ» ´ã´çÇß´Ù. ÇöÀç´Â ·¯½ºÆ®¸¦ »ç¿ëÇØ ·¹À̾î 1 ºí·ÏüÀÎÀ» ±¸ÃàÇÏ´Â ½ºÅ¸Æ®¾÷ÀÇ CTO´Ù. º¹ÀâÇÑ ±â¼úÀ» ½±°Ô °¡¸£Ä¡´Â µ¥ Áø½ÉÀÎ ±³À°ÀÚÀ̱⵵ ÇÏ´Ù. ºÐ»ê ½Ã½ºÅÛ¿ë ¼ÒÇÁÆ®¿þ¾î ÀÎÇÁ¶ó ¹× ½Ã½ºÅÛ µµ±¸ ±¸Ãà¿¡ ·¯½ºÆ®°¡ °­Á¡ÀÌ ÀÖÀ½À» ÀÏÂïÀÌ ÆľÇÇÏ°í È°¿ëÇØ¿Ô´Ù. ÄÚµùÀÇ Ã¢ÀÇÀû ¼º°ÝÀ» Áß¿äÇÏ°Ô ¿©±âÁö¸¸, ±ò²ûÇÏ°í È¿À²ÀûÀÌ¸ç ¾ÈÀüÇÏ°í À¯Áö °¡´ÉÇÑ Äڵ带 ¸¸µé±â À§ÇÑ ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸µÀÇ ¾ö°ÝÇÔ ¶ÇÇÑ Áß½ÃÇÑ´Ù.

¸ñÂ÷

¿Å±äÀÌ ¸Ó¸®¸» 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