»ó¼¼Á¤º¸
µµ¸ÞÀÎ ÁÖµµ °³¹ß ½ÃÀÛÇϱâ - DDD ÇÙ½É °³³ä Á¤¸®ºÎÅÍ ±¸Çö±îÁö
- ÀúÀÚ
- ÃÖ¹ü±Õ ÁöÀ½
- ÃâÆÇ»ç
- ÇѺû¹Ìµð¾î
- ÃâÆÇÀÏ
- 2022-03-20
- µî·ÏÀÏ
- 2022-07-28
- ÆÄÀÏÆ÷¸Ë
- PDF
- ÆÄÀÏÅ©±â
- 6MB
- °ø±Þ»ç
- ¾Ë¶óµò
- Áö¿ø±â±â
-
PC
PHONE
TABLET
ÇÁ·Î±×·¥ ¼öµ¿¼³Ä¡
ºä¾îÇÁ·Î±×·¥ ¼³Ä¡ ¾È³»
Ã¥¼Ò°³
ÀÌ Ã¥Àº µµ¸ÞÀÎ ¸ðµ¨À» ÀÌ¿ëÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇÏ´Â µ¥ ÇÊ¿äÇÑ ³»¿ëÀ» ´Ù·ç¸ç Àüü 11ÀåÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.
¡ÚÀÌ Ã¥ÀÇ ³»¿ë
1Àå°ú 2Àå¿¡¼´Â µµ¸ÞÀÎ ¸ðµ¨À» ±¸ÇöÇÒ ¶§ ¾Ë¾Æ¾ß ÇÒ ±âº»ÀûÀÎ ³»¿ëÀ» ´Ù·é´Ù. 1Àå¿¡¼´Â µµ¸ÞÀÎ ¸ðµ¨ÀÌ ¹«¾ùÀÎÁö ¾Ë¾Æº¸°í ¿£Æ¼Æ¼¿Í ¹ë·ù¿¡ ´ëÇØ ¾Ë¾Æº»´Ù. 2ÀåÀº »óÀ§ ¼öÁØ¿¡¼ ¾ÆÅ°ÅØóÀÇ ³× ¿µ¿ª°ú DIP ÆÐÅÏÀ» ¼³¸íÇÏ°í µµ¸ÞÀÎ ¿µ¿ªÀÇ ±¸¼º ¿ä¼Ò¿¡ ´ëÇØ »ìÆ캻´Ù.
3ÀåºÎÅÍ 5ÀåÀº ¾Ö±×¸®°ÅÆ®¿Í ¸®Æ÷ÁöÅ͸®¸¦ ¼³¸íÇÑ´Ù. ¾Ö±×¸®°ÅÆ®´Â º¹ÀâÇÑ µµ¸ÞÀÎ ¸ðµ¨À» °ü¸® °¡´ÉÇÑ ´ÜÀ§·Î ¹¾îÁÖ´Â ¿ªÇÒÀ» ´ã´çÇÑ´Ù. 3Àå¿¡¼´Â ¾Ö±×¸®°ÅÆ®°¡ ¹«¾ùÀÌ°í ±¸ÇöÀ» ¾î¶»°Ô ÇÏ´ÂÁö ¾Ë¾Æº»´Ù. 4Àå¿¡¼´Â ¾Ö±×¸®°ÅÆ®ÀÇ ³í¸®ÀûÀÎ ÀúÀå¼ÒÀÎ ¸®Æ÷ÁöÅ͸®¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸°í 5Àå¿¡¼´Â °Ë»ö Á¶°ÇÀ» À§ÇÑ ½ºÆå, Á¤·Ä, ÆäÀÌ¡ µî Á¶È¸ ±â´ÉÀ» ±¸ÇöÇغ»´Ù.
6ÀåÀº ÀÀ¿ë ¼ºñ½º¿Í Ç¥Çö ¿µ¿ª¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. ÀÀ¿ë ¼ºñ½º°¡ ¾î¶»°Ô µµ¸ÞÀÎ ¸ðµ¨À» »ç¿ëÇÏ°í ¾î¶² ¿ªÇÒÀ» ¼öÇàÇÏ´ÂÁö ¾Ë¾Æº¸°í Ç¥Çö ¿µ¿ª°ú ÀÀ¿ë ¼ºñ½ºÀÇ ¿¬µ¿¿¡ ´ëÇØ ¼³¸íÇÑ´Ù.
7ÀåÀº µµ¸ÞÀÎ ¿µ¿ªÀÇ ±¸¼º¿ä¼Ò Áß ÇϳªÀÎ µµ¸ÞÀÎ ¼ºñ½º°¡ ÇÊ¿äÇÑ ÀÌÀ¯¿Í ±¸Çö¿¡ ´ëÇØ ¼³¸íÇÑ´Ù.
8Àå¿¡¼´Â ¾Ö±×¸®°ÅÆ®ÀÇ Æ®·£Àè¼Ç ¹üÀ§¿¡ ´ëÇØ »ìÆ캻´Ù. ¾Ö±×¸®°ÅÆ®ÀÇ Æ®·£Àè¼Ç 󸮸¦ À§ÇØ DBMS¸¦ ÀÌ¿ëÇÑ ¼±Á¡ Àá±Ý°ú ¹öÀüÀ» ÀÌ¿ëÇÑ ºñ¼±Á¡ Àá±ÝÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù.
9ÀåÀº ¾Ö±×¸®°ÅÆ®¿Í ´õºÒ¾î °¡Àå Áß¿äÇÑ °³³ä Áß ÇϳªÀÎ ¹Ù¿îµðµå ÄÁÅؽºÆ®¿¡ ´ëÇÑ ³»¿ëÀ» ´Ù·é´Ù. ¹Ù¿îµðµå ÄÁÅؽºÆ®°¡ ¹«¾ùÀÌ°í °¢ ÄÁÅؽºÆ®ÀÇ ÅëÇÕ°ú °ü°è¿¡ ´ëÇØ ¹è¿öº»´Ù.
10Àå°ú 11ÀåÀº °¢°¢ À̺¥Æ®¿Í CQRS¿¡ ´ëÇØ ¼³¸íÇÑ´Ù.
10ÀåÀº µµ¸ÞÀÎ À̺¥Æ®¸¦ ÀÌ¿ëÇؼ ½Ã½ºÅÛÀÇ °áÇÕµµ¸¦ ³·Ãß°í ±â´ÉÀ» È®ÀåÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÏ¸ç ºñµ¿±â·Î À̺¥Æ®¸¦ ó¸®ÇÏ´Â ¸î °¡Áö ±¸Çö ¹æ¹ýµµ »ìÆ캻´Ù. 11ÀåÀº CQRS°¡ ¹«¾ùÀÎÁö ¾Ë¾Æº¸°í, À̸¦ ÅëÇØ ¾î¶² È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ´ÂÁö¿¡ ´ëÇØ ¼³¸íÇÑ´Ù.
¡Ú ´Ù·ç´Â ³»¿ë
? µµ¸ÞÀÎ ¸ðµ¨ÀÇ ÀÌÇØ, ¿£Æ¼Æ¼¿Í ¹ë·ùÀÇ °³³ä
? ¾ÆÅ°ÅØóÀÇ ÁÖ¿ä ¿µ¿ª ±¸¼º¿ä¼Ò¿Í DIP ÆÐÅÏ
? ¾Ö±×¸®°ÅÆ®, ¸®Æ÷ÁöÅ͸® µî DDD ÁÖ¿ä ÆÐÅÏÀÇ ÀÌÇØ¿Í ±¸Çö ¹æ¹ý
? ÀÀ¿ë ¼ºñ½º¿Í Ç¥Çö ¿µ¿ªÀ» ¿¬µ¿ÇÏ´Â ¹æ¹ý
? µµ¸ÞÀÎ ¼ºñ½ºÀÇ Çʿ伺°ú ±¸Çö ¹æ¹ý
? µµ¸ÞÀÎ ¸ðµ¨ÀÇ Æ®·£Àè¼Ç Ãæµ¹À» ó¸®ÇÏ´Â ¹æ¹ý
? µµ¸ÞÀÎ À̺¥Æ®¸¦ ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛÀÇ °áÇÕµµ¸¦ ³·Ãß°í ±â´ÉÀ» È®ÀåÇÏ´Â ¹æ¹ý
? CQRSÀÇ °³³ä°ú ¸í·É ¸ðµ¨/Á¶È¸ ¸ðµ¨À» ³ª´©´Â ¹æ¹ý
¡Ú ´ë»ó µ¶ÀÚ
ÀÌ Ã¥Àº DDD¸¦ óÀ½ Á¢ÇÏ´Â °³¹ßÀÚ¸¦ À§ÇÑ Ã¥À¸·Î DDD ÀÔ¹®ÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. DDD °í¼ö°¡ µÇ´Â ¹ýÀ» ¾Ë·ÁÁִ åÀº ¾Æ´Ï´Ù. ÀÌ¹Ì DDD ±âÃʸ¦ ¸¶½ºÅÍÇß´Ù¸é ´Ù¸¥ Ã¥À» ÅëÇØ DDDÀÇ ½É¿ÀÇÔÀ» ´À³¢±æ ¹Ù¶õ´Ù. ¾ÆÁ÷ DDD¸¦ Àß ¸ð¸£Áö¸¸ °ü½ÉÀÌ ÀÖ´Ù¸é ÀÌ Ã¥À» ÅëÇØ DDD¿¡ ´ëÇÑ È£±â½ÉÀ» ä¿ï ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¡Ú ¿¹Á¦ ¼Ò½º
¿¹Á¦ ÄÚµå´Â ¸ÞÀ̺ì, ÀÚ¹Ù 17, ½ºÇÁ¸µ ºÎÆ®, JPA(ÇÏÀ̹ö³×ÀÌÆ®), ŸÀÓ¸®ÇÁ, MySQLÀ» ÀÌ¿ëÇؼ ÀÛ¼ºÇß´Ù.
https://github.com/madvirus/ddd-start2
ÀúÀÚ¼Ò°³
ÄÚµùÀ» ÁÁ¾ÆÇÏ¿© ³ªÀ̸¦ ¸Ô°í ¹é¹ßÀÌ µÇ¾îµµ °³¹ßÀ» ÇÏ°í ½ÍÀº °³¹ßÀÚ´Ù. ÁÁÀº Ã¥ ¾²´Â °ÍÀ» ¸ñÇ¥·Î ²ÙÁØÈ÷ ºí·Î±×¿Í ºê·±Ä¡¿¡ ±ÛÀ» ¾²°í ÀÖÀ¸¸ç ¸¹Àº °¿¬ È°µ¿µµ ÇÏ°í ÀÖ´Ù.
Àü) ¾ÆÀ̽ºÅ©¸²¿¡µà, ¿¡½º¾¾Áö¼Ö·ç¼ÇÁî, À§¸ÞÀ̵忣ÅÍÅ×ÀθÕÆ®, ´ÙÀ½Ä¿¹Â´ÏÄÉÀÌ¼Ç °³¹ßÀÚ
Çö) ¿¡½º¾¾Áö·¦ °³¹ß½ÇÀå
Àú¼: ¡ºÅ×½ºÆ® ÁÖµµ °³¹ß ½ÃÀÛÇϱ⡻(°¡¸ÞÃâÆÇ»ç), ¡º½ºÇÁ¸µ5 ÇÁ·Î±×·¡¹Ö ÀÔ¹®¡»(°¡¸ÞÃâÆÇ»ç), ¡ºJPA ÇÁ·Î±×·¡¹Ö ÀÔ¹®¡»(°¡¸ÞÃâÆÇ»ç), ¡ºDDD START¡»(Áö¾Ø¼±), ¡º°´Ã¼ ÁöÇâ°ú µðÀÚÀÎ ÆÐÅÏ¡»(ÀÎÅõºÏ½º) µî
¸ñÂ÷
Chapter 1. µµ¸ÞÀÎ ¸ðµ¨ ½ÃÀÛÇϱâ
1.1 µµ¸ÞÀÎÀ̶õ?
1.2 µµ¸ÞÀÎ Àü¹®°¡¿Í °³¹ßÀÚ °£ Áö½Ä °øÀ¯
1.3 µµ¸ÞÀÎ ¸ðµ¨
1.4 µµ¸ÞÀÎ ¸ðµ¨ ÆÐÅÏ
1.5 µµ¸ÞÀÎ ¸ðµ¨ µµÃâ
1.6 ¿£Æ¼Æ¼¿Í ¹ë·ù
1.6.1 ¿£Æ¼Æ¼
1.6.2 ¿£Æ¼Æ¼ÀÇ ½Äº°ÀÚ »ý¼º
1.6.3 ¹ë·ù ŸÀÔ
1.6.4 ¿£Æ¼Æ¼ ½Äº°ÀÚ¿Í ¹ë·ù ŸÀÔ
1.6.5 µµ¸ÞÀÎ ¸ðµ¨¿¡ set ¸Þ¼µå ³ÖÁö ¾Ê±â
1.7 µµ¸ÞÀÎ ¿ë¾î¿Í À¯ºñÄõÅͽº ¾ð¾î
Chapter 2. ¾ÆÅ°ÅØó °³¿ä
2.1 ³× °³ÀÇ ¿µ¿ª
2.2 °èÃþ ±¸Á¶ ¾ÆÅ°ÅØó
2.3 DIP
2.3.1 DIP ÁÖÀÇ»çÇ×
2.3.2 DIP¿Í ¾ÆÅ°ÅØó
2.4 µµ¸ÞÀÎ ¿µ¿ªÀÇ ÁÖ¿ä ±¸¼º¿ä¼Ò
2.4.1 ¿£Æ¼Æ¼¿Í ¹ë·ù
2.4.2 ¾Ö±×¸®°ÅÆ®
2.4.3 ¸®Æ÷ÁöÅ͸®
2.5 ¿äû ó¸® È帧
2.6 ÀÎÇÁ¶ó½ºÆ®·°Ã³ °³¿ä
2.7 ¸ðµâ ±¸¼º
Chapter 3. ¾Ö±×¸®°ÅÆ®
3.1 ¾Ö±×¸®°ÅÆ®
3.2 ¾Ö±×¸®°ÅÆ® ·çÆ®
3.2.1 µµ¸ÞÀÎ ±ÔÄ¢°ú ÀÏ°ü¼º
3.2.2 ¾Ö±×¸®°ÅÆ® ·çÆ®ÀÇ ±â´É ±¸Çö
3.2.3 Æ®·£Àè¼Ç ¹üÀ§
3.3 ¸®Æ÷ÁöÅ͸®¿Í ¾Ö±×¸®°ÅÆ®
3.4 ID¸¦ ÀÌ¿ëÇÑ ¾Ö±×¸®°ÅÆ® ÂüÁ¶
3.4.1 ID¸¦ ÀÌ¿ëÇÑ ÂüÁ¶¿Í Á¶È¸ ¼º´É
3.5 ¾Ö±×¸®°ÅÆ® °£ ÁýÇÕ ¿¬°ü
3.6 ¾Ö±×¸®°ÅÆ®¸¦ ÆÑÅ丮·Î »ç¿ëÇϱâ
Chapter 4. ¸®Æ÷ÁöÅ͸®¿Í ¸ðµ¨ ±¸Çö(JPA Áß½É)
4.1 JPA¸¦ ÀÌ¿ëÇÑ ¸®Æ÷ÁöÅ͸® ±¸Çö
4.1.1 ¸ðµâ À§Ä¡
4.1.2 ¸®Æ÷ÁöÅ͸® ±âº» ±â´É ±¸Çö
4.2 ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¸¦ ÀÌ¿ëÇÑ ¸®Æ÷ÁöÅ͸® ±¸Çö
4.3 ¸ÅÇÎ ±¸Çö
4.3.1 ¿£Æ¼Æ¼¿Í ¹ë·ù ±âº» ¸ÅÇÎ ±¸Çö
4.3.2 ±âº» »ý¼ºÀÚ
4.3.3 Çʵå Á¢±Ù ¹æ½Ä »ç¿ë
4.3.4 AttributeConverter¸¦ ÀÌ¿ëÇÑ ¹ë·ù ¸ÅÇΠó¸®
4.3.5 ¹ë·ù Ä÷º¼Ç: º°µµ Å×ÀÌºí ¸ÅÇÎ
4.3.6 ¹ë·ù Ä÷º¼Ç: ÇÑ °³ Ä®·³ ¸ÅÇÎ
4.3.7 ¹ë·ù¸¦ ÀÌ¿ëÇÑ ID ¸ÅÇÎ
4.3.8 º°µµ Å×ÀÌºí¿¡ ÀúÀåÇÏ´Â ¹ë·ù ¸ÅÇÎ
4.3.9 ¹ë·ù Ä÷º¼ÇÀ» @Entity·Î ¸ÅÇÎÇϱâ
4.3.10 ID ÂüÁ¶¿Í Á¶ÀÎ Å×À̺íÀ» ÀÌ¿ëÇÑ ´Ü¹æÇâ M-N ¸ÅÇÎ
4.4 ¾Ö±×¸®°ÅÆ® ·Îµù Àü·«
4.5 ¾Ö±×¸®°ÅÆ®ÀÇ ¿µ¼Ó¼º ÀüÆÄ
4.6 ½Äº°ÀÚ »ý¼º ±â´É
4.7 µµ¸ÞÀÎ ±¸Çö°ú DIP
Chapter 5. ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¸¦ ÀÌ¿ëÇÑ Á¶È¸ ±â´É
5.1 ½ÃÀÛ¿¡ ¾Õ¼
5.2 °Ë»öÀ» À§ÇÑ ½ºÆå
5.3 ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¸¦ ÀÌ¿ëÇÑ ½ºÆå ±¸Çö
5.4 ¸®Æ÷ÁöÅ͸®/DAO¿¡¼ ½ºÆå »ç¿ëÇϱâ
5.5 ½ºÆå Á¶ÇÕ
5.6 Á¤·Ä ÁöÁ¤Çϱâ
5.7 ÆäÀÌ¡ ó¸®Çϱâ
5.8 ½ºÆå Á¶ÇÕÀ» À§ÇÑ ½ºÆå ºô´õ Ŭ·¡½º
5.9 µ¿Àû ÀνºÅϽº »ý¼º
5.10 ÇÏÀ̹ö³×ÀÌÆ® @Subselect »ç¿ë
Chapter 6. ÀÀ¿ë ¼ºñ½º¿Í Ç¥Çö ¿µ¿ª
6.1 Ç¥Çö ¿µ¿ª°ú ÀÀ¿ë ¿µ¿ª
6.2 ÀÀ¿ë ¼ºñ½ºÀÇ ¿ªÇÒ
6.2.1 µµ¸ÞÀÎ ·ÎÁ÷ ³ÖÁö ¾Ê±â
6.3 ÀÀ¿ë ¼ºñ½ºÀÇ ±¸Çö
6.3.1 ÀÀ¿ë ¼ºñ½ºÀÇ Å©±â
6.3.2 ÀÀ¿ë ¼ºñ½ºÀÇ ÀÎÅÍÆäÀ̽º¿Í Ŭ·¡½º
6.3.3 ¸Þ¼µå ÆĶó¹ÌÅÍ¿Í °ª ¸®ÅÏ
6.3.4 Ç¥Çö ¿µ¿ª¿¡ ÀÇÁ¸ÇÏÁö ¾Ê±â
6.3.5 Æ®·£Àè¼Ç ó¸®
6.4 Ç¥Çö ¿µ¿ª
6.5 °ª °ËÁõ
6.6 ±ÇÇÑ °Ë»ç
6.7 Á¶È¸ Àü¿ë ±â´É°ú ÀÀ¿ë ¼ºñ½º
Chpater 7. µµ¸ÞÀÎ ¼ºñ½º
7.1 ¿©·¯ ¾Ö±×¸®°ÅÆ®°¡ ÇÊ¿äÇÑ ±â´É
7.2 µµ¸ÞÀÎ ¼ºñ½º
7.2.1 °è»ê ·ÎÁ÷°ú µµ¸ÞÀÎ ¼ºñ½º
7.2.2 ¿ÜºÎ ½Ã½ºÅÛ ¿¬µ¿°ú µµ¸ÞÀÎ ¼ºñ½º
7.2.3 µµ¸ÞÀÎ ¼ºñ½ºÀÇ ÆÐÅ°Áö À§Ä¡
7.2.4 µµ¸ÞÀÎ ¼ºñ½ºÀÇ ÀÎÅÍÆäÀ̽º¿Í Ŭ·¡½º
Chapter 8. ¾Ö±×¸®°ÅÆ® Æ®·£Àè¼Ç °ü¸®
8.1 ¾Ö±×¸®°ÅÆ®¿Í Æ®·£Àè¼Ç
8.2 ¼±Á¡ Àá±Ý
8.2.1 ¼±Á¡ Àá±Ý°ú ±³Âø »óÅÂ
8.3 ºñ¼±Á¡ Àá±Ý
8.3.1 °Á¦ ¹öÀü Áõ°¡
8.4 ¿ÀÇÁ¶óÀÎ ¼±Á¡ Àá±Ý
8.4.1 ¿ÀÇÁ¶óÀÎ ¼±Á¡ Àá±ÝÀ» À§ÇÑ LockManager ÀÎÅÍÆäÀ̽º¿Í °ü·Ã Ŭ·¡½º
8.4.2 DB¸¦ ÀÌ¿ëÇÑ LockManager ±¸Çö
Chapter 9. µµ¸ÞÀÎ ¸ðµ¨°ú ¹Ù¿îµðµå ÄÁÅؽºÆ®
9.1 µµ¸ÞÀÎ ¸ðµ¨°ú °æ°è
9.2 ¹Ù¿îµðµå ÄÁÅؽºÆ®
9.3 ¹Ù¿îµðµå ÄÁÅؽºÆ® ±¸Çö
9.4 ¹Ù¿îµðµå ÄÁÅؽºÆ® °£ ÅëÇÕ
9.5 ¹Ù¿îµðµå ÄÁÅؽºÆ® °£ °ü°è
9.6 ÄÁÅؽºÆ® ¸Ê
Chapter 10. À̺¥Æ®
10.1 ½Ã½ºÅÛ °£ °°áÇÕ ¹®Á¦
10.2 À̺¥Æ® °³¿ä
10.2.1 À̺¥Æ® °ü·Ã ±¸¼º¿ä¼Ò
10.2.2 À̺¥Æ®ÀÇ ±¸¼º
10.2.3 À̺¥Æ® ¿ëµµ
10.2.4 À̺¥Æ® ÀåÁ¡
10.3 À̺¥Æ®, Çڵ鷯, µð½ºÆÐó ±¸Çö
10.3.1 À̺¥Æ® Ŭ·¡½º
10.3.2 Events Ŭ·¡½º¿Í ApplicationEventPublisher
10.3.3 À̺¥Æ® ¹ß»ý°ú À̺¥Æ® Çڵ鷯
10.3.4 È帧 Á¤¸®
10.4 µ¿±â À̺¥Æ® ó¸® ¹®Á¦
10.5 ºñµ¿±â À̺¥Æ® ó¸®
10.5.1 ·ÎÄà Çڵ鷯 ºñµ¿±â ½ÇÇà
10.5.2 ¸Þ½Ã¡ ½Ã½ºÅÛÀ» ÀÌ¿ëÇÑ ºñµ¿±â ±¸Çö
10.5.3 À̺¥Æ® ÀúÀå¼Ò¸¦ ÀÌ¿ëÇÑ ºñµ¿±â ó¸®
10.6 À̺¥Æ® Àû¿ë ½Ã Ãß°¡ °í·Á »çÇ×
10.6.1 À̺¥Æ® ó¸®¿Í DB Æ®·£Àè¼Ç °í·Á
Chapter 11. CQRS
11.1 ´ÜÀÏ ¸ðµ¨ÀÇ ´ÜÁ¡
11.2 CQRS
11.2.1 À¥°ú CQRS
11.2.2 CQRS Àå´ÜÁ¡