°³¶ËÀ̳׿¡¼ ÆÇ¸ÅµÈ "µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö Implementing Domain-Driven Design" Á¤°¡ 45,000¿ø Æò±ÕÇÒÀΰ¡
|
|
|
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)¸¦ ¸¸µå´Â ±â¹ÝÀ» Á¦°øÇÑ´Ù. ¾Ö±×¸®°ÔÀÕÀÌ »ý¼ºµÈ ÈÄ ¹ß»ýÇÏ´Â ÀÏ·ÃÀÇ À̺¥Æ®¸¦ ÅëÇØ ¾Ö±×¸®°ÔÀÕÀÇ Àüü »óŸ¦ Ç¥ÇöÇϱâ À§ÇØ À̺¥Æ® ¼Ò½ÌÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̺¥Æ®¸¦ ¹ß»ý ¼ø¼¸¦ ÁöÄÑ ´Ù½Ã Àç»ýÇÔÀ¸·Î½á ¾Ö±×¸®°ÔÀÕÀÇ »óŸ¦ À籸ÃàÇÒ ¼ö ÀÖ´Ù. µû¶ó¼ À̺¥Æ®´Â ¿µ¼Ó¼ºÀ» ´Ü¼øÈÇÏ°í º¹ÀâÇÑ ÇàÀ§ ¼Ó¼º¿¡¼ °³³äÀ» Æ÷ÂøÇϵµ·Ï ÇØÁÖ´Â °¡¿îµ¥, À̺¥Æ® ÀÚü°¡ ¿©·¯ºÐ ÀÚ½ÅÀÇ ½Ã½ºÅÛ°ú ¿ÜºÎ ½Ã½ºÅÛ¿¡ Áö´ëÇÑ ¿µÇâÀ» ¹ÌÄ¡´Â ¿ä¼Ò°¡ µÈ´Ù.
|
|
|
|
|