¾ÆÅ°ÅØó ÆÐÅÏÀÇ ±âÃʺÎÅÍ È°¿ë±îÁö ´Ù·ç´Â ½ÇÀü °¡À̵åÆÄÀ̽ãÀ» È°¿ëÇÑ ÇÁ·ÎÁ§Æ®ÀÇ ±Ô¸ð°¡ Ä¿Áö¸é¼ À°°¢Çü/Ŭ¸° ¾ÆÅ°ÅØó, À̺¥Æ® ±â¹Ý ¾ÆÅ°ÅØó, µµ¸ÞÀÎ ÁÖµµ ¼³°è µî °í¼öÁØ µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÑ °ü½ÉÀÌ ³ô¾ÆÁö°í ÀÖ´Ù. ÀÌ Ã¥Àº °ËÁõµÈ ¿¹Á¦¿Í ¾ÆÅ°ÅØó µðÀÚÀÎ ÆÐÅÏÀ» ¼Ò°³ÇÏ¸ç ¾ÖÇø®ÄÉÀ̼ÇÀÇ º¹À⼺, ÀÇÁ¸¼ºÀ» ³·Ãß°í, Å×½ºÆ® ½ºÀ§Æ®¿¡¼ ÃÖ¼±ÀÇ °¡Ä¡¸¦ ¾ò´Â ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù. ¶ÇÇÑ ÀÚ¹Ù³ª C#º¸´Ù °£´ÜÇÏ°í ¿ì¾ÆÇÑ ÆÄÀ̽ã ÄÚµåÀÇ ÀåÁ¡À» Àß »ì·Á °¢ ÆÐÅÏÀ» ¼³¸íÇÑ´Ù.
ÇöÀç ¸ÞÀ̵å´åÄÄ(MADE.com)¿¡¼ ±Ù¹« ÁßÀÌ´Ù. PythonAnywhere LLP¿¡¼ ±Ù¹«ÇÑ °æÇèÀÌ ÀÖ´Ù. ¿öÅ©¼óÀ̳ª ÄÁÆÛ·±½º µî¿¡¼ TDDÀÇ À¯¿ë¼ºÀ» Àü ¼¼°è¿¡ ÀüÆÄÇÏ°í ÀÖ´Ù. Ä·ºê¸®Áö ´ëÇб³¿¡¼ öÇÐ Çлç ÇÐÀ§¸¦ ÃëµæÇÏ°í ¸®¹öÇ® ´ëÇб³¿¡¼ ÄÄÇ»ÅÍ °úÇÐ ¼®»ç ÇÐÀ§¸¦ ÃëµæÇß´Ù.
CHAPTER 0 µµÀÔ
0.1 ¼³°è°¡ ¿Ö À߸øµÇ´Â°¡?
0.2 ĸ½¶È¿Í Ãß»óÈ
0.3 °èÃþÈ
0.4 ÀÇÁ¸¼º ¿ªÀü ¿øÄ¢
0.5 ¸ðµç ºñÁî´Ï½º ·ÎÁ÷À» À§ÇÑ Àå¼Ò: µµ¸ÞÀÎ ¸ðµ¨
[PART I µµ¸ÞÀÎ ¸ðµ¨¸µÀ» Áö¿øÇÏ´Â ¾ÆÅ°ÅØó ±¸Ãà]
CHAPTER 1 µµ¸ÞÀÎ ¸ðµ¨¸µ
1.1 µµ¸ÞÀÎ ¸ðµ¨À̶õ?
1.2 µµ¸ÞÀÎ ¾ð¾î Ž±¸
1.3 µµ¸ÞÀÎ ¸ðµ¨ ´ÜÀ§ Å×½ºÆ®
1.4 ¸ðµç °ÍÀ» °´Ã¼·Î ¸¸µé ÇÊ¿ä´Â ¾ø´Ù: µµ¸ÞÀÎ ¼ºñ½º ÇÔ¼ö
CHAPTER 2 ÀúÀå¼Ò ÆÐÅÏ
2.1 µµ¸ÞÀÎ ¸ðµ¨ ¿µ¼ÓÈ
2.2 ÀÇ»çÄÚµå: ¹«¾ùÀÌ ÇÊ¿äÇÒ±î?
2.3 µ¥ÀÌÅÍ Á¢±Ù¿¡ DIP Àû¿ëÇϱâ
2.4 ±â¾ï µÇ»ì¸®±â: ¿ì¸®°¡ »ç¿ëÇÏ´Â ¸ðµ¨
2.5 ÀúÀå¼Ò ÆÐÅÏ ¼Ò°³
2.6 Å×½ºÆ®¿¡ »ç¿ëÇÏ´Â °¡Â¥ ÀúÀå¼Ò¸¦ ½±°Ô ¸¸µå´Â ¹æ¹ý
2.7 ÆÄÀ̽㿡¼ Æ÷Æ®´Â ¹«¾ùÀÌ°í, ¾î´ðÅͶõ ¹«¾ùÀΰ¡
2.8 ¸¶Ä¡¸ç
CHAPTER 3 ¸·°£: °áÇÕ°ú Ãß»óÈ
3.1 Ãß»óÀûÀÎ »óÅ´ Å×½ºÆ®¸¦ ´õ ½±°Ô ÇØÁØ´Ù
3.2 ¿Ã¹Ù¸¥ Ãß»óÈ ¼±ÅÃ
3.3 ¼±ÅÃÇÑ Ãß»óÈ ±¸Çö
3.4 ¸¶Ä¡¸ç
CHAPTER 4 ù ¹ø° À¯½º ÄÉÀ̽º: Çöó½ºÅ© API¿Í ¼ºñ½º °èÃþ
4.1 ¾ÖÇø®ÄÉÀ̼ÇÀ» ½Ç¼¼°è¿Í ¿¬°áÇϱâ
4.2 ù ¹ø° ¿£µåÅõ¿£µå Å×½ºÆ®
4.3 Á÷Á¢ ±¸ÇöÇϱâ
4.4 µ¥ÀÌÅͺ£À̽º °Ë»ç°¡ ÇÊ¿äÇÑ ¿À·ù Á¶°Ç
4.5 ¼ºñ½º °èÃþ ¼Ò°³¿Í ¼ºñ½º °èÃþ Å×½ºÆ®¿ë FakeRepository »ç¿ë
4.6 ¸ðµç °ÍÀ» ¿Ö ¼ºñ½º¶ó°í ºÎ¸£´Â°¡?
4.7 ¸ðµç ¿ä¼Ò¸¦ Æú´õ¿¡ ³Ö°í °¢ ºÎºÐÀÌ ¾î¶² À§Ä¡¿¡ ÀÖ´ÂÁö »ìÆ캸±â
4.8 ¸¶Ä¡¸ç
CHAPTER 5 ³ôÀº ±â¾îºñ¿Í ³·Àº ±â¾îºñÀÇ TDD
5.1 Å×½ºÆ® ÇǶó¹Ìµå´Â ¾î¶»°Ô »ý°å´Â°¡?
5.2 µµ¸ÞÀÎ °èÃþ Å×½ºÆ®¸¦ ¼ºñ½º °èÃþÀ¸·Î ¿Å°Ü¾ß Çϴ°¡?
5.3 ¾î¶² Á¾·ùÀÇ Å×½ºÆ®¸¦ ÀÛ¼ºÇÒÁö °áÁ¤ÇÏ´Â ¹æ¹ý
5.4 ³ôÀº ±â¾îºñ¿Í ³·Àº ±â¾îºñ
5.5 ¼ºñ½º °èÃþ Å×½ºÆ®¸¦ µµ¸ÞÀÎÀ¸·ÎºÎÅÍ ¿ÏÀüÈ÷ ºÐ¸®Çϱâ
5.6 E2E Å×½ºÆ®¿¡ µµ´ÞÇÒ ¶§±îÁö °è¼Ó °³¼±Çϱâ
5.7 ¸¶Ä¡¸ç
CHAPTER 6 ÀÛ¾÷ ´ÜÀ§ ÆÐÅÏ
6.1 ÀÛ¾÷ ´ÜÀ§´Â ÀúÀå¼Ò¿Í Çù·Â
6.2 Å×½ºÆ®-ÅëÇÕ Å×½ºÆ®·Î UoW Á¶Á¤Çϱâ
6.3 ÀÛ¾÷ ´ÜÀ§¿Í ÀÛ¾÷ ´ÜÀ§ÀÇ ÄÜÅؽºÆ® °ü¸®ÀÚ
6.4 UoW¸¦ ¼ºñ½º °èÃþ¿¡ »ç¿ëÇϱâ
6.5 Ä¿¹Ô/·Ñ¹é µ¿ÀÛ¿¡ ´ëÇÑ ¸í½ÃÀûÀÎ Å×½ºÆ®
6.6 ¸í½ÃÀû Ä¿¹Ô°ú ¾Ï½ÃÀû Ä¿¹Ô
6.7 ¿¹Á¦: UoW¸¦ »ç¿ëÇØ ¿©·¯ ¿¬»êÀ» ¿øÀÚÀû ´ÜÀ§·Î ¹±â
6.8 ÅëÇÕ Å×½ºÆ® ±ò²ûÇÏ°Ô Á¤¸®Çϱâ
6.9 ¸¶Ä¡¸ç
CHAPTER 7 ¾Ö±×¸®°ÔÀÌÆ®¿Í ÀÏ°ü¼º °æ°è
7.1 ¸ðµç °ÍÀ» ½ºÇÁ·¹µå½ÃÆ®¿¡¼ ó¸®ÇÏÁö ¾Ê´Â ÀÌÀ¯
7.2 ºÒº¯Á¶°Ç, Á¦¾à, ÀÏ°ü¼º
7.3 ¾Ö±×¸®°ÔÀÌÆ®¶õ?
7.4 ¾Ö±×¸®°ÔÀÌÆ® ¼±ÅÃ
7.5 ÇÑ ¾Ö±×¸®°ÔÀÌÆ® = ÇÑ ÀúÀå¼Ò
7.6 ¼º´ÉÀº ¾î¶³±î?
7.7 ¹öÀü ¹øÈ£¿Í ³«°üÀû µ¿½Ã¼º
7.8 µ¥ÀÌÅÍ ¹«°á¼º ±ÔÄ¢ Å×½ºÆ®
7.9 ¸¶Ä¡¸ç
7.10 1ºÎ µ¹¾Æº¸±â
[PART II À̺¥Æ® ±â¹Ý ¾ÆÅ°ÅØó]
CHAPTER 8 À̺¥Æ®¿Í ¸Þ½ÃÁö ¹ö½º
8.1 ÁöÀúºÐÇØÁöÁö ¾Ê°Ô ¸·±â
8.2 ´ÜÀÏ Ã¥ÀÓ ¿øÄ¢
8.3 ¸Þ½ÃÁö ¹ö½º¿¡ ÀüºÎ ´Ù ½ÆÀÚ
8.4 ù ¹ø° ¼±ÅÃÁö: ¼ºñ½º °èÃþÀÌ ¸ðµ¨¿¡¼ À̺¥Æ®¸¦ °¡Á®¿Í ¸Þ½ÃÁö ¹ö½º¿¡ ½Æ´Â´Ù
8.5 µÎ ¹ø° ¼±ÅÃÁö: ¼ºñ½º °èÃþÀº ÀڽŸ¸ÀÇ À̺¥Æ®¸¦ ¹ß»ýÇÑ´Ù
8.6 ¼¼ ¹ø° ¼±ÅÃÁö: UoW°¡ ¸Þ½ÃÁö ¹ö½º¿¡ À̺¥Æ®¸¦ ¹ßÇàÇÑ´Ù
8.7 ¸¶Ä¡¸ç
CHAPTER 9 ¸Þ½ÃÁö ¹ö½º¸¦ Ÿ°í ½Ã³»·Î ³ª°¡±â
9.1 »õ·Î¿î ¾ÆÅ°ÅØó°¡ ÇÊ¿äÇÑ »õ·Î¿î ¿ä±¸ »çÇ×
9.2 ¼ºñ½º ÇÔ¼ö¸¦ ¸Þ½ÃÁö Çڵ鷯·Î ¸®ÆÑÅ͸µÇϱâ
9.3 »õ·Î¿î ¿ä±¸ »çÇ× ±¸ÇöÇϱâ
9.4 »õ Çڵ鷯 ½Ã¹ü¿î¿µÇϱâ
9.5 ¼±ÅÃ: °¡Â¥ ¸Þ½ÃÁö ¹ö½º¿Í µ¶¸³ÀûÀ¸·Î À̺¥Æ® Çڵ鷯 ´ÜÀ§ Å×½ºÆ®Çϱâ
9.6 ¸¶Ä¡¸ç
CHAPTER 10 Ä¿¸Çµå¿Í Ä¿¸Çµå Çڵ鷯
10.1 Ä¿¸Çµå¿Í À̺¥Æ®
10.2 ¿¹¿Ü ó¸® ¹æ½ÄÀÇ Â÷ÀÌÁ¡
10.3 ³íÀÇ: À̺¥Æ®, Ä¿¸Çµå, ¿À·ù ó¸®
10.4 µ¿±âÀûÀ¸·Î ¿À·ù º¹±¸Çϱâ
10.5 ¸¶Ä¡¸ç
CHAPTER 11 À̺¥Æ® ±â¹Ý ¾ÆÅ°ÅØó: À̺¥Æ®¸¦ »ç¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º ÅëÇÕ
11.1 ºÐ»êµÈ ÁøÈë °ø, ¸í»ç·Î »ý°¢Çϱâ
11.2 ºÐ»ê ½Ã½ºÅÛ¿¡¼ ¿À·ù ó¸®Çϱâ
11.3 ´ë¾È: ºñµ¿±â ¸Þ½Ã¡À» »ç¿ëÇÑ ½Ã°£Àû °áÇÕ
11.4 ·¹µð½º ¹ßÇà/±¸µ¶ ä³ÎÀ» ÅëÇÕ¿¡ »ç¿ëÇϱâ
11.5 ¿£µåÅõ¿£µå Å×½ºÆ®¸¦ »ç¿ëÇØ ¸ðµç ±â´É ½Ã¹ü¿î¿µÇϱâ
11.6 ³»ºÎ À̺¥Æ®¿Í ¿ÜºÎ À̺¥Æ® ºñ±³
11.7 ¸¶Ä¡¸ç
CHAPTER 12 ¸í·É-ÁúÀÇ Ã¥ÀÓ ºÐ¸®(CQRS)
12.1 ¾²±â À§ÇØ Á¸ÀçÇÏ´Â µµ¸ÞÀÎ ¸ðµ¨
12.2 °¡±¸¸¦ ±¸¸ÅÇÏÁö ¾ÊÀº »ç¿ëÀÚ
12.3 Post/¸®µð·º¼Ç/Get°ú CQS
12.4 Á¡½ÉÀ» Àá±ñ ¹Ì·ï¶ó
12.5 CQRS ºä Å×½ºÆ®Çϱâ
12.6 ¡®¸íÈ®ÇÑ¡¯ ´ë¾È 1: ±âÁ¸ ÀúÀå¼Ò »ç¿ëÇϱâ
12.7 Àб⠿¬»ê¿¡ ÃÖÀûȵÇÁö ¾ÊÀº µµ¸ÞÀÎ ¸ðµ¨
12.8 ¡®¸íÈ®ÇÑ¡¯ ´ë¾È 2: ORM »ç¿ëÇϱâ
12.9 SELECT N+1°ú ´Ù¸¥ °í·Á »çÇ×
12.10 ÀÌÁ¦´Â »ó¾î¸¦ ¿ÏÀüÈ÷ ¶Ù¾î ³ÑÀ» ¶§ÀÌ´Ù
12.11 Àб⠸𵨠±¸ÇöÀ» º¯°æÇϱ⠽±´Ù
12.12 ¸¶Ä¡¸ç
CHAPTER 13 ÀÇÁ¸¼º ÁÖÀÔ(±×¸®°í ºÎÆ®½ºÆ®·¡ÇÎ)
13.1 ¾Ï½ÃÀû ÀÇÁ¸¼º°ú ¸í½ÃÀû ÀÇÁ¸¼º
13.2 ¸í½ÃÀû ÀÇÁ¸¼ºÀº ¿ÏÀüÈ÷ ÀÌ»óÇÏ°í ÀÚ¹Ù½º·¯¿î°¡?
13.3 Çڵ鷯 Áغñ: Ŭ·ÎÀú¿Í ºÎºÐÇÔ¼ö¸¦ »ç¿ëÇÑ ¼öµ¿ DI
13.4 Ŭ·¡½º¸¦ »ç¿ëÇÑ ´ë¾È
13.5 ºÎÆ®½ºÆ®·¦ ½ºÅ©¸³Æ®
13.6 ½ÇÇà µµÁß Çڵ鷯°¡ Á¦°øµÈ ¸Þ½ÃÁö ¹ö½º
13.7 ÁøÀÔÁ¡¿¡¼ ºÎÆ®½ºÆ®·¦ »ç¿ëÇϱâ
13.8 Å×½ºÆ®¿¡¼ DI ÃʱâÈÇϱâ
13.9 ¾î´ðÅÍ ¡®ÀûÀýÈ÷¡¯ ±¸ÃàÇϱâ: ½ÇÁ¦ »ç·Ê
13.10 ¸¶Ä¡¸ç
CHAPTER 14 ¸ÎÀ½¸»
14.1 ¿Ö Áö±ÝÀΰ¡?
14.2 ¿©±â¼ °Å±â±îÁö ¾î¶»°Ô °¥ ¼ö ÀÖÀ»±î?
14.3 µÚ¾ûŲ Ã¥ÀÓ ºÐ¸®
14.4 ¾Ö±×¸®°ÔÀÌÆ®¿Í Á¦ÇÑµÈ ÄÜÅؽºÆ® ½Äº°Çϱâ
14.5 ½ºÆ®·©±Û·¯ ÆÐÅÏÀ» ÅëÇØ ¸¶ÀÌÅ©·Î¼ºñ½º·Î ÀüȯÇÏ´Â À̺¥Æ® ±â¹Ý Á¢±Ù ¹æ¹ý
14.6 »õ·Î¿î ÀÏÀ» ½ÃÀÛÇϵµ·Ï ÀÌÇØ°ü°èÀÚ ¼³µæÇϱâ
14.7 ±â¼ú ¸®ºä¾îµéÀÇ Áú¹®
14.8 Dz°Ç
14.9 Ãß°¡ ÀÚ·á
14.10 ¸¶Ä¡¸ç
[PART III ºÎ·Ï]
APPENDIX A Á¤¸® ´ÙÀ̾î±×·¥°ú Ç¥
APPENDIX B ÇÁ·ÎÁ§Æ® ±¸Á¶ Ʋ
B.1 ȯ°æ º¯¼ö, 12ÆÑÅÍ, ¼³Á¤, ÄÁÅ×ÀÌ³Ê ³»ºÎ¿Í ¿ÜºÎ
B.2 config.py
B.3 docker-compose¿Í ÄÁÅ×ÀÌ³Ê ¼³Á¤
B.4 ¼Ò½º¸¦ ÆÐÅ°Áö·Î ¼³Ä¡Çϱâ
B.5 Dockerfile
B.6 Å×½ºÆ®
B.7 ¸¶Ä¡¸ç
APPENDIX C ÀÎÇÁ¶ó ±³Ã¼: CSV·Î ¸ðµç µ¥ÀÌÅÍ Ã³¸®Çϱâ
C.1 CSV¸¦ »ç¿ëÇÑ ÀúÀå¼Ò¿Í ÀÛ¾÷ ´ÜÀ§ ±¸ÇöÇϱâ
APPENDIX D Àå°í¿¡¼ ÀÛ¾÷ ´ÜÀ§¿Í ÀúÀå¼Ò ÆÐÅÏ »ç¿ëÇϱâ
D.1 Àå°í¸¦ »ç¿ëÇÑ ÀúÀå¼Ò ÆÐÅÏ
D.2 Àå°í ÀÛ¾÷ ´ÜÀ§ ÆÐÅÏ
D.3 API: Àå°í ºä´Â ¾î´ðÅÍ´Ù
D.4 ÀÌ ¸ðµç °Ô ¿Ö ±×·¸°Ô ¾î·Á¿ü´Â°¡?
D.5 ÀÌ¹Ì Àå°í ¾ÛÀ» »ç¿ë ÁßÀ̶ó¸é
D.6 Àå°í¿Í ÇÔ²² ÁøÇàÇÒ ¼ö ÀÖ´Â ´Ü°èµé
APPENDIX E °ËÁõ
E.1 °ËÁõÀ̶õ ¹«¾ùÀΰ¡?
E.2 ¹®¹ý °ËÁõ
E.3 Æ÷½ºÅÚÀÇ ¹ýÄ¢°ú Åç·¯·±Æ® ¸®´õ ÆÐÅÏ
E.4 °¡ÀåÀÚ¸®¿¡¼ °ËÁõÇϱâ
E.5 ÀÇ¹Ì °ËÁõÇϱâ
E.6 °ËÁõ È¿ë·Ð