°³¶ËÀ̳׿¡¼­ ÆÇ¸ÅµÈ "µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö Implementing Domain-Driven Design"     Á¤°¡ 45,000¿ø   Æò±ÕÇÒÀΰ¡
Ãß°¡ °Ë»ö Çϱâ
ÃÑ 3°³ÀÇ µµ¼­°¡ ÀÖ½À´Ï´Ù.
µµ¼­À̹ÌÁö µµ¼­¸í »óÅ °¡°Ý ÆǸÅÀÚ

µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö Implementing Domain-Driven Design
»õÃ¥ 
40,500¿ø

¹«·á¹è¼Û
»õÃ¥Àü¹®Á¡
ÆǸŵµ¼­(360,129±Ç)

µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö Implementing Domain-Driven Design
»õÃ¥ 
40,500¿ø

¹«·á¹è¼Û
ºÏ´Ù¿ò
ÆǸŵµ¼­(7,384±Ç)

µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö Implementing Domain-Driven Design
»õÃ¥ 
40,500¿ø

¹«·á¹è¼Û
Ã¥°¡¹æ
ÆǸŵµ¼­(328,774±Ç)
 

»ó¼¼Á¤º¸

1Àå DDD¸¦ ½ÃÀÛÇϸç
³ªµµ DDD ÇÒ ¼ö ÀÖÀ»±î?
³»°¡ ¿Ö DDD¸¦ ÇØ¾ß ÇÏÁö?
__ºñÁî´Ï½º °¡Ä¡¸¦ Á¦°øÇÏ´Â °ÍÀº ¾î·Á¿ï ¼ö ÀÖ´Ù
__DDD°¡ ÇØÁÙ ¼ö ÀÖ´Â ÀÏ
__µµ¸ÞÀÎÀÇ º¹À⼺°ú ¾¾¸§Çϱâ
¹«±â·ÂÁõ°ú ±â¾ï »ó½Ç
__¿Ö ¹«±â·ÂÁõÀÌ ÀϾ´Â°¡
__¹«±â·ÂÁõÀÌ ´ç½ÅÀÇ ¸ðµ¨¿¡ ÇÑ ÀÏÀ» º¸¶ó.
DDD´Â ¾î¶»°Ô Çϴ°¡?
__À¯ºñÄõÅͽºÁö¸¸ º¸ÆíÀûÀÌÁö´Â ¾Ê´Ù.
DDD¸¦ »ç¿ëÇÏ´Â µ¥¼­ ¿À´Â ºñÁî´Ï½º °¡Ä¡
__1. Á¶Á÷ÀÌ ±× µµ¸ÞÀο¡ À¯¿ëÇÑ ¸ðµ¨À» ¾ò´Â´Ù.
__2. Á¤±³ÇÏ°í Á¤È®ÇÏ°Ô ºñÁî´Ï½º¸¦ Á¤ÀÇÇÏ°í ÀÌÇØÇÑ´Ù.
__3. µµ¸ÞÀÎ Àü¹®°¡°¡ ¼ÒÇÁÆ®¿þ¾î ¼³°è¿¡ ±â¿©ÇÑ´Ù.
__4. »ç¿ëÀÚ °æÇèÀÌ °³¼±µÈ´Ù.
__5. ¼ø¼öÇÑ ¸ðµ¨ ÁÖº¯¿¡ ¸íÈ®ÇÑ °æ°è°¡ »ý±ä´Ù.
__6. ¿£ÅÍÇÁ¶óÀÌÁî ¾ÆÅ°ÅØóÀÇ ±¸¼ºÀÌ ÁÁ¾ÆÁø´Ù.
__7. ¾ÖÀÚÀÏÇÏ°í, ¹Ýº¹ÀûÀÌ°í, Áö¼ÓÀûÀÎ ¸ðµ¨¸µÀÌ »ç¿ëµÈ´Ù.
__8. Àü·«ÀûÀÎ µ¿½Ã¿¡ Àü¼úÀûÀÎ »õ·Î¿î µµ±¸°¡ Àû¿ëµÈ´Ù.
DDD Àû¿ëÀÇ ³­°ü
__µµ¸ÞÀÎ ¸ðµ¨¸µÀÇ ÇÕ¸®È­
__DDD´Â ¹«°ÌÁö ¾Ê´Ù
¼Ò¼³°ú ÇÑ ¹Ù±¸´ÏÀÇ Çö½Ç
¸¶¹«¸®

2Àå µµ¸ÞÀÎ, ¼­ºêµµ¸ÞÀÎ, ¹Ù¿îµðµå ÄÁÅؽºÆ®
Å« ±×¸²
__¼­ºêµµ¸ÞÀΰú ¹Ù¿îµðµå ÄÁÅؽºÆ®ÀÇ È°¿ë
__ÇÙ½É µµ¸ÞÀο¡ ÁýÁßÇϱâ
¿Ö Àü·«Àû ¼³°è°¡ ¾öû³ª°Ô ÇʼöÀûÀΰ¡
Çö½ÇÀÇ µµ¸ÞÀΰú ¼­ºêµµ¸ÞÀÎ
¹Ù¿îµðµå ÄÁÅؽºÆ® ÀÌÇØÇϱâ
__¸ðµ¨ ±× ÀÌ»óÀ» À§ÇØ
__¹Ù¿îµðµå ÄÁÅؽºÆ®ÀÇ Å©±â
__±â¼úÀû ÄÄÆ÷³ÍÆ®·Î Á¤·ÄÇϱâ
»ùÇà ÄÁÅؽºÆ®
__Çù¾÷ ÄÁÅؽºÆ®
__½Äº°ÀÚ¿Í ¾×¼¼½º ÄÁÅؽºÆ®
__¾ÖÀÚÀÏ ÇÁ·ÎÁ§Æ® °ü¸® ÄÁÅؽºÆ®
¸¶¹«¸®

3Àå ÄÁÅؽºÆ® ¸Ê
ÄÁÅؽºÆ® ¸ÊÀÌ ÇʼöÀûÀÎ ÀÌÀ¯
__ÄÁÅؽºÆ® ¸Ê ±×¸®±â
__ÇÁ·ÎÁ§Æ®¿Í Á¶Á÷ °ü°è
__¼¼ °¡Áö ÄÁÅؽºÆ®¸¦ ¸ÅÇÎÇϱâ
__Çù¾÷ ÄÁÅؽºÆ®
__¾ÖÀÚÀÏ ÇÁ·ÎÁ§Æ® °ü¸® ÄÁÅؽºÆ®
__½Äº°ÀÚ¿Í ¾×¼¼½º ÄÁÅؽºÆ®ÀÇ ÅëÇÕ
__Çù¾÷ ÄÁÅؽºÆ®¿Í ÅëÇÕ
¸¶¹«¸®

4Àå ¾ÆÅ°ÅØó
¼º°øÇÑ CIO¿ÍÀÇ ÀÎÅͺä
°èÃþ
__ÀÇÁ¸¼º ¿ªÇà ¿ø¸®
Çí»ç°í³¯ ¶Ç´Â Æ÷Æ®¿Í ¾î´ðÅÍ
¼­ºñ½º ÁöÇâ
REST: Ç¥Çö »óÅ Àü¼Û(Representational State Transfer)
__½ºÅ×ÆÇ Æ¿ÄÚÇÁÀÇ Âü¿©
__¾ÆÅ°ÅØó ½ºÅ¸ÀÏÀ¸·Î¼­ÀÇ REST
__·¹½ºÆ®Ç® HTTP ¼­¹öÀÇ ÁÖ¿ä Ư¡
__·¹½ºÆ®Ç® HTTP Ŭ¶óÀ̾ðÆ®ÀÇ ÁÖ¿ä Ư¡
__REST¿Í DDD
__¿Ö RESTÀΰ¡?
Ä¿¸Çµå-Äõ¸® Ã¥ÀÓ ºÐ¸®
__CQRSÀÇ ¿µ¿ª »ìÆ캸±â
__°á±¹Àº ÀÏ°ü¼ºÀÌ À¯ÁöµÇ´Â Äõ¸® ¸ðµ¨ ´Ù·ç±â
À̺¥Æ® ÁÖµµ ¾ÆÅ°ÅØó
__ÆÄÀÌÇÁ¿Í ÇÊÅÍ
__Àå±â ½ÇÇà ÇÁ·Î¼¼½º(»ç°¡¶ó ºÒ¸®´Â)
__À̺¥Æ® ¼Ò½Ì
µ¥ÀÌÅÍ Æк긯°ú ±×¸®µå ±â¹Ý ºÐ»ê ÄÄÇ»ÆÃ
__¿þ½º Àª¸®¾Ï½º ±â°í
__µ¥ÀÌÅÍ º¹Á¦
__À̺¥Æ® ÁÖµµ Æк긯°ú µµ¸ÞÀÎ À̺¥Æ®
__Áö¼ÓÀû Äõ¸®
__ºÐ»ê ó¸®
¸¶¹«¸®

5Àå ¿£ÅÍƼ
¿£ÅÍƼ¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯
°íÀ¯ ½Äº°ÀÚ
__»ç¿ëÀÚ°¡ ½Äº°ÀÚ¸¦ Á¦°øÇÑ´Ù
__¾ÖÇø®ÄÉÀ̼ÇÀÌ ½Äº°ÀÚ¸¦ »ý¼ºÇÑ´Ù
__¿µ¼Ó¼º ¸ÞÄ¿´ÏÁòÀÌ ½Äº°ÀÚ¸¦ »ý¼ºÇÑ´Ù.
__¶Ç ÇϳªÀÇ ¹Ù¿îµðµå ÄÁÅؽºÆ®°¡ ½Äº°ÀÚ¸¦ ÇÒ´çÇÑ´Ù
__½Äº°ÀÚ »ý¼ºÀÇ ½ÃÁ¡ÀÌ ¹®Á¦°¡ µÉ ¶§
__´ë¸® ½Äº°ÀÚ
__½Äº°ÀÚ ¾ÈÁ¤¼º
¿£ÅÍƼÀÇ ¹ß°ß°ú ±×µéÀÇ ³»ºÎÀûÀΠƯ¼º
__¿£ÅÍƼ¿Í ¼Ó¼ºÀ» ¾Ë¾Æ³»±â
__Digging for Essential Behavior
__¿ªÇÒ°ú Ã¥ÀÓ
__»ý¼º
__À¯È¿¼º °Ë»ç
¸¶¹«¸®

6 °ª °´Ã¼
°ªÀÇ Æ¯Â¡
__ÃøÁ¤, ¼ö·®È­, ¼³¸í
__ºÒº¯¼º
__°³³äÀû Àüü
__´ëü¼º
__°ª µî°¡¼º
__ºÎÀÛ¿ëÀÌ ¾ø´Â ÇàÀ§
¹Ì´Ï¸Ö¸®ÁòÀ¸·Î ÅëÇÕÇϱâ
°ªÀ¸·Î Ç¥ÇöµÇ´Â Ç¥ÁØ Å¸ÀÔ
°ª °´Ã¼ÀÇ Å×½ºÆ®
±¸Çö
°ª °´Ã¼ÀÇ ÀúÀå
__µ¥ÀÌÅÍ ¸ðµ¨ ´©¼öÀÇ ºÎÁ¤Àû ¿µÇâÀ» °ÅºÎÇ϶ó
__ORM°ú ´ÜÀÏ °ª °´Ã¼
__ORM°ú ÇÑ ¿­·Î Á÷·ÄÈ­µÇ´Â ¿©·¯ °ª
__ORM°ú µ¥ÀÌÅͺ£À̽º ¿£ÅÍƼ·Î Áö¿øµÇ´Â ¿©·¯ °ª
__ORM°ú Á¶ÀÎ Å×À̺í·Î Áö¿øµÇ´Â ¿©·¯ °ª
__ORM°ú »óÅ·μ­ÀÇ ¿­°ÅÇü °´Ã¼
¸¶¹«¸®

7 ¼­ºñ½º
µµ¸ÞÀÎ ¼­ºñ½º¶õ ¹«¾ùÀΰ¡(ÇÏÁö¸¸ ¸ÕÀú µµ¸ÞÀÎ ¼­ºñ½º°¡ ¾Æ´Ñ °ÍÀº ¹«¾ùÀΰ¡)
¼­ºñ½º°¡ ÇÊ¿äÇÑÁö È®ÀÎÇÏÀÚ
µµ¸ÞÀο¡¼­ ¼­ºñ½º¸¦ ¸ðµ¨¸µÇϱâ
__ºÐ¸®µÈ ÀÎÅÍÆäÀ̽º°¡ ²À ÇÊ¿äÇÒ±î
__°è»ê ÇÁ·Î¼¼½º
__º¯È¯ ¼­ºñ½º
__µµ¸ÞÀÎ ¼­ºñ½ºÀÇ ¹Ì´Ï °èÃþ »ç¿ëÇϱâ
¼­ºñ½ºÀÇ Å×½ºÆ®
¸¶¹«¸®

8 µµ¸ÞÀÎ À̺¥Æ®
¾ðÁ¦ ±×¸®°í ¿Ö µµ¸ÞÀÎ À̺¥Æ®¸¦ »ç¿ëÇÒ±î?
À̺¥Æ®ÀÇ ¸ðµ¨¸µ
__¾Ö±×¸®°ÔÀÕÀÇ Æ¯¼º°ú ÇÔ²²Çϱâ
__½Äº°ÀÚ
µµ¸ÞÀÎ ¸ðµ¨¿¡¼­ À̺¥Æ®¸¦ ¹ßÇàÇϱâ
__¹ßÇàÀÚ
__±¸µ¶ÀÚ
´º½º¸¦ ¿ø°Ý ¹Ù¿îµðµå ÄÁÅؽºÆ®·Î ÀüÆÄÇϱâ
__¸Þ½Ã¡ ÀÎÇÁ¶óÀÇ ÀÏ°ü¼º
__ÀÚÄ¡ ¼­ºñ½º¿Í ½Ã½ºÅÛ
__Áö¿¬½Ã°£ Çã¿ë
À̺¥Æ® ÀúÀå¼Ò
ÀúÀåµÈ À̺¥Æ®ÀÇ Àü´ÞÀ» À§ÇÑ ¾ÆÅ°ÅØó ½ºÅ¸ÀÏ
__·¹½ºÆ®Ç® ¸®¼Ò½º·Î½á ¾Ë¸²À» ¹ßÇàÇϱâ
__¸Þ½Ã¡ ¹Ìµé¿þ¾î¸¦ ÅëÇÑ ¾Ë¸² ¹ßÇà
±¸Çö
__NotificationLogÀÇ ¹ßÇà
__¸Þ½ÃÁö¿¡ ±â¹ÝÇÑ ¾Ë¸² ¹ßÇàÇϱâ
¸¶¹«¸®

9 ¸ðµâ
¸ðµâ·Î ¼³°èÇϱâ
±âº» ¸ðµâ ¸í¸í ±ÔÄ¢
¸ðµ¨À» À§ÇÑ ¸ðµâ ¸í¸í ±ÔÄ¢
¾ÖÀÚÀÏ ÇÁ·ÎÁ§Æ® °ü¸® ÄÁÅؽºÆ®ÀÇ ¸ðµâ
´Ù¸¥ °èÃþ ¼ÓÀÇ ¸ðµâ
¹Ù¿îµðµå ÄÁÅؽºÆ®º¸´Ù ¸ðµâ
¸¶¹«¸®

10 ¾Ö±×¸®°ÔÀÕ
½ºÅ©·³ ÇÙ½É µµ¸ÞÀο¡¼­ ¾Ö±×¸®°ÔÀÕ »ç¿ëÇϱâ
__ù ¹ø° ½Ãµµ: Å« Ŭ·¯½ºÅÍÀÇ ¾Ö±×¸®°ÔÀÕ
__µÎ ¹ø° ½Ãµµ: ´Ù¼öÀÇ ¾Ö±×¸®°ÔÀÕ
±ÔÄ¢: ÁøÂ¥ °íÁ¤ÀÚ¸¦ ÀÏ°ü¼º °æ°è ¾È¿¡ ¸ðµ¨¸µÇ϶ó
±ÔÄ¢: ÀÛÀº ¾Ö±×¸®°ÔÀÕÀ¸·Î ¼³°èÇ϶ó
__À¯½ºÄÉÀ̽º¸¦ ÀüºÎ ¹ÏÁö´Â ¸»¶ó
±ÔÄ¢: ID·Î ´Ù¸¥ ¾Ö±×¸®°ÔÀÕÀ» ÂüÁ¶Ç϶ó
__¾Ö±×¸®°ÔÀÕÀÌ ID ÂüÁ¶¸¦ ÅëÇØ ¼­·Î ÇÔ²² µ¿ÀÛÇϵµ·Ï Çغ¸ÀÚ
__¸ðµ¨ Ž»ö
__È®À强°ú ºÐ»ê
±ÔÄ¢: °æ°èÀÇ ¹Û¿¡¼± °á°úÀû ÀÏ°ü¼ºÀ» »ç¿ëÇ϶ó
__´©°¡ ÇØ¾ß ÇÏ´Â ÀÏÀÎÁö È®ÀÎÇÏÀÚ
±ÔÄ¢À» ¾î°Ü¾ß ÇÏ´Â ÀÌÀ¯
__ù ¹ø° ÀÌÀ¯: »ç¿ëÀÚ ÀÎÅÍÆäÀ̽ºÀÇ ÆíÀÇ
__µÎ ¹ø° ÀÌÀ¯: ±â¼úÀû ¸ÞÄ¿´ÏÁòÀÇ ºÎÁ·
__¼¼ ¹ø° ÀÌÀ¯: ±Û·Î¹ú Æ®·£Àè¼Ç
__³× ¹ø° ÀÌÀ¯: Äõ¸® ¼º´É
__±ÔÄ¢À» ÁöÅ°±â
¹ß°ßÀ» ÅëÇØ ÅëÂû ¾ò±â
__¼³°è¸¦ ´Ù½Ã ÇÑ ¹ø »ý°¢Çغ¸ÀÚ
__¾Ö±×¸®°ÔÀÕ ºñ¿ëÀÇ ¿¹Ãø
__ÀϹÝÀûÀÎ »ç¿ë ½Ã³ª¸®¿À
__¸Þ¸ð¸® ¼Òºñ
__¶Ç ´Ù¸¥ ¼³°è ´ë¾È »ìÆ캸±â
__°á°úÀû ÀÏ°ü¼ºÀÇ ±¸Çö
__ÀÌ´Â ÆÀ¿øÀÌ ÇÒ ÀÏÀΰ¡?
__°áÁ¤ÀÇ ½Ã°£
±¸Çö
__°íÀ¯ ID¿Í ·çÆ® ¿£ÅÍƼ¸¦ »ý¼ºÇ϶ó
__°ª °´Ã¼ ÆÄÆ®¸¦ ¼±È£Ç϶ó
__'µ¥¸ÞÅ׸£ÀÇ ¹ýÄ¢'°ú '¹¯Áö ¸»°í ½ÃÄѶó'¸¦ »ç¿ëÇϱâ
__³«°üÀû µ¿½Ã¼º
__ÀÇÁ¸¼º ÁÖÀÔÀ» ÇÇÇ϶ó
¸¶¹«¸®

11 ÆÑÅ丮
µµ¸ÞÀÎ ¸ðµ¨ ³»ÀÇ ÆÑÅ丮
¾Ö±×¸®°ÔÀÕ ·çÆ®»óÀÇ ÆÑÅ丮 ¸Þ¼Òµå
__CalendarEntry ÀνºÅϽº »ý¼ºÇϱâ
__Discussion ÀνºÅϽº »ý¼ºÇϱâ
¼­ºñ½ºÀÇ ÆÑÅ丮
¸¶¹«¸®

12 ¸®ÆÄÁöÅ丮
Ä÷º¼Ç ÁöÇâ ¸®ÆÄÁöÅ丮
__ÇÏÀ̹ö³×ÀÌÆ® ±¸Çö
__ž¸µÅ© ±¸Çö¿¡ ´ëÇÑ °í·Á
¿µ¼Ó¼º ÁöÇâÀÇ ¸®ÆÄÁöÅ丮
__ÄÚÈ÷¾î·±½º ±¸Çö
__¸ù°íDB ±¸Çö
Ãß°¡ÀûÀÎ Çൿ
Æ®·£Àè¼ÇÀÇ °ü¸®
__°æ°í
ŸÀÔ °èÃþ±¸Á¶
¸®ÆÄÁöÅ丮 ´ë µ¥ÀÌÅÍ ¾×¼¼½º °´Ã¼
¸®ÆÄÁöÅ丮ÀÇ Å×½ºÆ®
__Àθ޸𸮠±¸ÇöÀ¸·Î Å×½ºÆ®Çϱâ
¸¶¹«¸®

13 ¹Ù¿îµðµå ÄÁÅؽºÆ®ÀÇ ÅëÇÕ
ÅëÇÕÀÇ ±âº»
__ºÐ»ê ½Ã½ºÅÛÀº ±Ùº»ÀûÀ¸·Î ´Ù¸£´Ù
__½Ã½ºÅÛ °æ°è¿¡ °ÉÄ£ Á¤º¸ÀÇ ±³È¯
·¹½ºÆ®Ç® ¸®¼Ò½º¸¦ »ç¿ëÇÑ ÅëÇÕ
__·¹½ºÆ®Ç® ¸®¼Ò½ºÀÇ ±¸Çö
__ºÎÆÐ ¹æÁö °èÃþÀ» ÅëÇÑ REST Ŭ¶óÀ̾ðÆ®ÀÇ ±¸Çö
¸Þ½Ã¡À» »ç¿ëÇÑ ÅëÇÕ
__Á¦Ç° ¼ÒÀ¯ÀÚ¿Í ÆÀ ¸â¹öÀÇ Á¤º¸¸¦ °è¼ÓÇؼ­ Á¦°ø¹Þ´Â °Í
__´ç½ÅÀº Ã¥ÀÓÀ» °¨´çÇÒ ¼ö Àִ°¡
__Àå±â ½ÇÇà ÇÁ·Î¼¼½º¿Í Ã¥ÀÓÀÇ È¸ÇÇ
__ÇÁ·Î¼¼½º »óÅ ¸Ó½Å°ú ŸÀӾƿô Æ®·¡Ä¿
__Á» ´õ º¹ÀâÇÑ ÇÁ·Î¼¼½º ¼³°èÇϱâ
__¸Þ½Ã¡À̳ª ½Ã½ºÅÛÀ» È°¿ëÇÒ ¼ö ¾øÀ» ¶§
¸¶¹«¸®

14 ¾ÖÇø®ÄÉÀ̼Ç
»ç¿ëÀÚ ÀÎÅÍÆäÀ̽º
__µµ¸ÞÀÎ °´Ã¼ÀÇ ·»´õ¸µ
__¾Ö±×¸®°ÔÀÕ ÀνºÅϽº·ÎºÎÅÍ µ¥ÀÌÅÍ Àü¼Û °´Ã¼¸¦ ·»´õ¸µÇϱâ
__¾Ö±×¸®°ÔÀÕ ³»ºÎ »óŸ¦ ¹ßÇàÇϱâ À§ÇØ ÁßÀçÀÚ¸¦ »ç¿ëÇÏÀÚ
__µµ¸ÞÀÎ ÆäÀÌ·Îµå °´Ã¼·ÎºÎÅÍ ¾Ö±×¸®°ÔÀÕ ÀνºÅϽº¸¦ ·»´õ¸µÇ϶ó.
__¾Ö±×¸®°ÔÀÕ ÀνºÅϽºÀÇ »óÅ ǥÇö
__À¯½ºÄÉÀ̽º ÃÖÀû ¸®ÆÄÁöÅ丮 Äõ¸®
__´Ù¼öÀÇ °³º° Ŭ¶óÀ̾ðÆ®¸¦ ó¸®Çϱâ
__º¯È¯(Rendition) ¾î´ðÅÍ¿Í »ç¿ëÀÚ ÆíÁýÀÇ Ã³¸®
¾ÖÇø®ÄÉÀÌ¼Ç ¼­ºñ½º
__¾ÖÇø®ÄÉÀÌ¼Ç ¼­ºñ½º ¿¹Á¦
__°áÇÕÀÌ ºÐ¸®µÈ ¼­ºñ½º Ãâ·Â
¿©·¯ ¹Ù¿îµðµå ÄÁÅؽºÆ® ¹­±â
ÀÎÇÁ¶ó
¿£ÅÍÇÁ¶óÀÌÁî ÄÄÆ÷³ÍÆ® ÄÁÅ×À̳Ê
¸¶¹«¸®

15 ¾Ö±×¸®°ÔÀÕ°ú À̺¥Æ® ¼Ò½Ì: A+ES
¾ÖÇø®ÄÉÀÌ¼Ç ¼­ºñ½ºÀÇ ³»ºÎ
Ä¿¸Çµå Çڵ鷯
¶÷´Ù ±¸¹®
µ¿½Ã¼º Á¦¾î
A+ESÀÇ ±¸Á¶Àû ÀÚÀ¯
¼º´É
À̺¥Æ® ÀúÀå¼ÒÀÇ ±¸Çö
°ü°èÇüÀ¸·Î ÀúÀåÇϱâ
ºí·Ó(BLOB)À¸·Î ÀúÀåÇϱâ
ÁýÁßµÈ ¾Ö±×¸®°ÔÀÕ
Àб⠸𵨠Åõ¿µ
¾Ö±×¸®°ÔÀÕ ¼³°è¿Í ÇÔ²² »ç¿ëÇϱâ
À̺¥Æ® °­È­
Áö¿ø µµ±¸¿Í ÆÐÅÏ
__À̺¥Æ® Á÷·ÄÈ­±â
__À̺¥Æ® ºÒº¯¼º
__°ª °´Ã¼
°è¾à »ý¼º
´ÜÀ§ Å×½ºÆ®¿Í ¸í¼¼
ÇÔ¼öÇü ¾ð¾î¿¡¼­ÀÇ À̺¥Æ® ¼Ò½Ì
Âü°í ¹®Çå

¡Ú ÀÌ Ã¥¿¡¼­ ´Ù·ç´Â ³»¿ë ¡Ú

¡á ºü¸¥ °¡Ä¡ âÃâÀ» À§ÇÑ ¿Ã¹Ù¸¥ DDD ½ÃÀÛ ¹æ¹ý
¡á Çí»ç°í³¯(hexagonal)À̳ª SOA, REST, CQRS, À̺¥Æ® Áß½É, Æк긯/±×¸®µå ±â¹Ý µî ´Ù¾çÇÑ ¾ÆÅ°ÅØó¿¡ ¸ÂÃá DDD »ç¿ë ¹æ¹ý
¡á ¿£ÅÍƼ¸¦ ¿Ã¹Ù¸£°Ô ¼³°èÇÏ°í Àû¿ëÇÏ´Â ¹æ¹ý°ú °ª °´Ã¼¸¦ ´ë½Å »ç¿ëÇØ¾ß ÇÏ´Â ½ÃÁ¡
¡á DDDÀÇ »õ·Ó°í °­·ÂÇÑ ±â¹ýÀÎ µµ¸ÞÀÎ À̺¥Æ®¿¡ °üÇÑ ¿ÏÀüÇÑ ÀÌÇØ
¡á ORMÀ̳ª NoSQLÀ» ºñ·ÔÇÑ ´Ù¾çÇÑ µ¥ÀÌÅͺ£À̽º¿¡ ¸ÂÃç ¸®ÆÄÁöÅ丮(repository)¸¦ ¼³°èÇÏ´Â ¹æ¹ý

¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú

1Àå: DDD¸¦ ½ÃÀÛÇϸç

1Àå¿¡¼± DDD¸¦ »ç¿ëÇÒ ¶§ ¾òÀ» ¼ö ÀÖ´Â ÀÌÀÍ°ú DDD¸¦ ´Þ¼ºÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù. ¿©·¯ºÐÀÇ ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÏ°í ¿©·¯ºÐÀÇ ÆÀÀÌ º¹Àâµµ·Î °í¹ÎÇÏ°í ÀÖÀ» ¶§ DDD°¡ ¼öÇàÇÒ ¼ö ÀÖ´Â ¿ªÇÒÀº ¹«¾ùÀÎÁö ¹è¿ì°Ô µÈ´Ù. ¿©·¯ºÐÀÇ ÇÁ·ÎÁ§Æ®°¡ DDD¿¡ ÅõÀÚÇصµ ÁÁÀ»Áö Æò°¡ÇÒ ¹æ¹ýÀ» ã°Ô µÈ´Ù. ¿©·¯ºÐÀÌ ÈçÈ÷ °í·ÁÇÒ ¼ö ÀÖ´Â DDDÀÇ ´ë¾ÈÀÌ ¹«¾ùÀÌ°í, ¿Ö ±×·± ´ë¾ÈÀÌ ÈçÈ÷ ¹®Á¦¸¦ ÀÏÀ¸Å°°ï ÇÏ´ÂÁö °í¹ÎÇÏ°Ô µÈ´Ù. 1Àå¿¡¼± ¿©·¯ºÐÀÇ ÇÁ·ÎÁ§Æ®°¡ ù ¹ßÀ» ³»µó±â À§ÇÑ DDDÀÇ ±â¹ÝÀ» ´Ù·ç¸ç, ÀÌ´Â ¿©·¯ºÐÀÇ °ü¸®ÀÚ¿Í µµ¸ÞÀÎ Àü¹®°¡¿Í ±â¼ú ÆÀ ±¸¼º¿øÀ» ¼³µæÇÏ´Â µ¥ µµ¿òÀÌ µÉÁöµµ ¸ð¸¥´Ù. ÀÌ´Â ¿©·¯ºÐÀÌ ¼º°ø¿¡ À̸£´Â ¹æ¹ý¿¡ °üÇÑ Áö½ÄÀ¸·Î ¹«ÀåÇØ DDD¸¦ »ç¿ëÇÒ ¶§ °Þ°Ô µÉ µµÀüÀ» ¸¶ÁÖÇÒ ¼ö ÀÖµµ·Ï ÇØÁÙ °ÍÀÌ´Ù.

½ÇÁ¦ Çö½Ç¿¡¼­ °Þ°Ô µÇ´Â DDDÀÇ µµÀüÀ» ¸¶ÁÖÇÏ°í ÀÖ´Â °¡»óÀÇ È¸»ç¿Í ÆÀ¿¡ °üÇÑ ÄÉÀ̽º ½ºÅ͵𵵠ÇÔ²² ´Ù·é´Ù. Çõ½ÅÀûÀÎ ¸ÖƼÅ׳ÍÆ®(multitenant) ȯ°æÀÇ ¼­ºñ½º·Î¼­ÀÇ ¼ÒÇÁÆ®¿þ¾î(SaaS) ±â¹Ý Á¦Ç°À» ¸¸µé°íÀÚ ÇÏ´Â ÀÌ È¸»ç´Â DDD¸¦ Àû¿ëÇϸç ÈçÈ÷ °Þ°Ô µÇ´Â ¸¹Àº ½Ç¼ö¸¦ °æÇèÇÏÁö¸¸, ÆÀÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ°í ÇÁ·ÎÁ§Æ®¸¦ À̾ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â Áß¿äÇÑ ¹ß°ßÀ» ÇÏ°Ô µÈ´Ù. ÀÌ ÇÁ·ÎÁ§Æ®¿¡¼± ½ºÅ©·³ ±â¹Ý ÇÁ·ÎÁ§Æ® °ü¸® ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϸç, ´ëºÎºÐÀÇ °³¹ßÀÚ°¡ °ü·ÃµÅ ÀÖ´Ù. ÀÌ ÄÉÀ̽º ½ºÅ͵ð´Â À̾îÁö´Â Àå¿¡¼­µµ °è¼ÓÇؼ­ È°¿ëµÈ´Ù. °¢°¢ÀÇ Àü·«Àû ÆÐÅÏ°ú Àü¼úÀû ÆÐÅÏÀ» ÆÀÀÇ ½Ã°¢¿¡¼­ ÇнÀÇÏ°Ô µÇ¸ç, ÆÀÀÇ ½Ç¼ö»Ó¸¸ ¾Æ´Ï¶ó ÆÀÀÌ ¼º°øÀûÀÎ DDD ±¸ÇöÀ» À§ÇØ ¼º¼÷Çسª°¡´Â °úÁ¤À» ÇÔ²² ´Ù·é´Ù.

2Àå: µµ¸ÞÀÎ, ¼­ºêµµ¸ÞÀÎ, ¹Ù¿îµðµå ÄÁÅؽºÆ®
µµ¸ÞÀÎ(Domain)À̳ª ¼­ºêµµ¸ÞÀÎ(Subdomain)À̳ª ÇÙ½É µµ¸ÞÀÎ(Core Domain)Àº ¹«½¼ ÀǹÌÀÌ°í, À̸¦ »ç¿ëÇØ¾ß ÇÏ´Â ÀÌÀ¯¿Í »ç¿ëÇÏ´Â ¹æ¹ýÀº ¹«¾ùÀϱî? ¿ì¸®ÀÇ ÄÉÀ̽º ½ºÅ͵𿡼­ ÇÁ·ÎÁ§Æ® ÆÀÀÌ ÀúÁö¸£´Â ½Ç¼ö¸¦ ÅëÇØ ÀÌ Áú¹®ÀÇ ´äÀ» ã¾Æº»´Ù. ÀÌ ÆÀÀº ù ¹ø° DDD ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇϸç ÀڽŵéÀÌ ÀÏÇÏ°í ÀÖ´Â ¼­ºêµµ¸ÞÀΰú ¹Ù¿îµðµå ÄÁÅؽºÆ®¿Í Á¤È®ÇÑ À¯ºñÄõÅͽº ¾ð¾î¸¦ ÀÌÇØÇÏ´Â µ¥ ½ÇÆÐÇÑ´Ù. »ç½Ç, À̵éÀº Àü·«Àû ¼³°è¿¡ ÀüÇô Àͼ÷ÇÏÁö ¾ÊÀ¸¸ç, ´Ü¼øÈ÷ Àü¼ú ¼öÁØ¿¡¼­ÀÇ ÀÌÀÍÀ» À§ÇØ Àü¼úÀû ÆÐÅϸ¸À» È°¿ëÇÏ°í ÀÖ¾ú´Ù. ÀÌ ¶§¹®¿¡ Ãʱ⠵µ¸ÞÀÎ ¸ðµ¨ ¼³°è¿¡ ¹®Á¦°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ´ÙÇེ·´°Ôµµ À̵éÀº Èñ¸ÁÀ» ãÀ» ¼ö ¾ø´Â ´Ë¿¡ ºüÁö±â¿¡ ¾Õ¼­ ¹«¾ùÀÌ À߸øµÆ¾ú´ÂÁö ã°Ô µÈ´Ù.

¿©±â¿¡´Â ¹Ù¿îµðµå ÄÁÅؽºÆ®¸¦ Àû¿ëÇØ ¸ðµ¨À» ¿Ã¹Ù¸£°Ô ±¸ºÐÇÏ°í ºÐ¸®ÇÏ´Â µ¥ °üÇÑ Áß¿äÇÑ ¸Þ½ÃÁö°¡ ´ã°Ü ÀÖ´Ù. ÈçÈ÷ ºüÁö´Â À߸øµÈ ÆÐÅÏÀÇ Àû¿ë¿¡ °üÇØ ´Ù·ç¸ç, ÆÐÅÏÀ» È¿À²ÀûÀ¸·Î ±¸ÇöÇÏ´Â ¹æ¹ý¿¡ °üÇØ Ãæ°íÇÑ´Ù. À̸¦ ÅëÇØ À̵éÀÇ ¼¼ ¹ø° ¹Ù¿îµðµå ÄÁÅؽºÆ®¿Í »õ·Î¿î ÇÙ½É µµ¸ÞÀΰú Ã¥¿¡¼­ »ç¿ëµÇ´Â ÁÖ¿ä ¿¹Á¦¿¡¼­ ¿Ã¹Ù¸£°Ô ¸ðµ¨¸µ °³³äÀ» ºÐ¸®Çس»°Ô µÈ´Ù.

±â¼úÀûÀÎ Ãø¸é¿¡¼­¸¸ DDD¸¦ Àû¿ëÇÏ¸ç °íÅëÀ» ´À²¼´ø µ¶ÀÚ¶ó¸é 2ÀåÀÇ ³»¿ë¿¡ Å©°Ô °ø°¨ÇÏ°Ô µÉ °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ¾ÆÁ÷ Àü·«Àû ¼³°èÀ» Á¦´ë·Î ½ÃÀÛÇÏÁö ¾Ê¾Ò´Ù¸é, ¼º°øÀûÀÎ ¿©Á¤À» ½ÃÀÛÇÏ´Â ¿Ã¹Ù¸¥ ¹æÇâÀ» ã°Ô µÈ´Ù.

3Àå: ÄÁÅؽºÆ® ¸Ê
ÄÁÅؽºÆ® ¸Ê(Context Map)Àº ÆÀÀÌ ºñÁî´Ï½º µµ¸ÞÀΰú ¿ä·Î ¸ðµ¨ »çÀÌÀÇ °æ°è¿Í ÅëÇÕÀÌ ÁøÇàµÇ´Â ÇüŸ¦ ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â °­·ÂÇÑ µµ±¸´Ù. À̸¦ À§ÇÑ ±â¹ýÀº ´Ü¼øÈ÷ ½Ã½ºÅÛ ¾ÆÅ°ÅØóÀÇ ´ÙÀ̾î±×·¥À» ±×¸®´Â µ¥ ±¹ÇѵÇÁö ¾Ê´Â´Ù. ÀÌ´Â ¿£ÅÍÇÁ¶óÀÌÁî ³»ºÎÀÇ ¿©·¯ ¹Ù¿îµðµå ÄÁÅؽºÆ®¿Í ÇϳªÀÇ ¸ðµ¨¿¡¼­ ´Ù¸¥ ¸ðµ¨·Î °´Ã¼¸¦ ¸ÅÇÎÇÏ´Â µ¥ »ç¿ëµÇ´Â ÆÐÅÏ »çÀÌÀÇ °ü°è¸¦ ÀÌÇØÇÏ´Â ¹®Á¦´Ù. º¹ÀâÇÑ ºñÁî´Ï½º¸¦ °®°í ÀÖ´Â ¿£ÅÍÇÁ¶óÀÌÁî¿¡¼­ ¹Ù¿îµðµå ÄÁÅؽºÆ®¸¦ Á¦´ë·Î ±¸¼ºÇϱâ À§Çؼ± ÀÌ µµ±¸ÀÇ »ç¿ëÀÌ Áß¿äÇÏ´Ù. 3Àå¿¡¼± ÇÁ·ÎÁ§Æ® ÆÀÀÌ Ã³À½À¸·Î »ý¼ºÇß´ø ¹Ù¿îµðµå ÄÁÅؽºÆ®(2Àå¿¡¼­ ´Ù·ç´Â)ÀÇ ¹®Á¦¸¦ ÀÌÇØÇϱâ À§ÇØ ÄÁÅؽºÆ® ¸ÅÇÎÀ» Àû¿ëÇÏ´Â °úÁ¤À» »ìÆ캻´Ù. ±×¸®°í »õ·Î¿î ÇÙ½É µµ¸ÞÀÎÀ» ¼³°èÇÏ°í ±¸ÇöÇØ¾ß ÇÏ´Â ÆÀÀÌ ±× °á°ú·Î ¸¸µé¾îÁø ±ò²ûÇÑ µÎ ¹Ù¿îµðµå ÄÁÅؽºÆ®¸¦ È°¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.

4Àå: ¾ÆÅ°ÅØó
¿ì¸® ¸ðµÎ´Â ÀÌ¹Ì °èÃþ ¾ÆÅ°ÅØó(Layers Architecture)¿¡ °üÇØ ¾Ë°í ÀÖ´Ù. ÇÏÁö¸¸ °èÃþÀÌ Á¤¸» DDD ¾ÖÇø®ÄÉÀ̼ÇÀ» ´Ù·ç´Â À¯ÀÏÇÑ ¹æ¹ýÀϱî? ±×·¸Áö ¾Ê´Ù¸é ¾î¶² ´Ù¸¥ ¾ÆÅ°ÅØó°¡ ÀÖÀ»±î? ¿©±â¼± Çí»ç°í³¯((Hexagonal),(Æ÷Æ®¿Í ¾î´ðÅÍ(Ports and Adaptors)), ¼­ºñ½º ÁöÇâ, REST, CQRS, À̺¥Æ® Áß½É(ÆÄÀÌÇÁ¿Í ÇÊÅÍ(Pipes and Filters), Àå±â ½ÇÇà ÇÁ·Î¼¼½º(Long-Running Process)³ª »ç°¡(Saga), À̺¥Æ® ¼Ò½Ì(Event Sourcing)), µ¥ÀÌÅÍ Æк긯/±×¸®µå(Data Fabric/Grid) ±â¹Ý µîÀÇ ¿©·¯ ¾ÆÅ°ÅØó ¾È¿¡¼­ DDD¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» °í¹ÎÇÑ´Ù. ÇÁ·ÎÁ§Æ® ÆÀÀº ÀÌ·± ¿©·¯ ¾ÆÅ°ÅØó ½ºÅ¸ÀÏÀ» Àû¿ëÇÏ°Ô µÈ´Ù.

5Àå: ¿£ÅÍƼ
ù ¹ø°·Î ´Ù·ê DDD Àü¼ú ÆÐÅÏÀº ¿£ÅÍƼ(Entity)´Ù. ÇÁ·ÎÁ§Æ® ÆÀÀº ¿£ÅÍƼ¿¡ ³Ê¹« Å©°Ô ÀÇÁ¸Çؼ­, °ª °´Ã¼(Value Object)·Î ¼³°èÇØ¾ß ÇÏ´Â Á߿伺À» °£°úÇÏ°Ô µÈ´Ù. ÀÌ·Î ÀÎÇØ µ¥ÀÌÅͺ£À̽º¿Í ¿µ¼Ó¼º ÇÁ·¹ÀÓ¿öÅ©ÀÇ °úµµÇÑ °£¼·À¸·Î ¿£ÅÍƼ¸¦ ³²¿ëÇÏ´Â ¹®Á¦¿¡ °üÇØ ³íÀÇÇÏ°Ô µÈ´Ù. ¿£ÅÍƼ¸¦ »ç¿ëÇÏ´Â ¿Ã¹Ù¸¥ ¹æ¹ý¿¡ Àͼ÷ÇØÁø ´ÙÀ½¿¡´Â ¿£ÅÍƼ¸¦ ¼³°èÇÏ´Â ¹æ¹ý¿¡ °üÇÑ ´Ù¾çÇÑ ¿¹Á¦¸¦ ´Ù·ç°Ô µÈ´Ù. À¯ºñÄõÅͽº ¾ð¾î¸¦ ¿£ÅÍƼ·Î Ç¥ÇöÇÏ´Â ¹æ¹ýÀº ¹«¾ùÀϱî? ¾î¶»°Ô ¿£ÅÍƼ¸¦ Å×½ºÆ®ÇÏ°í ±¸ÇöÇÏ°í ÀúÀåÇÒ±î? 5Àå¿¡¼± ÀÌ·± ¹®Á¦¸¦ Çϳª¾¿ ´Ù·ï°¡¸ç °¡À̵带 Á¦½ÃÇÑ´Ù.

6Àå: °ª °´Ã¼
ÇÁ·ÎÁ§Æ® ÆÀÀº Ãʱ⿡ °ª °´Ã¼¸¦ »ç¿ëÇÑ Áß¿äÇÑ ¸ðµ¨¸µ ±âȸ¸¦ ³õÃÆ´Ù. ÀÌ ÆÀÀº ¿©·¯ °ü·Ã ¼Ó¼ºÀ» ºÒº¯ÇÏ´Â ¹­À½À¸·Î ¸ðÀ¸´Â µ¥ ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇßÀ» ¼ø°£¿¡, ¿£ÅÍƼÀÇ °³º°Àû ¼Ó¼º¿¡¸¸ ³Ê¹« ÁýÁßÇß¾ú´Ù. 6Àå¿¡¼± ¿£ÅÍƼ°¡ ¾Æ´Ñ °ªÀ» »ç¿ëÇØ¾ß ÇÏ´Â ½Ã±â¸¦ °áÁ¤Çϱâ À§ÇØ ¸ðµ¨ÀÇ Æ¯¼ºÀ» ½Äº°ÇÏ´Â ¹æ¹ýÀ» ³íÀÇÇϸ鼭 °ª °´Ã¼ÀÇ ¼³°è¸¦ ¿©·¯ ¹æÇâ¿¡¼­ »ìÆ캻´Ù. 6Àå¿¡¼± ÅëÇÕÀ» ÁøÇàÇÒ ¶§ °ªÀÌ ¼öÇàÇÏ°Ô µÇ´Â ¿ªÇÒÀ̳ª Ç¥ÁØ Å¸ÀÓÀÇ ¸ðµ¨¸µ°ú °°Àº ´Ù¸¥ Áß¿äÇÑ ÁÖÁ¦µµ ÇÔ²² ´Ù·é´Ù. À̾ µµ¸ÞÀÎ Á᫐ Å×½ºÆ®¸¦ ¼³°èÇÏ´Â ¹æ¹ý, °ª ŸÀÔÀ» ±¸ÇöÇÏ´Â ¹æ¹ý, ¾Ö±×¸®°ÔÀÕÀÇ ÀϺηΠÀ̵éÀ» ÀúÀåÇØ¾ß ÇÒ ¶§ ¿µ¼Ó¼º ¸ÞÄ¿´ÏÁòÀ¸·Î ÀÎÇÑ ³ª»Û ¿µÇâÀ» ÇÇÇÏ´Â ¹æ¹ý µîµµ À̾߱âÇÑ´Ù.

7Àå: ¼­ºñ½º
7Àå¿¡¼± ÇϳªÀÇ °³³äÀ» µµ¸ÞÀÎ ¸ðµ¨ ¾ÈÀÇ Àß Â¥¿©Áø ¹«»óÅ ¼­ºñ½º(Service)·Î ¸ðµ¨¸µÇØ¾ß ÇÏ´Â ½ÃÁ¡ÀÌ ¾ðÁ¦ÀÎÁö º¸¿©ÁØ´Ù. ¿©·¯ºÐÀº ¿£ÅÍƼ³ª °ª °´Ã¼°¡ ¾Æ´Ñ ¼­ºñ½º¸¦ ¼³°èÇØ¾ß ÇÏ´Â ½ÃÁ¡°ú, ºñÁî´Ï½º µµ¸ÞÀÎ ·ÎÁ÷À» ó¸®Çϰųª ±â¼úÀû ÅëÇÕÀ» À§ÇØ µµ¸ÞÀÎ ¼­ºñ½º¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» È®ÀÎÇÏ°Ô µÈ´Ù. ¼­ºñ½º¸¦ »ç¿ëÇÏ´Â ½ÃÁ¡°ú ¼­ºñ½º¸¦ ¼³°è ÇÏ´Â ¹æ¹ý¿¡ °üÇÑ »ç·Ê·Î¼­ ÇÁ·ÎÁ§Æ® ÆÀÀÌ ³»¸° °áÁ¤À» »ìÆ캻´Ù.

8Àå: µµ¸ÞÀÎ À̺¥Æ®
¿¡¸¯ ¿¡¹Ý½º°¡ ±×ÀÇ Ã¥À» ÃâÆÇÇß´ø ½ÃÁ¡¿¡¼± µµ¸ÞÀÎ À̺¥Æ®(Domain Event)°¡ DDDÀÇ ÇÑ ºÎºÐÀ¸·Î ¼Ò°³µÇ±â ÀÌÀüÀ̾ú´Ù. ¸ðµ¨¿¡¼­ ¹ßÇàÇÏ´Â µµ¸ÞÀÎ À̺¥Æ®°¡ ¿Ö ±×·¸°Ô °­·ÂÇÑÁö¿Í, ºñÁî´Ï½º ¼­ºñ½ºÀÇ ÅëÇÕ°ú ÀÚµ¿È­¸¦ Áö¿øÇÏ´Â °¡¿îµ¥ µµ¸ÞÀÎ À̺¥Æ®¸¦ »ç¿ëÇÏ´Â ¿©·¯ ¹æ¹ýÀ» ¹è¿ì°Ô µÈ´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀº ±âº»ÀûÀ¸·Î ¿©·¯ Á¾·ùÀÇ ±â¼úÀû À̺¥Æ®¸¦ º¸³»°í ó¸®ÇÏÁö¸¸, µµ¸ÞÀÎ À̺¥Æ®¸¸ÀÇ Æ¯Â¡ÀÌ ¹«¾ùÀÎÁö ±¸ºÐÇØ ³íÀÇÇÑ´Ù. ¼³°è¿Í ±¸ÇöÀ» À§ÇÑ °¡À̵带 Á¦°øÇϸç, ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¿É¼Ç°ú ±×¿¡ µû¸¥ Àå´ÜÁ¡À» ¾Ë·ÁÁØ´Ù. À̾ ¹ßÇà-±¸µ¶(Publish-Subscribe) ¸ÞÄ¿´ÏÁòÀ» ¸¸µå´Â ¹æ¹ý, ¿£ÅÍÇÁ¶óÀÌÁ ¾Æ¿ì¸£¸ç ±¸µ¶ÀÚ¸¦ ÅëÇÕÇÏ´Â ¹æ¹ý, À̺¥Æ® ÀúÀå¼Ò¸¦ »ý¼ºÇÏ°í °ü¸®ÇÏ´Â ¹æ¹ý, ÈçÈ÷ °Þ°Ô µÇ´Â ¸Þ½Ã¡ ¹®Á¦¿¡ ´ëóÇÏ´Â ¹æ¹ý µîÀ» ³íÀÇÇÑ´Ù. ¶ÇÇÑ ÇÁ·ÎÁ§Æ® ÆÀÀÌ À̸¦ ¿Ã¹Ù¸£°Ô Àû¿ëÇÏ´Â °úÁ¤°ú °¢ ¹æ¹ý¸¸ÀÇ ÀåÁ¡À» Á¶¸íÇÑ´Ù.

9Àå: ¸ðµâ
¸ðµ¨ °´Ã¼¸¦ ´Ù¸¥ ÄÁÅ×À̳ʿ¡ ¼ÓÇÑ °´Ã¼¿ÍÀÇ °áÇÕµµ´Â Á¦ÇÑÇÏ´Â °¡¿îµ¥ ¿Ã¹Ù¸¥ Å©±âÀÇ ÄÁÅ×À̳ʿ¡ ´ã¾Æ³»´Â ¹æ¹ýÀº ¹«¾ùÀϱî? ÀÌ·± ÄÁÅ×À̳ʰ¡ À¯ºñÄõÅͽº ¾ð¾î¸¦ ¹Ý¿µÇϵµ·Ï ÇÏ·Á¸é ¾î¶»°Ô À̸§À» ºÙ¿©¾ß ÇÒ±î? ÆÐÅ°Áö³ª ³×ÀÓ½ºÆäÀ̽º¸¦ ³Ñ¾î¼­, ¾ð¾î¿Í ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ Á¦°øÇÏ´Â Á» ´õ ÃÖ½ÅÀÇ ¸ðµâÈ­ ±â´É(OSGi, Á÷¼Ò(Jigsaw)¿Í °°Àº)Àº ¾î¶»°Ô È°¿ëÇÒ ¼ö ÀÖÀ»±î? ¿©±â¼± ÇÁ·ÎÁ§Æ® ÆÀÀÌ ¿©·¯ ÇÁ·ÎÁ§Æ®¿¡ °ÉÃÄ ¸ðµâÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù.

10Àå: ¾Ö±×¸®°ÔÀÕ
¾Ö±×¸®°ÔÀÕÀº ¾Æ¸¶µµ DDDÀÇ Àü¼ú µµ±¸ °¡¿îµ¥ °¡Àå ÀÌÇصµ°¡ ³·Àº µµ±¸ÀÏ °ÍÀÌ´Ù. ±×·¸Áö¸¸ ¸î °¡ÁöÀÇ °æÇè ¹ýÄ¢(rules of thumb)À» Àû¿ëÇÏ¸é ¾Ö±×¸®°ÔÀÕÀ» ´õ °£´ÜÇÏ°í ºü¸£°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº ÀÛÀº °´Ã¼ Ŭ·¯½ºÅÍÀÇ ÁÖº¯À¸·Î ÀÏ°ü¼º °æ°è¸¦ ±¸ÃàÇϸ鼭 º¹ÀâµµÀÇ º®À» ºÎ¼ö°í ¾Ö±×¸®°ÔÀÕÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» ÇнÀÇÏ°Ô µÈ´Ù. ÇÁ·ÎÁ§Æ® ÆÀÀº ±×´ÙÁö Áß¿äÇÏÁö ¾ÊÀº ºÎºÐ¿¡ ³Ê¹« Å« °ü½ÉÀ» µÖ¼­ ¸î °¡Áö À߸øµÈ ¹æÇâÀ» ¼±ÅÃÇÏ´Â ½Ç¼ö¸¦ ÀúÁö¸£°Ô µÈ´Ù. ¿ì¸° ÆÀÀÇ ÀÌÅÍ·¹À̼ÇÀ» µû¶ó°¡¸é¼­ ¸ðµ¨¸µ °úÁ¤¿¡¼­ °Þ°Ô µÇ´Â ¹®Á¦¿Í ÆÀÀÌ ÀúÁö¸¥ À߸øÀ̳ª ±× ¹ÛÀÇ °áÁ¤»çÇ×À» ºÐ¼®ÇÑ´Ù. ÆÀÀº ³ë·ÂÀ» ±â¿ïÀ̸鼭 ÇÙ½É µµ¸ÞÀο¡ ´ëÇØ ´õ ±íÀÌ ÀÌÇØÇÒ ¼ö ÀÖ°Ô µÆ´Ù. ¿ì¸° ÆÀÀÌ Æ®·£Àè¼Ç°ú °á°úÀû ÀÏ°ü¼º(eventual consistency)À» ¿Ã¹Ù¸£°Ô Àû¿ëÇØ ºÐ»ê ó¸® ȯ°æ¿¡¼­ È®À强°ú ¼º´ÉÀ» ´õ ³ôÀÎ ¸ðµ¨À» ¼³°èÇϸ鼭 ÀڽŵéÀÌ ÀúÁö¸¥ ½Ç¼ö¸¦ °íÃÄ°¡´Â °úÁ¤À» »ìÆ캻´Ù.

11Àå: ÆÑÅ丮
ÀÌ¹Ì [GoFÀÇ µðÀÚÀÎ ÆÐÅÏ]¿¡¼± ÆÑÅ丮¿¡ °üÇÑ ÃæºÐÇÑ À̾߱⸦ Çߴµ¥µµ ¿Ö ÀÌ Ã¥¿¡¼­ ´Ù½Ã À̸¦ ¾ð±ÞÇÏ·Á°í ÇÒ±î? 11Àå¿¡¼± ÆÑÅ丮¿¡ °üÇÑ ¼¼·Î¿î À̾߱⸦ ÇÏ·Á´Â °Ô ¾Æ´Ï´Ù. ±×º¸´Ù´Â ÆÑÅ丮°¡ ¾îµð¿¡ À§Ä¡ÇØ¾ß ÇÏ´ÂÁö ÀÌÇØÇÏ´Â µ¥ ÁýÁßÇÑ´Ù. ¹°·Ð DDDÀÇ ¼³Á¤¿¡ ¸ÂÃç Á¦ ¿ªÇÒÀ» ÇÏ´Â ÆÑÅ丮¸¦ ¼³°èÇÏ´Â ¸î °¡Áö ÆÁµµ ÇÔ²² ¼Ò°³ÇÑ´Ù. ÇÁ·ÎÁ§Æ® ÆÀÀÌ Å¬¶óÀ̾ðÆ® ÀÎÅÍÆäÀ̽º¸¦ ´Ü¼øÈ­ÇÏ°í ¸ðµ¨ÀÇ »ç¿ëÀÚ°¡ ¸ÖƼÅ׳ÍÆ®(multitenant) ȯ°æ¿¡¼­ Àç¾ÓÀûÀÎ ¹ö±×¸¦ À¯¹ßÇÏÁö ¾Êµµ·Ï ¸·À¸¸é¼­ ÆÑÅ丮¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» È®ÀÎÇÏÀÚ.

12Àå: ¸®ÆÄÁöÅ丮
¸®ÆÄÁöÅ丮(Repository)´Â ´ÜÁö ´Ü¼øÇÑ µ¥ÀÌÅÍ Á¢±Ù °´Ã¼(Data Access Object, DAO)°¡ ¾Æ´Ñ°¡? ¿Ö ¿ì¸° µ¥ÀÌÅͺ£À̽º°¡ ¾Æ´Ñ Ä÷º¼ÇÀ» Èä³»±â À§ÇØ ¸®ÆÄÁöÅ丮¸¦ ¼³°èÇÏ´Â ¹æ¾ÈÀ» °í·ÁÇØ¾ß ÇÒ±î? ±×¸®µå ±â¹ÝÀÇ ÄÚÈ÷·±½º(Coherence) ºÐ»ê ij½Ã¸¦ Áö¿øÇϰųª NoSQL Å°-°ª ÀúÀå¼Ò¸¦ »ç¿ëÇÏ´Â, ORMÀ» »ç¿ëÇÑ ¸®ÆÄÁöÅ丮¸¦ ¼³°èÇÏ´Â ¹æ¹ýÀ» ÇнÀÇÏÀÚ. ÀÌ·± ºÎ°¡ÀûÀÎ ¿µ¼Ó¼º ¸ÞÄ¿´ÏÁòÀº ¸®ÆÄÁöÅ丮¶ó´Â ±¸¼º ¿ä¼Ò¿¡¼­ ¿À´Â °­·ÂÇÔ°ú ´ÙÀç´Ù´ÉÇÔÀ¸·Î ÀÎÇØ ÇÁ·ÎÁ§Æ® ÆÀÀ» Æí¾ÈÇÏ°Ô ÇØÁØ´Ù.

13Àå: ¹Ù¿îµðµå ÄÁÅؽºÆ®ÀÇ ÅëÇÕ
Áö±Ý±îÁö ¿©·¯ºÐÀº ÄÁÅؽºÆ® ¸ÅÇÎÀÇ »óÀ§ ¼öÁØ ±â¹ýÀ» ÀÌÇØÇß°í Àü¼ú ÆÐÅÏÀ» È°¿ëÇÒ ¼ö ÀÖ°Ô µÆÁö¸¸, ¸ðµ¨ÀÇ ÅëÇÕÀ» ½ÇÁ¦·Î ±¸ÇöÇÒ ¶§´Â ¾î¶² ÀÏÀÌ ÀϾ±î? DDD¿¡¼± ¾î¶² ÅëÇÕ ¿É¼ÇÀÌ ÁÖ¾îÁú±î? 13Àå¿¡¼± ÄÁÅؽºÆ® ¸ÅÇÎÀ» ÅëÇØ ¸ðµ¨ÀÇ ÅëÇÕÀ» ±¸ÇöÇÏ´Â ¸î °¡Áö ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù. ÇÁ·ÎÁ§Æ® ÆÀÀÌ ÇÙ½É µµ¸ÞÀΰú ±×¸¦ Áö¿øÇÏ´Â ¹Ù¿îµðµå ÄÁÅؽºÆ®¸¦ ÅëÇÕÇÏ´Â ¹æ¹ý¿¡ ±â¹ÝÇØ ÅëÇÕÀÇ ÁöħÀ» Á¦°øÇÑ´Ù.

14Àå: ¾ÖÇø®ÄÉÀ̼Ç
¿©·¯ºÐÀº ÇÙ½É µµ¸ÞÀÎÀÇ À¯ºñÄõÅͽº ¾ð¾î¿¡ µû¶ó ¸ðµ¨À» ¼³°èÇß´Ù. ¶ÇÇÑ ±× »ç¿ë¹ý°ú Á¤È®¼º¿¡ µû¶ó ÃæºÐÇÑ Å×½ºÆ®¸¦ ¸¸µé¾ú°í, ½ÇÁ¦·Î µ¿ÀÛÇÔÀ» È®ÀÎÇß´Ù. ÇÏÁö¸¸ ¿©·¯ºÐÀÇ ÆÀ¿¡ ¼ÓÇÑ ´Ù¸¥ ±¸¼º¿øÀÌ ÇØ´ç ¸ðµ¨À» µÑ·¯½Ñ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ´Ù¸¥ ¿µ¿ªÀ» ¼³°èÇÒ ¶§´Â ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ±×µéÀº ¸ðµ¨°ú »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º »çÀÌ¿¡¼­ µ¥ÀÌÅ͸¦ Àü´ÞÇϱâ À§ÇØ DTO¸¦ »ç¿ëÇØ¾ß ÇÒ±î? ¾ÖÇø®ÄÉÀÌ¼Ç ¼­ºñ½º(Application Service)¿Í ÀÎÇÁ¶ó´Â ¾î¶»°Ô µ¿ÀÛÇÒ±î? 14Àå¿¡¼± Àͼ÷ÇØÁ³À» ÇÁ·ÎÁ§Æ®¿¡¼­ ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¿É¼ÇÀ» »ìÆ캸¸ç ÀÌ ¹®Á¦¸¦ ´Ù·é´Ù.

ºÎ·Ï A: ¾Ö±×¸®°ÔÀÕ°ú À̺¥Æ® ¼Ò½Ì: A+ES
À̺¥Æ® ¼Ò½Ì(Event Sourcing)Àº ¾Ö±×¸®°ÔÀÕÀ» ÀúÀåÇϱâ À§ÇÑ Áß¿äÇÑ ±â¼úÀû Á¢±Ù¹ýÀ̸ç, À̺¥Æ® Á᫐ ¾ÆÅ°ÅØó(Event-Driven Architecture)¸¦ ¸¸µå´Â ±â¹ÝÀ» Á¦°øÇÑ´Ù. ¾Ö±×¸®°ÔÀÕÀÌ »ý¼ºµÈ ÈÄ ¹ß»ýÇÏ´Â ÀÏ·ÃÀÇ À̺¥Æ®¸¦ ÅëÇØ ¾Ö±×¸®°ÔÀÕÀÇ Àüü »óŸ¦ Ç¥ÇöÇϱâ À§ÇØ À̺¥Æ® ¼Ò½ÌÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̺¥Æ®¸¦ ¹ß»ý ¼ø¼­¸¦ ÁöÄÑ ´Ù½Ã Àç»ýÇÔÀ¸·Î½á ¾Ö±×¸®°ÔÀÕÀÇ »óŸ¦ À籸ÃàÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ À̺¥Æ®´Â ¿µ¼Ó¼ºÀ» ´Ü¼øÈ­ÇÏ°í º¹ÀâÇÑ ÇàÀ§ ¼Ó¼º¿¡¼­ °³³äÀ» Æ÷ÂøÇϵµ·Ï ÇØÁÖ´Â °¡¿îµ¥, À̺¥Æ® ÀÚü°¡ ¿©·¯ºÐ ÀÚ½ÅÀÇ ½Ã½ºÅÛ°ú ¿ÜºÎ ½Ã½ºÅÛ¿¡ Áö´ëÇÑ ¿µÇâÀ» ¹ÌÄ¡´Â ¿ä¼Ò°¡ µÈ´Ù.
 

¼­Æòº¸±â

´ÜÇົ BEST µµ¼­

³ªÀǼîÇÎ

  • Ä«µå³»¿ªÁ¶È¸
  • ¸¸Á·µµº¸±â
  • ÆǸÅÀÚº¸±â

ÃÖ±Ùº»»óÇ°

Àå¹Ù±¸´Ï

TOP