 |
|
 |
µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö(Implementing Domain-Driven Design)
|
|
|
¿¡ÀÌÄÜ ¼ÒÇÁÆ®¿þ¾î ¾ÆÅ°ÅØÃ³ ½Ã¸®Áî1
¤Ó ¹Ý ¹ö³í, À±Ã¢¼®, Ȳ¿¹Áø
¤Ó
¿¡ÀÌÄÜÃâÆÇ
¤Ó
Implementing Domain-Driven Design
|
|
|
|

- Á¦ÈÞ¸ô ÁÖ¹® ½Ã °í°´º¸»ó, ÀϺΠÀ̺¥Æ® Âü¿© ¹× ÁõÁ¤Ç° ÁõÁ¤, ÇÏ·ç/´çÀÏ ¹è¼Û¿¡¼ Á¦¿ÜµÇ¹Ç·Î Âü°í ¹Ù¶ø´Ï´Ù.
-
-
-
[µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö]Àº µµ¸ÞÀÎ ÁÖµµ ¼³°è¸¦ ÅëÇØ ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÏ´Â ¹æ¹ýÀ» dzºÎÇÑ ±¸Çö ¿¹Á¦¸¦ ÅëÇØ ±¸Ã¼ÀûÀ¸·Î ¼³¸íÇÑ´Ù. ½ºÇÁ¸µ, REST, NoSQL µîÀ» Ȱ¿ëÇØ µµ¸ÞÀÎ ¸ðµ¨À» Áß½ÉÀ¸·Î ¿Ã¹Ù¸¥ ¼ÒÇÁÆ®¿þ¾î ±¸Á¶¸¦ ¸¸µé¾î°¡´Â °úÁ¤À» º¸¿©ÁÖ¸ç, CQRS¿Í À̺¥Æ® ¼Ò½Ì µîÀ» Ȱ¿ëÇØ µµ¸ÞÀÎ ÁÖµµ ¼³°è¸¦ ±¸ÇöÇÏ´Â ½Ç¿ëÀû ¹æ¹ýÀ» ´Ù·é´Ù. ±×µ¿¾È µµ¸ÞÀÎ ÁÖµµ ¼³°è¸¦ ÇÁ·ÎÁ§Æ®¿¡ Àû¿ëÇÏ´Â °úÁ¤¿¡¼ ¾î·Á¿òÀ» °Þ¾ú´ø °³¹ßÀÚ¿¡°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
-
-
¡Ú ÀÌ Ã¥¿¡ ½ñ¾ÆÁø Âù»ç ¡Ú
"¹Ý(Vaughn)Àº ÀÌ Ã¥À» ÅëÇØ ¹®ÇåÀû Ãø¸é¿¡¼ µµ¸ÞÀÎ ÁÖµµ ¼³°è Ä¿¹Â´ÏƼ¿¡ ±â¿©ÇßÀ» »Ó¸¸ ¾Æ´Ï¶ó, ´õ ³ÐÀº ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÅ°ÅØÃ³ ºÐ¾ß¿¡ Áß¿äÇÑ ±â¿©¸¦ ÇÏ°Ô µÆ´Ù. ¿¹¸¦ µé¾î ¹ÝÀº ¾ÆÅ°ÅØÃ³¿Í ¸®ÆÄÁöÅ丮¿¡ °üÇÑ ÇÙ½É Àå¿¡¼ ¿¡¸¯ ¿¡¹Ý½º(Eric Evans)ÀÇ ±â³äºñÀûÀΠåÀÌ Ã³À½ ¹ß°£µÈ ÀÌÈÄÀÇ 10³â°£ ¶°¿À¸¥ ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ¿©·¯ ¾ÆÅ°ÅØÃ³ ½ºÅ¸Àϰú ¿µ¼Ó¼º ±â¼ú(SOA, REST, NoSQL µ¥ÀÌÅÍ ±×¸®µå µî)ÀÌ ¾î¶»°Ô DDD¿Í ÇÔ²² »ç¿ëµÉ ¼ö ÀÖ´ÂÁö º¸¿©ÁØ´Ù. ¶ÇÇÑ ¹ÝÀº ¼ö¸¹Àº ¿¹Á¦¿Í ¼ö½Ê ³â µ¿¾ÈÀÇ ½ÇÁ¦ °æÇè¿¡¼ ¿ì·¯³ª¿Â ±ÍÁßÇÑ ÅëÂû·ÂÀ» ¹ÙÅÁÀ¸·Î DDDÀÇ °¡·Î¸·Àº À庮(¿£ÅÍÆ¼(entity), °ª °´Ã¼(value object), ¾Ö±×¸®°ÔÀÕ(aggregate), ¼ºñ½º(service), À̺¥Æ®(event), ÆÑÅ丮(factory), ¸®ÆÄÁöÅ丮(repository) µîÀÇ ±¸Çö)À» ¶Ù¾î³Ñ´Â ¿Ã¹Ù¸¥ ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù. ÇѸ¶µð·Î ³ª´Â ÀÌ Ã¥À» ºóÆ´¾øÀÌ ¿Ïº®ÇÏ´Ù°í ¸»ÇÏ°í ½Í´Ù. ½º½º·Î¸¦ ¹ßÀü½Ã۰íÀÚ Çϸç ÇöÀç ¼±ÅÃÇÒ ¼ö ÀÖ´Â ÃÖ¼±ÀÇ Àü¹®Àû »ç·Ê¸¦ ±â¹ÝÀ¸·Î µµ¸ÞÀÎ ÁÖµµ ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³°èÇÏ°í °³¹ßÇϰíÀÚ ÇÏ´Â ¸ðµç ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ¿¡°Ô, Áö³ ¼ö½Ê ³â »çÀÌ¿¡ DDD Ä¿¹Â´ÏƼ¿Í ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÅ°ÅØÃ³ Ä¿¹Â´ÏƼ°¡ ¾î·Æ°Ô ¾òÀº º¸¼®°°ÀÌ ±ÍÁßÇÑ Áö½ÄÀ» ÀüÇØÁÙ °ÍÀÌ´Ù."
-·£µð ½ºÅÂÆ÷µå(Randy Stafford) / ¿À¶óŬ ÄÚÈ÷·±½º(Oracle Coherence) Á¦Ç° °³¹ß ÃѰý ¾ÆÅ°ÅØÆ®
"µµ¸ÞÀÎ ÁÖµµ ¼³°è¿¡´Â ÆÀÀÌ ¼ÒÇÁÆ®¿þ¾î Áß½ÉÀÇ ½Ã½ºÅÛÀ» ±¸ÃàÇÒ ¶§, È¿À²¼ºÀ» ³ôÀÌ´Â µ¥ ¾öû³ ¿µÇâÀ» ¹ÌÄ£ °·ÂÇÑ »ý°¢ÀÇ µµ±¸°¡ ¸ð¿© ÀÖ´Ù. »ç½Ç ¸¹Àº °³¹ßÀÚ°¡ ÀÌ·± »ý°¢ÀÇ µµ±¸¸¦ Àû¿ëÇÏ´Â µ¥ ¾î·Á¿òÀ» °Þ¾ú°í, Á» ´õ ±¸Ã¼ÀûÀÎ °¡À̵å¶óÀÎÀ» ÇÊ¿ä·Î Çß¾ú´Ù. ¹ÝÀº ÀÌ Ã¥¿¡¼ À̷аú ½ÇÁ¦ »çÀÌÀÇ ÀÒ¾î¹ö¸° °í¸®¸¦ ã¾ÆÁØ´Ù. ¶ÇÇÑ ¹ÝÀº À߸ø ÀÌÇØµÅ ¿Â ¿©·¯ DDDÀÇ ¿ä¼Ò¿¡ ºûÀ» ºñÃâ »Ó¸¸ ¾Æ´Ï¶ó, ¸¹Àº DDD Àü¹®°¡°¡ Àû¿ëÇØ ¾öû³ ¼º°øÀ» °ÅµÐ Ä¿¸Çµå/Äõ¸® Ã¥ÀÓ ºÐ¸®¿Í À̺¥Æ® ¼Ò½Ì°ú °°Àº »õ·Î¿î °³³äÀ» ¿¬°áÇØÁÖ°í ÀÖ´Ù. ÀÌ Ã¥Àº DDD¸¦ Çö¾÷¿¡¼ »ç¿ëÇØº¸°íÀÚ ÇÏ´Â ¸ðµç À̰¡ ¹Ýµå½Ã Àоî¾ß ÇÒ Ã¥ÀÌ´Ù."
-¿ìµð ´ÙÇÑ(Udi Dahan) / N¼ºñ½º¹ö½º(NServiceBus)ÀÇ Ã¢¾÷ÀÚ
"¼ö³â µ¿¾È µµ¸ÞÀÎ ÁÖµµ ¼³°èÀÇ ½ÇÇà¿¡ ¾î·Á¿òÀ» °Þ¾î¿Â °³¹ßÀÚµéÀº Çö¾÷¿¡¼ DDD¸¦ ±¸ÇöÇϱâ À§ÇÑ ½Ç¿ëÀûÀÎ µµ¿òÀÌ ÇÊ¿äÇß´Ù. ¹ÝÀº ±¸ÇöÀ» À§ÇÑ ºüÁü¾ø´Â Âü°í¼¸¦ ÅëÇØ À̷аú ½ÇÁ¦ »çÀÌÀÇ °£°ÝÀ» ¸Þ¿ì´Â ÈǸ¢ÇÑ ÀÏÀ» ÇØ³Â´Ù. ¹ÝÀº Çö´ëÀÇ DDD ÇÁ·ÎÁ§Æ®¿¡¼ ÇØ¾ß ÇÏ´Â ÀÏÀÌ ¹«¾ùÀÎÁö ¼±¸íÇÑ ±×¸²À» ±×·Á³ª°¡¸ç, ÇÁ·ÎÁ§Æ® ¼ö¸í Áֱ⿡¼ ¹ß»ýÇÏ´Â ´ëÇ¥ÀûÀÎ ¹®Á¦¿¡ Á¢±ÙÇϰí ÇØ°áÇÏ´Â ¼ö¸¹Àº ½Ç¿ëÀû Á¶¾ðÀ» Á¦°øÇØÁØ´Ù."
-¾Ëº£¸£Åä ºê·£µ¹¸®´Ï(Alberto Brandolini) / ¿¡¸¯ ¿¡¹Ý½º¿Í µµ¸ÞÀÎ ·©±ÍÁö ÁÖ½Äȸ»ç(Domain Language Inc.)°¡ ÀÎÁõÇÑ DDD °»ç
"ÀÌ Ã¥Àº DDDÀÇ º¹ÀâÇÏ°í ³ÐÀº ºÐ¾ßÀÇ ÁÖÁ¦¸¦ ¸íÄèÇϰí Àç¹ÌÀÖ°í ´É¼÷ÇÏ°Ô ´Ù·ç´Â ±²ÀåÇÑ ÀÏÀ» ÇØ³Â´Ù. ½Å·ÚÇÒ ¼ö ÀÖ´Â Á¶¾ðÀÚ°¡ ¿©·¯ºÐ¿¡°Ô °¡Àå Áß¿äÇÑ ÀÏÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀÌ ¹«¾ùÀÎÁö¿¡ °üÇØ Àü¹®Àû »ó´ãÀ» ÇØÁÖ´Â »óȲó·³, ¸ôÀÔÀ» À¯µµÇϴ ģ±ÙÇÑ ½ºÅ¸ÀÏ·Î ¾²¿©Á³´Ù. ÀÌ Ã¥À» ¸¶Ä¥ ¶§ÂëÀ̸é DDDÀÇ ¸ðµç Áß¿ä °³³äÀ» ºñ·ÔÇÑ ¸¹Àº ºÎºÐÀ» Àû¿ëÇϱ⠽ÃÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ³ª ½º½º·Îµµ ÀÌ Ã¥À» ÀÐÀ¸¸ç ¸¹Àº ºÎºÐ¿¡ ¹ØÁÙÀ» ±ß°Ô µÆ´Ù. ÀÌÈÄ¿¡µµ ´Ù½Ã Âü°íÇÒ °ÍÀ̰í, ÀÚÁÖ ÃßõÇÒ °ÍÀÌ´Ù."
-Æú ·¹À̳Ê(Paul Rayner) / ¹öÃò¾ó Áö´Ï¾î½º À¯ÇÑÃ¥ÀÓȸ»ç(Virtual Genius LLC.)ÀÇ ¼ö¼® ÄÁ¼³ÅÏÆ®ÀÌÀÚ ¼ÒÀ¯ÁÖ, ¿¡¸¯ ¿¡¹Ý½º¿Í µµ¸ÞÀÎ ·©±ÍÁö ÁÖ½Äȸ»ç°¡ ÀÎÁõÇÑ DDD °»ç, DDD µ§¹öÀÇ ¼³¸³ÀÚÀÌÀÚ °øµ¿ ¸®´õ
"³»...°¡ °¡¸£Ä¡´Â DDD ¼ö¾÷¿¡¼ Áß¿äÇÑ ºÎºÐ Áß Çϳª´Â ¸ðµç »ý°¢°ú Á¶°¢À» ÇÔ²² ¸ð¾Æ¼ ¿ÏÀüÈ÷ µ¿ÀÛÇÏ´Â ±¸ÇöÀ¸·Î ¸¸µå´Â ¹æ¹ýÀ» ³íÀÇÇÏ´Â °úÁ¤ÀÌ´Ù. ÀÌÁ¦ ÀÌ Ã¥Àº ÀÌ·± °úÁ¤À» »ó¼¼È÷ ¼³¸íÇÏ´Â DDD Ä¿¹Â´ÏƼÀÇ Æ÷°ýÀû Âü°í¼°¡ µÉ °ÍÀÌ´Ù. ÀÛÀº ¼¼ºÎ»çÇ׺ÎÅÍ Å« ±×¸²À» ±×·Á³ª°¡´Â ¹æ¹ý±îÁö, DDD¸¦ ÅëÇØ ½Ã½ºÅÛÀ» ±¸ÇöÇÏ´Â ¸ðµç Ãø¸éÀ» ´Ù·é´Ù. ÀÌ Ã¥Àº ÈǸ¢ÇÑ Âü°í¼ÀÌÀÚ ¿¡¸¯ ¿¡¹Ý½ºÀÇ ±â³äºñÀû DDD Ã¥ÀÇ ÈǸ¢ÇÑ µ¿¹ÝÀÚ°¡ µÅÁÙ °ÍÀÌ´Ù."
-ÆÐÆ®¸¯ ÇÁ·¹µå¸¯¼Õ(Patrik Fredriksson) / ¿¡¸¯ ¿¡¹Ý½º¿Í µµ¸ÞÀÎ ·©±ÍÁö ÁÖ½Äȸ»ç(Domain Language Inc.)°¡ ÀÎÁõÇÑ DDD °»ç
"¿©·¯ºÐÀÌ ¼ÒÇÁÆ®¿þ¾î ÀåÀÎÁ¤½Å(craftsmanship)À» Áß¿äÇÏ°Ô »ý°¢ÇÑ´Ù¸é(±×¸®°í ¿©·¯ºÐÀº ±×·¸°Ô »ý°¢Çؾ߸¸ ÇÑ´Ù.) µµ¸ÞÀÎ ÁÖµµ ¼³°è´Â ÀÍÇô¾ß ÇÒ Áß¿äÇÑ ±â¼úÀÇ ÁýÇÕÀ̸ç, ÀÌ Ã¥Àº ¼º°øÀ» ÇâÇÑ Áö¸§±æÀÌ´Ù. IDDD´Â DDDÀÇ Àü·« ¹× Àü¼ú ÆÐÅÏ¿¡ °üÇÑ Àбâ ÁÁÀ¸¸é¼µµ öÀúÇÏ°Ô ÁøÇàµÇ´Â ³íÀǸ¦ ´ã°í ÀÖÀ¸¸ç, À̸¦ ÅëÇØ °³¹ßÀÚ´Â ÀÌÇØÇÑ ³»¿ëÀ» Áï½Ã ½ÇÇàÀ¸·Î ¿Å±æ ¼ö ÀÖ°Ô µÈ´Ù. ³»ÀÏÀÇ ºñÁî´Ï½º ¼ÒÇÁÆ®¿þ¾î´Â ÀÌ Ã¥ÀÇ ¸íÄèÇÑ °¡À̵å·ÎºÎÅÍ µµ¿òÀ» ¹Þ°Ô µÉ °ÍÀÌ´Ù."
-µ¥ÀÌºê ¹Ì¾îÈ÷µå(Dave Muirhead) / ºí·ç ¸®¹ö ½Ã½ºÅÛ ±×·ì(Blue River System Group), ¼ö¼® ÄÁ¼³ÅÏÆ®
"DDD¿Í °ü·ÃÇØ ¸ðµç °³¹ßÀÚ°¡ ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÒ À̷аú ½ÇÁ¦°¡ Àִµ¥, ÀÌ Ã¥Àº ÀÌ µÑÀ» ÇÔ²² ¹¾îÁÖ´Â ÆÛÁñÀÇ ¸¶Áö¸· Á¶°¢ÀÌ µÉ °ÍÀÌ´Ù. Áø½ÉÀ¸·Î ÃßõÇÑ´Ù!"
-¸¯Ä«¸£µå ¿ìº£¸£(Rickard ?berg) / Àڹ٠èÇǾðÀÌÀÚ ³×¿À Å×Å©³î·ÎÁö(Neo Technology)ÀÇ °³¹ßÀÚ
"¹ÝÀº IDDD¸¦ ÅëÇØ ¹Ù¿îµðµå ÄÁÅØ½ºÆ®¿Í ÄÁÅØ½ºÆ® ¸Ê°ú °°Àº Àü·« ÆÐÅÏÀ» Àü¸é¿¡ ³»¼¼¿ì°í, ¿£ÅÍÆ¼¿¡ °üÇÑ ±¸¼º ¿ä¼Ò(building block) ÆÐÅÏÀ» ´Ù·ç°í, ÀÌ¾î¼ ¼ºñ½º¸¦ ÆÄ°íµé¸ç ÇÏÇâ½Ä(top-down)À¸·Î DDD¿¡ Á¢±ÙÇÑ´Ù. ±×ÀÇ Ã¥ Àü¹Ý¿¡ °ÉÃÄ »ç·Ê ¿¬±¸°¡ »ç¿ëµÇ´Âµ¥, ÀÌ Ã¥À» ÃÖ´ëÇÑ È°¿ëÇϱâ À§Çؼ± ÃæºÐÇÑ ½Ã°£À» ÅõÀÚÇØ »ç·Ê ¿¬±¸¸¦ ÀÌÇØÇÏ°í °ø°¨ÇØ¾ß ÇÑ´Ù. ÇÏÁö¸¸ ¸¸¾à ±×·¸°Ô µÇ±â¸¸ ÇÑ´Ù¸é º¹ÀâÇÑ µµ¸ÞÀο¡¼ DDD¸¦ Àû¿ëÇÒ ¶§ ¾òÀ» ¼ö ÀÖ´Â ÁøÁ¤ÇÑ °¡Ä¡¸¦ È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç, ÀÚÁÖ µîÀåÇÏ´Â °çÇ®ÀÌ¿Í ´ÙÀ̾î±×·¥°ú Ç¥¿Í ÄÚµå ¸ðµÎ°¡ ÇÙ½É ³»¿ëÀÇ ÀÌÇØ¸¦ µµ¿ï °ÍÀÌ´Ù. µû¶ó¼ ¿©·¯ºÐÀÌ ¿À´Ã³¯ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â ¾ÆÅ°ÅØÃ³ ½ºÅ¸ÀÏ¿¡ µû¶ó °ß½ÇÇÑ DDD ½Ã½ºÅÛÀ» ±¸ÃàÇÏ±æ ¹Ù¶ó°í ÀÖ´Ù¸é ¹ÝÀÇ Ã¥À» ÃßõÇÑ´Ù."
-´í ÇìÀÌ¿ìµå(Dan Haywood) / ¡º³×ÀÌŰµå ¿ÀºêÁ§Æ®¸¦ ÅëÇÑ µµ¸ÞÀÎ ÁÖµµ µðÀÚÀÎ(Domain-Driven Design with Naked Objects)¡»ÀÇ ÀúÀÚ
"ÀÌ Ã¥Àº ÇÏÇâ½Ä Á¢±ÙÀ» ÅëÇØ Àü·« ÆÐÅÏÀ» º¸´Ù ³·Àº ¼öÁØÀÇ Àü¼úÀû Á¦¾à»çÇ×°ú ºÎµå·´°Ô ¿¬°áÇϸç DDD¸¦ ¼³¸íÇÑ´Ù. ÃֽоÆÅ°ÅØÃ³ ½ºÅ¸ÀÏÀ» µû¸¥ ±¸ÇöÀ» Á¦°øÇϸç ÀÌ·ÐÀ» ´Ù·ç°í ÀÖ´Ù. ¹ÝÀº ÀÌ Ã¥ÀÇ Àü¹Ý¿¡ °ÉÃÄ ±â¼úÀû °í·Á»çÇ×ÀÇ ±ÕÇü°¨À» À¯ÁöÇÏ¸ç ºñÁî´Ï½º µµ¸ÞÀο¡ ÁýÁßÇØ¾ß ÇÏ´Â Á߿伺°ú ±× °¡Ä¡¸¦ °Á¶Çϰí ÀÖ´Ù. ÀÌ¿¡ µû¶ó DDDÀÇ ¿ªÇÒ°ú Àǹ̰¡ ¼ö¸é À§·Î µå·¯³´Ù. ³»°¡ ¼ÓÇÑ ÆÀ¿¡¼± DDD¸¦ Àû¿ëÇÏ¸ç ¸¶ÂûÀ» °åÀ» ¶§°¡ ¸¹¾ÒÁö¸¸, 'µµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö'À̶ó´Â ÇÑ Áٱ⠺ûÀÇ µµ¿òÀ» ¹Þ¾Æ¼ ¹®Á¦¸¦ ±Øº¹ÇÏ°í ¿ì¸®ÀÇ ³ë·ÂÀ» ¿ÂÀüÈ÷ ºñÁî´Ï½º °¡Ä¡ÀÇ »ý»ê¿¡ Ȱ¿ëÇÒ ¼ö ÀÖ¾ú´Ù."
-·¹ºê °í·ÎÀνºÅ°(Lev Gorodinski) / DrillSpot.com, ¼ö¼® ¾ÆÅ°ÅØÆ®
¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
¡á ºü¸¥ °¡Ä¡ âÃâÀ» À§ÇÑ ¿Ã¹Ù¸¥ 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)¸¦ ¸¸µå´Â ±â¹ÝÀ» Á¦°øÇÑ´Ù. ¾Ö±×¸®°ÔÀÕÀÌ »ý¼ºµÈ ÈÄ ¹ß»ýÇÏ´Â ÀÏ·ÃÀÇ À̺¥Æ®¸¦ ÅëÇØ ¾Ö±×¸®°ÔÀÕÀÇ Àüü »óŸ¦ Ç¥ÇöÇϱâ À§ÇØ À̺¥Æ® ¼Ò½ÌÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̺¥Æ®¸¦ ¹ß»ý ¼ø¼¸¦ ÁöÄÑ ´Ù½Ã Àç»ýÇÔÀ¸·Î½á ¾Ö±×¸®°ÔÀÕÀÇ »óŸ¦ À籸ÃàÇÒ ¼ö ÀÖ´Ù. µû¶ó¼ À̺¥Æ®´Â ¿µ¼Ó¼ºÀ» ´Ü¼øÈÇÏ°í º¹ÀâÇÑ ÇàÀ§ ¼Ó¼º¿¡¼ °³³äÀ» Æ÷ÂøÇϵµ·Ï ÇØÁÖ´Â °¡¿îµ¥, À̺¥Æ® ÀÚü°¡ ¿©·¯ºÐ ÀÚ½ÅÀÇ ½Ã½ºÅÛ°ú ¿ÜºÎ ½Ã½ºÅÛ¿¡ Áö´ëÇÑ ¿µÇâÀ» ¹ÌÄ¡´Â ¿ä¼Ò°¡ µÈ´Ù.
¡Ú ÁöÀºÀÌÀÇ ¸» ¡Ú
¶¥¿¡ ¼ ÀÖ±â, ÀÌ·úÇϱâ
³»°¡ ¾î·ÈÀ» ¶§, ³ªÀÇ ¾Æ¹öÁö´Â ÀÛÀº ºñÇà±â¸¦ ¸ô±â À§ÇÑ °øºÎ¸¦ Çϼ̴Ù. °¡Á· Àüü°¡ Á¾Á¾ ºñÇà¿¡ ÇÔ²²Çß´Ù. ¶§·Ð Á¡½É ½Ä»ç¸¦ À§ÇØ ´Ù¸¥ °øÇ׿¡ µé·È´Ù°¡ µ¹¾Æ¿À°ï Çß´Ù. ¿ì¸®°¡ Çϴÿ¡ ¿Ã¶ó°¡±æ ¹Ù¶óÁö¸¸ ¾Æ¹öÁöÀÇ ½Ã°£ÀÌ Çã¶ôÇÏÁö ¾ÊÀ» ¶§¸é, ¹ÛÀ¸·Î ³ª°¡ 'ÅÍÄ¡ ¾Ø °í(Touch and Go)'¸¦ µû¶ó Çß´Ù.
¶§·Ð Àå°Å¸® ¿©ÇàÀ» Çϱ⵵ Çß´Ù. ±×·² ¶§¸é Ç×»ó ¾Æ¹öÁö°¡ °æ·Î¸¦ °èÈ¹ÇØµÐ Áöµµ°¡ ÀÖ¾ú´Ù. ¾î·È´ø ¿ì¸®´Â ¾Æ·¡ÂÊÀÇ ·£µå¸¶Å©¸¦ »ìÆìº¸¸ç °èȹ´ë·Î °æ·Î¸¦ µû¸£°í ÀÖ´ÂÁö È®ÀÎÇÏ´Â ÀÏÀ» Çß¾ú´Ù. ÀÌ ÀÏÀº »ó¼¼ÇÑ ºÎºÐÀ» È®ÀÎÇÒ ¼ö ¾øÀÌ ¸Ö¸® ¶³¾îÁø ÁöÁ¡À» »ìÆì¼ ´ë»óÀ» ã¾Æ¾ß ÇÏ´Â µµÀüÀÌ ÇÊ¿äÇ߱⿡ ±²ÀåÈ÷ Áñ°Å¿ü´Ù. ½ÇÁ¦·Î ³ª´Â ¾Æ¹öÁö°¡ ¿ì¸®°¡ ¾îµð·Î °¡´ÂÁö Ç×»ó ¾Ë°í ÀÖ´Ù°í È®½ÅÇß´Ù. ¾Æ¹öÁö´Â ¸ðµç ÀåÄ¡°¡ ³ª¿µÈ °è±âÆÇÀ» ´Ù·ç°í ÀÖ¾ú°í, ±×´Â °è±â ºñÇà ÀÚ°ÝÁõÀ» °®°í ÀÖ¾ú´Ù.
Çϴÿ¡¼ÀÇ °æÄ¡´Â ½ÇÁ¦·Î ³ªÀÇ °üÁ¡À» º¯È½ÃÄ×´Ù. ¶§¶§·Î ¾Æ¹öÁö¿Í ³ª´Â ½Ã°ñ¿¡ ÀÖ´ø ¿ì¸®ÀÇ Áý À§¸¦ ³¯¾Ò´Ù. ³ª´Â ¼ö¹é ÇÇÆ® À§¿¡¼ ¹Ù¶óº¸´Â ±¤°æÀ» ¹ÙÅÁÀ¸·Î ÀÌÀü¿£ °®Áö ¸øÇß´ø ÄÁÅØ½ºÆ®(context, ¹®¸Æ)¸¦ ±ú´Ý°Ô µÆ´Ù. ¾Æ¹öÁö°¡ Áý À§¸¦ ³¯ ¶§¸é ¾î¹Ì´Ï¿Í ÀڸŵéÀÌ ¸¶´çÀ¸·Î ¶ÙÃijª¿Í ¼ÕÀº Èçµé¾ú´Ù. ³ª´Â ±×µéÀÇ ´«À» ¹Ù¶óº¼ ¼ø ¾ø´õ¶óµµ ±×µéÀÓÀ» ¾Ë ¼ö ÀÖ¾ú´Ù. ¿ì¸° À̾߱⸦ ³ª´ ¼ø ¾ø¾ú´Ù. ³»°¡ ºñÇà±âÀÇ Ã¢¹®À¸·Î ¼Ò¸®¸¦ Áú·¶´Ù ÇÏ´õ¶óµµ ±×µéÀº Àý´ë ³» ¸ñ¼Ò¸®¸¦ µéÀ» ¼ö ¾ø¾úÀ» °ÍÀÌ´Ù. ±æ°ú ¿ì¸® ÁýÀÇ °æ°è¿¡ ¼ ÀÖ´ø ¿ïŸ¸®¸¦ È®ÀÎÇÒ ¼öµµ ÀÖ¾ú´Ù. »ó°ø¿¡¼ ±× ¿ïŸ¸®´Â ¸¶Ä¡ ÀÛÀº °¡Áö¸¦ Á¶½É½º·´°Ô ¿«¾îµÐ µí º¸¿´´Ù. ±×¸®°í ³»°¡ ¿©¸§¸¶´Ù Àܵð ±ð±â ±â°è·Î ÇÑ ÁÙ ÇÑ ÁÙ ¹Ð¸ç µ¹´ø °Å´ëÇÑ ¸¶´çµµ ÀÖ¾ú´Ù. Çϴÿ¡¼± ³ì»öÀÇ ¹Ù´Ù¸¸ÀÌ ÆîÃÄÁ® ÀÖ¾ú°í, ÀܵðÀÇ °¡´ÚÀ» ÇϳªÇϳª µé¿©´Ùº¼ ¼ö´Â ¾ø¾ú´Ù.
ºñÇàÇÏ´Â ÀÏÀÌ ¸ÚÁö±ä ÇÏÁö¸¸, ±× ÅÍÄ¡ ¾Ø °íÀÇ ¼ø°£µéÀº ³Ê¹« ª¾Æ¼ ³»°Ô ¾ÈÁ¤°¨À» ÁÖÁö´Â ¸øÇß´Ù. ¸¶Ä¡ Àú³á ¹«·Æ ¾Æ¹öÁö¿Í ³»°¡ Âø·ú Á÷ÈÄ È°Áַθ¦ ´Þ·Á¿Í ºñÇà±â¸¦ °íÁ¤½ÃŰ´ø ¶§Ã³·³ ³» ±â¾ï ¼Ó¿¡ ´Ü´ÜÈ÷ »õ°ÜÁ³´Ù
µµ¸ÞÀÎ ÁÖµµ ¼³°è·Î Âø·úÇϱâ
µµ¸ÞÀÎ ÁÖµµ ¼³°è(DDD, Domain-Driven Design)¿¡ Ä£¼÷ÇØÁö´Â ¹æ¹ýÀº ¾î¸° ¾ÆÀÌÀÇ ºñÇà°ú ºñ½ÁÇÒÁöµµ ¸ð¸¥´Ù. Çϴÿ¡¼ÀÇ Ç³°æÀº Á¤¸» ¸ÚÁöÁö¸¸, ¶§·Ð ³Ê¹« ¾î»öÇÏ°í »õ·Î¿ö¼ ¿ì¸®°¡ Á¤È®ÀÌ ¾îµð¿¡ ÀÖ´ÂÁö ±ú´ÝÁö ¸øÇÒÁöµµ ¸ð¸¥´Ù. ÇÑ ÁöÁ¡¿¡¼ ´Ù¸¥ ÁöÁ¡À¸·Î À̸£´Â ¹æ¹ýÀº ½ÇÁ¦¿Í °Å¸®°¡ ÀÖ´Â µíÀÌ º¸ÀδÙ. DDDÀÇ ¼ºÀÎÀ¸·Î ¼ºÀåÇÑ À̵éÀº Ç×»ó ÀÚ½ÅÀÌ ¾îµð¿¡ ÀÖ´ÂÁö¸¦ ¾È´Ù. ±×µéÀº ¿À·¡ Àü¿¡ °æ·Î¸¦ ±×·Áµ×°í, Ç×ÇàÀ» À§ÇÑ ÀåÄ¡µµ ¿Ïº®È÷ Á¶Á¤Çص״Ù. ±²ÀåÈ÷ ¸¹Àº ¼öÀÇ ´Ù¸¥ »ç¶÷µéÀº Áö»ó¿¡ ³»·Á¿Â °Íó·³ ´À³¢Áö ¸øÇÑ´Ù. ¿©±â¼ ÇÊ¿äÇÑ ´É·ÂÀº 'Âø·úÇØ¼ ¹¾îµÎ±â'´Ù. ±×¸®°í ¿ì¸®°¡ ¾îµð¿¡ ÀÖ°í ¾îµð·Î °¡¾ßÇÒÁö ¾Æ´Â µ¥ µµ¿òÀÌ µÉ Áöµµµµ ÇÊ¿äÇÏ´Ù.
¿¡¸¯ ¿¡¹Ý½º´Â ¡ºµµ¸ÞÀÎ ÁÖµµ ¼³°è¡»¿¡¼ ½Ã´ë¸¦ ÃÊ¿ùÇÑ ¼º°ú¸¦ ´ã¾Æ³Â´Ù. ³ª´Â ¿¡¸¯ÀÇ ¾÷ÀûÀÌ ÇâÈÄ ¼ö½Ê ³â°£ °³¹ßÀÚ¿¡°Ô ½Ç¿ëÀûÀÎ ¹æ¹ýÀ» °¡À̵åÇÒ °ÍÀ̶ó´Â ºÐ¸íÇÑ ¹ÏÀ½ÀÌ ÀÖ´Ù. ´Ù¸¥ ÆÐÅÏó·³, ÀÌ´Â ÁöÇ¥·ÎºÎÅÍ ÇÑÂü À§¸¦ ³¯¾Æ¼ ³ÐÀº ½Ã¾ß¸¦ °®°Ô ÇØÁØ´Ù. ÇÏÁö¸¸ ¿ì¸®°¡ DDD¸¦ ±¸ÇöÇÏ´Â µ¥ ÇÊ¿äÇÑ ±âÃÊ ÀÛ¾÷À» ÀÌÇØÇÒ ¶© ±×º¸´Ù ´õ ¸¹Àº ¹®Á¦°¡ ¹ß»ýÇϸç, ¿ì¸®´Â Á» ´õ ¸¹Àº ¼öÀÇ »ó¼¼ÇÑ ¿¹Á¦¸¦ ã°Ô µÈ´Ù. ±×¸®°í ±×·² ¼ö ÀÖ´Ù¸é Áö»ó¿¡ Á» ´õ ¸Ó¹«¸¦ ¼ö ÀÖ°í, ¾î¼¸é ÁýÀ̳ª ´Ù¸¥ Àͼ÷ÇÑ Àå¼Ò·Î µå¶óÀ̺긦 ¶°³¯ ¼ö ÀÖ°Ô µÉÁöµµ ¸ð¸¥´Ù.
³» ¸ñÇ¥ Áß ÀϺδ ¿©·¯ºÐÀ» ºÎµå·´°Ô Âø·ú½ÃŰ°í ºñÇà±â¸¦ Àß ¹¾îµÎ°í Àͼ÷ÇÑ Áö»óÀÇ °æ·Î¸¦ µû¶ó ÁýÀ¸·Î µ¹¾Æ°¥ ¼ö ÀÖ°Ô ÇÏ´Â ÀÏÀÌ´Ù. ±×·¡¼ Àͼ÷ÇÑ µµ±¸¿Í ±â¼úÀ» »ç¿ëÇÑ ¿¹Á¦¸¦ ÅëÇØ ¿©·¯ºÐÀÌ DDDÀÇ ±¸ÇöÀ» ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï µ½°íÀÚ ÇÑ´Ù. ¶ÇÇÑ ¿ì¸® Áß ´©±¸µµ Ç×»ó Áý¿¡¸¸ ¸Ó¹° ¼ö´Â ¾ø±â ¶§¹®¿¡, ³ª´Â ¿©·¯ºÐÀÌ ¹ÛÀ¸·Î ³ª°¡ ¾î¼¸é ÀÌÁ¦²¯ º» Àû ¾ø´Â »õ·Î¿î °ø°£À¸·Î À̾îÁö´Â °æ·Î¸¦ ãµµ·Ï µµ¿ï ¿¹Á¤ÀÌ´Ù. ¶§·Ð ±×¿¡ À̸£´Â ±æÀÌ °¡ÆÄ¸¦Áöµµ ¸ð¸£Áö¸¸, ¿Ã¹Ù¸¥ Àü¼úÀ» ÅÃÇÑ´Ù¸é ¾ÈÀüÀÌ º¸ÀåµÈ µµÀüµµ °¡´ÉÇÏ´Ù. ÀÌ ¿©ÇàÀ» ÅëÇØ ¿©·¯ºÐÀº ¿©·¯ µµ¸ÞÀÎ ¸ðµ¨À» ÅëÇÕÇÒ ¶§ ´ë¾ÈÀ¸·Î °í·ÁÇÒ ¼ö ÀÖ´Â ¾ÆÅ°ÅØÃ³¿Í ÆÐÅÏÀ» ¹è¿ì°Ô µÈ´Ù. ÀÌ´Â ¿©·¯ºÐÀ» Áö±Ý±îÁö °Þ¾îº» Àû ¾ø´Â ¿µ¿ªÀ¸·Î ²ø¾îµéÀÏÁöµµ ¸ð¸¥´Ù. ¿©·¯ºÐÀº ¿©·¯ ÅëÇÕÀ» ÅëÇÑ Àü·«Àû ¸ðµ¨¸µÀÇ »ó¼¼ÇÑ ÀڷḦ ãÀ» ¼ö ÀÖÀ¸¸ç, ÀÚÀ²Àû(autonomous) ¼ºñ½º¸¦ °³¹ßÇÏ´Â ¹æ¹ý±îÁöµµ ¹è¿ï ¼ö ÀÖ´Ù.
³ªÀÇ ¸ñÇ¥´Â ¿©·¯ºÐÀÌ Âª°í ±ä ¿©ÇàÀ» ¸ðµÎ ¶°³¯ ¼ö ÀÖÀ¸¸ç ±æÀ» ÀҰųª ºÎ»ó´çÇÏÁö ¾Ê°í º¹ÀâÇÑ Æ®·¡Å·À» Çϸç ÁÖº¯À» ÀÚ¼¼È÷ Áñ±æ ¼ö ÀÖµµ·Ï µµ¿ï Áöµµ¸¦ Á¦°øÇÏ´Â °ÍÀÌ´Ù.
ÁöÇüÀ» Áöµµ·Î ¿Å±â°í ºñÇàÀ» °èȹÇϱâ
¿ì¸° ¼ÒÇÁÆ®¿þ¾î °³¹ßÇϸç Ç×»ó ¾î¶² ´ë»óÀ» ´Ù¸¥ ´ë»óÀ¸·Î ¸ÅÇÎ(map)ÇÏ°Ô µÈ´Ù. ¿ì¸° ¿ì¸®ÀÇ °´Ã¼¸¦ µ¥ÀÌÅͺ£À̽º·Î ¸ÅÇÎÇÑ´Ù. ¿ì¸° ¿ì¸®ÀÇ °´Ã¼¸¦ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º·Î ¸ÅÇÎÇÑ µÚ ´Ù½Ã ¸ÅÇÎÇØ °¡Á®¿Â´Ù. ¿ì¸° ¿ì¸®ÀÇ °´Ã¼¸¦ ¿©·¯ ¾ÖÇø®ÄÉÀÌ¼Ç Ç¥Çö(´Ù¸¥ ½Ã½ºÅÛ°ú ¾ÖÇø®ÄÉÀ̼ǿ¡¼ »ç¿ëÇÒÁöµµ ¸ð¸£´Â)À¸·Î ¸ÅÇÎÇØ¼ Àü´ÞÇÏ°í ¸ÅÇÎÇØ °¡Á®¿Â´Ù. ÀÌ·± ¸ðµç ¸ÅÇÎ °úÁ¤À» »ý°¢Çغ¸¸é, ¿¡¹Ý½ºÀÇ »óÀ§ ¼öÁØ ÆÐÅÏÀ» ±¸ÇöÀ¸·Î ¸ÅÇÎÇÏ·Á´Â ½Ãµµ´Â ÀÚ¿¬½º·± °á°ú´Ù.
¿©·¯ºÐÀÌ ÀÌ¹Ì ¿©·¯ ¹ø DDD¸¦ Àû¿ëÇØºÃ´Ù ÇÏ´õ¶óµµ, ¾Æ¸¶ µµ¿òÀ» ¹ÞÀ» ¼ö ÀÖ´Â ºÎºÐÀÌ ³²¾ÆÀÖÀ» °ÍÀÌ´Ù. DDD´Â ¿ì¼± ±â¼úÀû µµ±¸ÀÇ ÁýÇÕÀ¸·Î¼ ¹Þ¾Æµé¿©Áø´Ù. ÀϺο¡¼± ÀÌ·± DDD Á¢±ÙÀ» DDD ¶óÀÌÆ®(DDD-Lite)¶ó°í ºÎ¸¥´Ù. ¿ì¸° ¿£ÅÍÆ¼(Entity)¿Í ¼ºñ½º(Service)¸¦ µµÀÔÇÏ°Ô µÇ¸ç, ¾î¼¸é ¿ë±â ÀÖ°Ô ¾Ö±×¸®°ÔÀÕ(Aggregate)ÀÇ ¼³°è¸¦ ½ÃµµÇÒ ¼öµµ ÀÖ°í, ¸®ÆÄÁöÅ丮(Repository)¸¦ Ȱ¿ëÇØ ¿µ¼Ó¼ºÀ» ´Ù·ç·Á´Â ³ë·Âµµ ±â¿ïÀÌ°Ô µÈ´Ù. ÀÌ·± ÆÐÅÏÀº ¾î´À Á¤µµ Ä£¼÷Çϱ⠶§¹®¿¡ ½ÇÁ¦·Î À̸¦ »ç¿ëÇϱâ·Î °áÁ¤ÇÏ°Ô µÈ´Ù. ´õ ³ª¾Æ°¡, ±× °úÁ¤¿¡¼ °ª °´Ã¼¸¦ ÇÔ²² »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ¸ðµÎ´Â °á±¹ Àü¼úÀû µðÀÚÀÎ ÆÐÅÏÀÇ ¹üÁÖ¿¡ ¼ÓÇϸç, ÀÌ´Â ±â¼úÀûÀÎ Ãø¸éÀÌ °ÇÏ´Ù. ¿Ü°ú ÀÇ»çÀÇ ¸Þ½ºÃ³·³, À̸¦ Ȱ¿ëÇØ Áß¿äÇÑ ¼ÒÇÁÆ®¿þ¾î ¹®Á¦¸¦ ÇØ°áÇØ³ª°¥ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ¿Í °ü·ÃÇØ ´õ ¸¹Àº ÇнÀÀÌ ÇÊ¿äÇϸç, Àü¼úÀû µðÀÚÀÎÀÇ ´Ù¸¥ Ãø¸éµµ ÇÔ²² »ìÆìºÁ¾ß ÇÑ´Ù. ³ª´Â À̸¦ ±¸ÇöÀ¸·Î ¸ÅÇÎÇϵµ·Ï ÇϰڴÙ.
¿©·¯ºÐÀº Àü¼úÀû ¸ðµ¨¸µÀ» ³Ñ¾î¼ ³ª¾Æ°¡ º» ÀûÀÌ ÀÖÀ»±î? Àü¼úÀû µðÀÚÀÎ ÆÐÅÏÀ̶ó ºÒ¸®´Â DDDÀÇ '³ª¸ÓÁö ¹ÝÂÊ'¿¡ °üÇØ ¾Ë¾Æº¸°Å³ª ±íÀÌ °í¹ÎÇØº» ÀûÀÌ ÀÖÀ»±î? ¸¸¾à ¹Ù¿îµðµå ÄÁÅØ½ºÆ®(Bounded Context)³ª ÄÁÅØ½ºÆ® ¸Ê(Context Map)À» ³õÄ¡°í ÀÖ¾ú´Ù¸é, À¯ºñÄõÅͽº ¾ð¾î(Ubiquitous Language)µµ ¸¶Âù°¡ÁöÀÏ °ÍÀÌ´Ù.
¿¡¹Ý½º°¡ ¼ÒÇÁÆ®¿þ¾î °³¹ß Ä¿¹Â´ÏƼ¿¡ ±â¿©ÇÑ ´Ü ÇϳªÀÇ '¹ß¸í'À» ²Å¾Æ¾ß ÇÑ´Ù¸é, ±×°Ç ¹Ù·Î À¯ºñÄõÅͽº ¾ð¾î´Ù. Àû¾îµµ ±×´Â ¸ÕÁö ½×ÀÎ µðÀÚÀÎ ÁöÇýÀÇ Ã¢°í¿¡¼ À¯ºñÄõÅͽº ¾ð¾î¸¦ ²ø¾î³» ¹àÈ÷´Â ±â¿©¸¦ Çß´Ù. À̴ ƯÁ¤ ÇÙ½É ºñÁî´Ï½º µµ¸ÞÀÎÀÇ °³³ä°ú ¿ë¾î¸¦ ¼ÒÇÁÆ®¿þ¾î °³¹ß ¸ðµ¨·Î Æ÷ÂøÇØ¾ß ÇÏ´Â ÆÀÀ» À§ÇÑ ÆÐÅÏÀÌ´Ù. ÀÌ ¼ÒÇÁÆ®¿þ¾î ¸ðµ¨Àº ¸í»ç³ª Çü¿ë»ç³ª µ¿»ç¸¦ ºñ·ÔÇØ ÇÑ ¸í ÀÌ»óÀÇ ºñÁî´Ï½º µµ¸ÞÀÎ Àü¹®°¡°¡ Æ÷ÇÔµÈ °³¹ß ÆÀ¿¡¼ °ø½ÄÀûÀ¸·Î ¾ð±ÞµÇ´Â Á» ´õ dzºÎÇÑ Ç¥Çö±îÁö Æ÷ÇÔÇØ ¸¸µé¾îÁø´Ù. ÇÏÁö¸¸ ÀÌ ¸ðµ¨ÀÌ ´Ü¼øÈ÷ ´Ü¾îÀÇ ³ª¿¿¡ ÇÑÁ¤µÈ´Ù°í °á·Ð ³»¸°´Ù¸é ÀÌ´Â À߸øµÈ ÆÇ´ÜÀÌ´Ù. ¸»ÇÏ´Â ÀÌÀÇ ¸¶À½À» Åõ¿µÇÏ´Â ´Ù¸¥ ¸ðµç »ç¶÷ÀÇ ¾ð¾î¿Í ¸¶Âù°¡Áö·Î, À¯ºñÄõÅͽº ¾ð¾îµµ ¿©·¯ºÐÀÌ ÇÔ²² ÀÏÇÏ´Â ºñÁî´Ï½º µµ¸ÞÀÎ Àü¹®°¡ÀÇ ¸Ó¸´¼Ó ¸ðµ¨À» ¹Ý¿µÇÑ´Ù. µû¶ó¼, ¸ðµ¨ÀÌ µµ¸ÞÀÎÀÇ ¿ø¸®¸¦ Á¦´ë·Î ´ã°í ÀÖ´ÂÁö¸¦ È®ÀÎÇÒ ¼ÒÇÁÆ®¿þ¾î¿Í Å×½ºÆ®´Â ÀÌ ¾ð¾î¸¦ Æ÷ÂøÇÏ°í °í¼öÇØ¾ß Çϸç, ÆÀ ³»ºÎ¿¡¼µµ ÀÌ ¾ð¾î¸¦ °í¼öÇÏ·Á´Â ³ë·ÂÀ» ÇÔ²²ÇØ¾ß ÇÑ´Ù. ÀÌ ¾ð¾î´Â ¿©·¯ Àü·«Àû/Àü¼úÀû ¸ðµ¨¸µ ÆÐÅϵ鸸а¡Ä¡ ÀÖÀ¸¸ç, ¶§·Ð ´õ ¿À·¡ Áö¼ÓµÇ´Â °¡Ä¡¸¦ º¸À̱⵵ ÇÑ´Ù.
°£´ÜÈ÷ ¸»ÇÏÀÚ¸é, DDD ¶óÀÌÆ®¸¦ µû¸£°Ô µÇ¸é ÃÖ¼ÒÇÑÀÇ µµ¸ÞÀÎ ¸ðµ¨¸¸À» ±¸ÃàÇÏ´Â °á°ú·Î À̾îÁø´Ù. ÀÌ´Â À¯ºñÄõÅͽº ¾ð¾î¿Í ¹Ù¿îµðµå ÄÁÅØ½ºÆ®¿Í ÄÁÅØ½ºÆ® ¸ÊÀ» ±×¸®´Â Ȱµ¿ÀÌ ÁÖ´Â °¡Ä¡°¡ ¸Å¿ì Å©±â ¶§¹®ÀÌ´Ù. ¿©·¯ºÐÀº ´Ü¼øÇÑ ÆÀÀÇ ¾ð¾î ÀÌ»óÀÇ ¹«¾ð°¡¸¦ ¾ò°Ô µÈ´Ù. ¸í½ÃÀûÀÎ ¹Ù¿îµðµå ÄÁÅØ½ºÆ® ¾È¿¡¼ µµ¸ÞÀÎ ¸ðµ¨·Î½á Ç¥ÇöµÇ´Â ÆÀÀÇ ¾ð¾î´Â ½ÇÁúÀûÀÎ ºñÁî´Ï½º °¡Ä¡¸¦ ´õÇØ ÁÙ »Ó¸¸ ¾Æ´Ï¶ó, ¿ì¸®¿¡°Ô ¿Ã¹Ù¸¥ ¼ÒÇÁÆ®¿þ¾î¸¦ °³¹ßÇϰí ÀÖ´Ù´Â È®½ÅÀ» ½É¾îÁØ´Ù. ±â¼úÀûÀÎ Ãø¸é¿¡¼µµ, Á» ´õ ºÐ¸íÇÏ°Ô ÇൿÀ» Á¤ÀÇÇÔÀ¸·Î½á ¼ø¼öÇÔÀ» ³ôÀÌ°í ¿À·ù ¹ß»ý °¡´É¼ºÀº ³·Ã߸ç, ´õ ³ªÀº ¸ðµ¨À» ¸¸µå´Â µ¥ µµ¿òÀ» ¹Þ°Ô µÈ´Ù. µû¶ó¼ ³ª´Â Àü·«Àû µðÀÚÀÎ ÆÐÅÏÀ» ÀÌÇØÇϱ⠽¬¿î ±¸Çö ¿¹Á¦·Î ¸ÅÇνÃÄѺ¸·Á ÇÑ´Ù.
ÀÌ Ã¥Àº ¿©·¯ºÐÀÌ Àü·«Àû µðÀÚÀΰú Àü¼úÀû µðÀÚÀÎÀ̶õ µÎ Ãø¸é ¸ðµÎÀÇ ÀåÁ¡À» °æÇèÇÒ ¼ö ÀÖ´Â ¹æÇâÀ¸·Î DDDÀÇ ¿µ¿ªÀ» ¸ÅÇÎÇÑ´Ù. ¿©·¯ºÐÀº ¼¼ºÎ»çÇ×À» ÀÚ¼¼È÷ »ìÆìº¸¸ç ºñÁî´Ï½ºÀû °¡Ä¡¿Í ±â¼úÀû °Á¡ÀÌ ¹«¾ùÀÎÁö ¸¸³ªº¸°Ô µÈ´Ù.
¿ì¸®°¡ DDD¿Í °ü·ÃÇØ ÇØ¿Ô´ø ¸ðµç ÀÏÀÌ ´Ü¼øÈ÷ Áö»ó¿¡ ¸Ó¹«´Â ¼öÁØÀ̶ó¸é ±²ÀåÈ÷ ½Ç¸Á½º·¯¿ï °ÍÀÌ´Ù. ¼¼ºÎ»çÇ׿¡¸¸ ³Ê¹« ¸ôÀÔÇÑ´Ù¸é Çϴÿ¡¼ ¹Ù¶óº» dz°æÀ» ÅëÇØ ¹è¿ï Á¡µµ ¸¹´Ù´Â »ç½ÇÀ» ÀØ°Ô µÈ´Ù. ¿©·¯ºÐ ÀÚ½ÅÀ» ¿ïÅüºÒÅüÇÑ Áö»ó¿¡¼ÀÇ ¿©Çà¿¡¸¸ ¹¾îµÎÁö´Â ¸»ÀÚ. Á¶Á¾»çÀÇ ÀÚ¸®¿¡ ¾É¾Æ¼ ³ôÀº °÷¿¡¼ÀÇ À̾߱⸦ µè±â À§ÇÑ µµÀüÀ¸·Î ¿ë°¨È÷ ³ª¾Æ°¡ÀÚ. ¹Ù¿îµðµå ÄÁÅØ½ºÆ®¿Í ÄÁÅØ½ºÆ® ¸Ê°ú ÇÔ²²ÇÏ´Â Àü·«Àû µðÀÚÀÎÀ¸·ÎÀÇ ºñÇàÀ» ¿¬½ÀÇÑ´Ù¸é, ÃÖ´ëÇÑÀÇ ÀÌÇØ¸¦ ¾ò°Ô µÆÀ» ¶§ÀÇ ¿õÀåÇÑ °üÁ¡À» °®°Ô µÉ Áغñ¸¦ ¸¶Ä¡°Ô µÉ °ÍÀÌ´Ù. ¿©·¯ºÐ ½º½º·Î°¡ DDD·ÎÀÇ ºñÇàÀ» ÇØ³»°Ô µÆÀ» ¶§, ºñ·Î¼Ò ³ªÀÇ ¸ñÇ¥µµ ¿Ï¼ºµÇ°Ô µÈ´Ù.
¡Ú ¿Å±äÀÌÀÇ ¸» ¡Ú
¿¡¸¯ ¿¡¹Ý½º°¡ Àú¼úÇÑ ¡ºµµ¸ÞÀÎ ÁÖµµ ¼³°è¡»¶õ Ã¥ÀÌ ¼¼»ó¿¡ ³ª¿Â Áöµµ ¾î´Àµ¡ 10¿© ³âÀÌ Èê·¶´Ù. ¿£ÅÍÆ¼, °ª °´Ã¼, ¾Ö±×¸®°ÔÀÕ, ¼ºñ½º, À̺¥Æ®, ÆÑÅ丮, ¸®ÆÄÁöÅ丮 µîÀÇ ¿ä¼Ò¸¦ ¹ÙÅÁÀ¸·Î, Çö½Ç¿¡ µå·¯³ª´Â ¸ð½ÀÀ» µµ¸ÞÀÎ ¸ðµ¨·Î ¿Å±â´Â µðÀÚÀÎ °úÁ¤Àº ¼ÒÇÁÆ®¿þ¾î ¼³°è¿¡¼ °¡Àå ³Î¸® »ç¿ëµÇ´Â °·ÂÇÑ µµ±¸·Î ÀÚ¸®Àâ¾Ò´Ù. ÀüÅëÀûÀÎ °´Ã¼ÁöÇâ µðÀÚÀλӸ¸ ¾Æ´Ï¶ó ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¿¡ À̸£±â±îÁö, µµ¸ÞÀÎ ÁÖµµ ¼³°è´Â ÇÁ·ÎÁ§Æ®¿¡¼ ¾î¶² ¾ð¾î³ª ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼±ÅÃÇÏµç µðÀÚÀÎÀ» À§ÇØ ¹Ýµå½Ã Âü°íÇÏ°Ô µÇ´Â ÇʼöÀûÀÎ µµ±¸°¡ µÆ´Ù.
ÇÏÁö¸¸ µµ¸ÞÀÎ ÁÖµµ ¼³°è °æÇèÀÌ ºÎÁ·ÇÑ ÆÀÀÌ µµ¸ÞÀÎ ÁÖµµ ¼³°èÀÇ °³³äÀ» ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡ Àû¿ëÇϱ⿣ ¿¡¹Ý½ºÀÇ ¡ºµµ¸ÞÀÎ ÁÖµµ ¼³°è¡»´Â ³Ê¹« °³³ä¿¡ Ä¡ÁߵŠÀÖÀ¸¸ç Ãß»óÀûÀ̾ú´Ù. ¡ºµµ¸ÞÀÎ ÁÖµµ ¼³°è¡»¿¡¼± µµ¸ÞÀÎ ¸ðµ¨À» ±¸¼ºÇÏ´Â ¿ä¼Ò¸¦ ºÐ·ùÇÏ¸ç °³³äÀû Ư¡À» Àß Á¤¸®Çϰí ÀÖÁö¸¸, À̸¦ Çö½Ç¿¡ Àû¿ëÇÏ´Â ¹æ¹ýÀ» ±¸Ã¼ÀûÀÎ ¿¹Á¦·Î ÃæºÐÈ÷ º¸¿©ÁÖÁø ¸øÇ߱⠶§¹®¿¡ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡ Àû¿ëÇϱⰡ ¸Å¿ì ¾î·Á¿ü´Ù. ¡ºµµ¸ÞÀÎ ÁÖµµ ¼³°è¡»¸¦ ÀÐ°í ½ÇÁ¦ ¼ÒÇÁÆ®¿þ¾î ¼³°è °úÁ¤¿¡¼ Ȱ¿ëÇØº¸·Á´Â °³¹ßÀÚµéÀº ±¸Ã¼Àû Ȱ¿ë¹ýÀ» ¶°¿Ã¸®Áö ¸øÇØ Å« È¥¶õ¿¡ ºüÁö±â ½Ê»óÀ̾ú´Ù. ±× À¯¿ëÇÔ¿¡ ºñÇØ µµ¸ÞÀÎ ÁÖµµ ¼³°è°¡ ³Î¸® Ȱ¿ëµÇÁö ¸øÇß´ø ÀÌÀ¯´Â ¡ºµµ¸ÞÀÎ ÁÖµµ ¼³°è ±¸Çö¡»°ú °°Àº ½Ç¿ëÀûÀÎ Áöħ¼°¡ ¾ÆÁ÷ µîÀåÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ ¾Æ´Ò±î.
¹Ý ¹ö³í(Vaughn Vernon)Àº ÀÌ Ã¥À» ÅëÇØ µµ¸ÞÀÎ ÁÖµµ ¼³°è¸¦ ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà ÇÁ·ÎÁ§Æ®¿¡¼ Ȱ¿ëÇÏ´Â ¹æ¹ýÀ» Çö½ÇÀûÀÌ°í ½Ç¿ëÀûÀÎ ¿¹Á¦¸¦ ¹ÙÅÁÀ¸·Î ¼³¸íÇÑ´Ù. ±×¸®°í ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë¸¸À¸·Îµµ µµ¸ÞÀÎ ÁÖµµ ¼³°èÀÇ °æÇèÀÌ ¾ø´Â µ¶ÀÚ±îÁö ±íÀÌ ÀÖ´Â ÀÌÇØ¸¦ ¾òÀ» ¼ö ÀÖµµ·Ï °³³äÀûÀ¸·Îµµ Ãæ½ÇÇÏ´Ù. ¿¡¹Ý½ºÀÇ Ã¥¿¡¼± ´Ù·çÁö ¸øÇß´ø CQRS³ª À̺¥Æ® ¼Ò½Ì µîÀÇ »õ·Î¿î ÁÖÁ¦¸¦ ÇÔ²² ¼³¸íÇϰí ÀÖÀ¸¸ç ½ºÇÁ¸µ, REST, NoSQL, µ¥ÀÌÅÍ ±×¸®µå µî°ú °°Àº ½Ç¿ëÀû ±â¼úÀ» ¹Ý¿µÇØ ¿¹Á¦¸¦ ±¸¼ºÇß´Ù.
ÀÌ Ã¥À» ÀÐ°í ³ª¸é, µµ¸ÞÀÎ ÁÖµµ ¼³°è¸¦ ÇöÀç ÁøÇà ÁßÀÎ ÇÁ·ÎÁ§Æ®¿¡ ¹Ù·Î Àû¿ëÇÒ Áغñ°¡ µÇ¾úÀ½À» ±ú´Ý°Ô µÉ °ÍÀÌ´Ù. µµ¸ÞÀÎ ÁÖµµ ¼³°èÀÇ º¹ÀâÇÏ°í Æø³ÐÀº ÁÖÁ¦¿¡ ´ëÇØ À̷аú ½ÇÁ¦¸¦ ¹¾îÁØ ÀÌ Ã¥Àº µ¶ÀÚ°¡ µµ¸ÞÀÎ ÁÖµµ ¼³°èÀÇ ¸ðµç Áß¿ä °³³äÀ» ÀÚ½ÅÀÇ ÇÁ·ÎÁ§Æ®¿¡ Àû¿ëÇÒ ¼ö ÀÖ°Ô ¸¸µé¾îÁÙ °ÍÀ̶ó°í È®½ÅÇÑ´Ù.
-
-
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)À¸·Î ÀúÀåÇϱâ
ÁýÁßµÈ ¾Ö±×¸®°ÔÀÕ
Àб⠸𵨠Åõ¿µ
¾Ö±×¸®°ÔÀÕ ¼³°è¿Í ÇÔ²² »ç¿ëÇϱâ
À̺¥Æ® °È
Áö¿ø µµ±¸¿Í ÆÐÅÏ
__À̺¥Æ® Á÷·Äȱâ
__À̺¥Æ® ºÒº¯¼º
__°ª °´Ã¼
°è¾à »ý¼º
´ÜÀ§ Å×½ºÆ®¿Í ¸í¼¼
ÇÔ¼öÇü ¾ð¾î¿¡¼ÀÇ À̺¥Æ® ¼Ò½Ì
Âü°í ¹®Çå
-
-
 |
¹Ý ¹ö³í [Àú]
|
 |
-
¹Ý ¹ö³í(Vaughn Vernon)Àº ¼ÒÇÁÆ®¿þ¾î µðÀÚÀΰú °³¹ß, ¾ÆÅ°ÅØÃ³¿¡¼ 25³â ÀÌ»óÀÇ °æ·ÂÀ» ½×¾Æ¿Â ¼÷·ÃµÈ ¼ÒÇÁÆ®¿þ¾î ÀåÀÎÀÌ´Ù. Çõ½ÅÀûÀÎ ¹æ¹ýÀ» »ç¿ëÇØ ¼ÒÇÁÆ®¿þ¾îÀÇ µðÀÚÀΰú ±¸ÇöÀ» ´Ü¼øÈÇÒ ¼ö ÀÖ´Â ¸®´õ´Ù. 1980³â´ëºÎÅÍ °´Ã¼ÁöÇâ ¾ð¾î¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇß°í, 1990³â´ë Ãʱ⠽º¸ôÅå µµ¸ÞÀÎ ¸ðµ¨¸µºÎÅÍ µµ¸ÞÀÎ ÁÖµµ ¼³°èÀÇ °³³äÀ» Àû¿ëÇϱ⠽ÃÀÛÇß´Ù. ³ÐÀº ºñÁî´Ï½º µµ¸ÞÀο¡ °ÉÃÄ °æÇèÀ» ½×¾Ò°í, ÀÌ·± µµ¸ÞÀο¡´Â ¿ìÁÖÇ×°ø, ȯ°æ, Áö¸®Á¤º¸, º¸Çè, ÀÇ·á, Åë½Å µîÀÌ Æ÷ÇԵȴÙ. ¶ÇÇÑ Àç»ç¿ë °¡´ÉÇÑ ÇÁ·¡ÀÓ¿öÅ©³ª ¶óÀ̺귯¸®¸¦ ¸¸µé°í °³¹ßÀ» °¡¼Ó½ÃŰ´Â µµ±¸¸¦ ±¸ÇöÇÏ´Â µîÀÇ ±â¼úÀû ³ë·ÂÀ» °è¼ÓÇØ¿Ô´Ù. ±¹Á¦ÀûÀÎ ÄÁ¼³ÆÃÀ̳ª °¿¬À» ÁøÇàÇØ¿Ô°í, ¿©·¯ ´ë·ú¿¡¼ µµ¸ÞÀÎ ÁÖµµ ¼³°èÀÇ ±¸Çö¿¡ °üÇÑ ¼ö¾÷À» °³¼³Çß´Ù. www.VaughnVernon.co¿¡¼ ±ÙȲÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
-
 |
À±Ã¢¼®, Ȳ¿¹Áø [Àú]
|
 |
-
-
-
Àüü 0°³ÀÇ ±¸¸ÅÈıⰡ ÀÖ½À´Ï´Ù.

 |
ÀÎÅÍÆÄÅ©µµ¼´Â °í°´´ÔÀÇ ´Ü¼ø º¯½É¿¡ ÀÇÇÑ ±³È¯°ú ¹Ýǰ¿¡ µå´Â ºñ¿ëÀº °í°´´ÔÀÌ ÁöºÒÄÉ µË´Ï´Ù.
´Ü, »óǰÀ̳ª ¼ºñ½º ÀÚüÀÇ ÇÏÀÚ·Î ÀÎÇÑ ±³È¯ ¹× ¹ÝǰÀº ¹«·á·Î ¹Ýǰ µË´Ï´Ù. |
|
±³È¯ ¹× ¹ÝǰÀÌ °¡´ÉÇÑ °æ¿ì |
»óǰÀ» °ø±Þ ¹ÞÀº ³¯·ÎºÎÅÍ 7ÀÏÀ̳» °¡´É
°ø±Þ¹ÞÀ¸½Å »óǰÀÇ ³»¿ëÀÌ Ç¥½Ã, ±¤°í ³»¿ë°ú ´Ù¸£°Å³ª ´Ù¸£°Ô ÀÌÇàµÈ °æ¿ì¿¡´Â °ø±Þ¹ÞÀº ³¯·ÎºÎÅÍ 3°³¿ù À̳», ȤÀº ±×»ç½ÇÀ» ¾Ë°Ô µÈ ³¯ ¶Ç´Â ¾Ë ¼ö ÀÖ¾ú´ø ³¯·ÎºÎÅÍ 30ÀÏ À̳»
»óǰ¿¡ ¾Æ¹«·± ÇÏÀÚ°¡ ¾ø´Â °æ¿ì ¼ÒºñÀÚÀÇ °í°´º¯½É¿¡ ÀÇÇÑ ±³È¯Àº »óǰÀÇ Æ÷Àå»óÅ µîÀÌ ÀüÇô ¼Õ»óµÇÁö ¾ÊÀº °æ¿ì¿¡ ÇÑÇÏ¿© °¡´É |
|
±³È¯ ¹× ¹ÝǰÀÌ ºÒ°¡´ÉÇÑ °æ¿ì |
±¸¸ÅÈ®Á¤ ÀÌÈÄ(¿ÀǸ¶ÄÏ»óǰ¿¡ ÇÑÇÔ)
°í°´´ÔÀÇ Ã¥ÀÓ ÀÖ´Â »çÀ¯·Î »óǰ µîÀÌ ¸ê½Ç ¶Ç´Â ÈÑ¼ÕµÈ °æ¿ì
(´Ü, »óǰÀÇ ³»¿ëÀ» È®ÀÎÇϱâ À§ÇÏ¿© Æ÷Àå µîÀ» ÈѼÕÇÑ °æ¿ì´Â Á¦¿Ü)
½Ã°£ÀÌ Áö³²¿¡ µû¶ó ÀçÆÇ¸Å°¡ °ï¶õÇÒ Á¤µµ·Î ¹°Ç°ÀÇ °¡Ä¡°¡ ¶³¾îÁø °æ¿ì
Æ÷Àå °³ºÀµÇ¾î »óǰ °¡Ä¡°¡ ÈÑ¼ÕµÈ °æ¿ì |
|
´Ù¹è¼ÛÁöÀÇ °æ¿ì ¹Ýǰ ȯºÒ |
´Ù¹è¼ÛÁöÀÇ °æ¿ì ´Ù¸¥ Áö¿ªÀÇ ¹ÝǰÀ» µ¿½Ã¿¡ ÁøÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
1°³ Áö¿ªÀÇ ¹ÝǰÀÌ ¿Ï·áµÈ ÈÄ ´Ù¸¥ Áö¿ª ¹ÝǰÀ» ÁøÇàÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ÀÌÁ¡ ¾çÇØÇØ Áֽñ⠹ٶø´Ï´Ù. |
|
Áß°í»óǰÀÇ ±³È¯ |
Áß°í»óǰÀº Á¦ÇÑµÈ Àç°í ³»¿¡¼ ÆÇ¸Å°¡ ÀÌ·ç¾îÁö¹Ç·Î, ±³È¯Àº ºÒ°¡´ÉÇÕ´Ï´Ù. |
|
¿ÀǸ¶ÄÏ »óǰÀÇ È¯ºÒ |
¿ÀǸ¶ÄÏ»óǰ¿¡ ´ëÇÑ Ã¥ÀÓÀº ¿øÄ¢ÀûÀ¸·Î ¾÷ü¿¡°Ô ÀÖÀ¸¹Ç·Î, ±³È¯/¹Ýǰ Á¢¼ö½Ã ¹Ýµå½Ã ÆÇ¸ÅÀÚ¿Í ÇùÀÇ ÈÄ ¹Ýǰ Á¢¼ö¸¦ ÇϼžßÇϸç, ¹ÝǰÁ¢¼ö ¾øÀÌ ¹Ý¼ÛÇϰųª, ¿ìÆíÀ¸·Î º¸³¾ °æ¿ì »óǰ È®ÀÎÀÌ ¾î·Á¿ö ȯºÒÀÌ ºÒ°¡´ÉÇÒ ¼ö ÀÖÀ¸´Ï À¯ÀÇÇϽñ⠹ٶø´Ï´Ù. |
|
|
 |
¹è¼Û¿¹Á¤ÀÏ ¾È³» |
ÀÎÅÍÆÄÅ© µµ¼´Â ¸ðµç »óǰ¿¡ ´ëÇØ ¹è¼Û¿Ï·á¿¹Á¤ÀÏÀ» À¥»çÀÌÆ®¿¡ Ç¥½ÃÇϰí ÀÖ½À´Ï´Ù.
|
<ÀÎÅÍÆÄÅ© Á÷¹è¼Û »óǰ> |
»óǰÀº ¿ù~Åä¿äÀÏ ¿ÀÀü 10½Ã ÀÌÀü ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ´çÀÏ Ãâ°í/´çÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óǰÀÔ´Ï´Ù. |
»óǰÀº ¼¿ïÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀº ´çÀÏ Ãâ°í/ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇϸç,
¼¿ï¿ÜÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀÇ °æ¿ì´Â ¿ÀÈÄ 6½Ã±îÁö ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óǰÀÔ´Ï´Ù.
(´Ü, ¿ù¿äÀÏÀº 12½Ã±îÁö ÁÖ¹®¿¡ ÇÑÇÔ)
|
»óǰÀº, ÀÔ°í¿¹Á¤ÀÏ(Á¦Ç°Ãâ½ÃÀÏ)+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù. |
~
»óǰÀº À¯ÅëÆ¯¼º»ó ÀÎÅÍÆÄÅ©¿¡¼ Àç°í¸¦ º¸À¯ÇÏÁö ¾ÊÀº »óǰÀ¸·Î ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø±âÁØÃâ°íÀÏ:ÀÎÅÍÆÄÅ©°¡ »óǰÀ» ¼ö±ÞÇÏ¿© ¹°·ùâ°í¿¡¼ Æ÷Àå/Ãâ°íÇϱâ±îÁö ¼Ò¿äµÇ´Â ½Ã°£
|
|
<¾÷ü Á÷Á¢¹è¼Û/¿ÀǸ¶ÄÏ »óǰ> |
~
»óǰÀº ¾÷ü°¡ ÁÖ¹®À» È®ÀÎÇϰí, Ãâ°íÇϱâ±îÁö °É¸®´Â ½Ã°£ÀÔ´Ï´Ù. ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(2ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø5ÀÏÀ̳» Ãâ°í°¡ ½ÃÀÛµÇÁö ¾ÊÀ»½Ã, ¿ÀǸ¶ÄÏ »óǰÀº ÀÚµ¿À¸·Î ÁÖ¹®ÀÌ Ãë¼ÒµÇ¸ç, °í°´´Ô²² ǰÀýº¸»ó±ÝÀ» Áö±ÞÇØ µå¸³´Ï´Ù.
|
|
|
¹è¼Ûºñ ¾È³» |
µµ¼(Áß°íµµ¼ Æ÷ÇÔ)¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
À½¹Ý/DVD¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
ÀâÁö/¸¸È/±âÇÁÆ®¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í À½¹Ý/DVD¸¦ ÇÔ²² ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø 1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í ÀâÁö/¸¸È/±âÇÁÆ®/Áß°íÁ÷¹è¼Û»óǰÀ» ÇÔ²² ±¸¸ÅÇϽøé : 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
¾÷üÁ÷Á¢¹è¼Û»óǰÀ» ±¸¸Å½Ã : ¾÷üº°·Î »óÀÌÇÑ ¹è¼Ûºñ Àû¿ë
* ¼¼Æ®»óǰÀÇ °æ¿ì ºÎºÐÃë¼Ò ½Ã Ãß°¡ ¹è¼Ûºñ°¡ ºÎ°úµÉ ¼ö ÀÖ½À´Ï´Ù.
* ºÏīƮ¿¡¼ ¹è¼Ûºñ¾ø¾Ö±â ¹öưÀ» Ŭ¸¯Çϼż, µ¿ÀϾ÷ü»óǰÀ» Á¶±Ý ´õ ±¸¸ÅÇϽøé, ¹è¼Ûºñ¸¦ Àý¾àÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
|
|
ÇØ¿Ü¹è¼Û ¾È³» |
ÀÎÅÍÆÄÅ©µµ¼¿¡¼´Â ±¹³»¿¡¼ ÁÖ¹®ÇϽðųª ÇØ¿Ü¿¡¼ ÁÖ¹®ÇÏ¿© ÇØ¿Ü·Î ¹è¼ÛÀ» ¿øÇÏ½Ç °æ¿ì DHL°ú Ư¾àÀ¸·Î Ã¥Á¤µÈ ¿ä±ÝÇ¥¿¡
ÀÇÇØ °³ÀÎÀÌ ÀÌ¿ëÇÏ´Â °æ¿ìº¸´Ù ¹è¼Û¿ä±ÝÀ» Å©°Ô ³·Ã߸ç DHL(www.dhl.co.kr)·Î ÇØ¿Ü¹è¼Û ¼ºñ½º¸¦ Á¦°øÇÕ´Ï´Ù.
ÇØ¿Ü¹è¼ÛÀº µµ¼/CD/DVD »óǰ¿¡ ÇÑÇØ ¼ºñ½ºÇϰí ÀÖÀ¸¸ç, ´Ù¸¥ »óǰÀ» ºÏīƮ¿¡ ÇÔ²² ´ãÀ¸½Ç °æ¿ì ÇØ¿Ü¹è¼ÛÀÌ ºÒ°¡ÇÕ´Ï´Ù.
ÇØ¿ÜÁÖ¹®¹è¼Û ¼ºñ½º´Â ÀÎÅÍÆÄÅ© µµ¼ ȸ¿ø °¡ÀÔÀ» Çϼž߸¸ ½Åû °¡´ÉÇÕ´Ï´Ù. |
|
¾Ë¾ÆµÎ¼¼¿ä!!! |
µµ¸Å»ó ¹× Á¦ÀÛ»ç »çÁ¤¿¡ µû¶ó ǰÀý/ÀýÆÇ µîÀÇ »çÀ¯·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
¿ÀǸ¶ÄϾ÷üÀÇ ¹è¼ÛÁö¿¬½Ã ÁÖ¹®ÀÌ ÀÚµ¿À¸·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
Ãâ°í°¡´É ½Ã°£ÀÌ ¼·Î ´Ù¸¥ »óǰÀ» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.
À¯ÅëÀÇ Æ¯¼º»ó Ãâ°í±â°£Àº ¿¹Á¤º¸´Ù ¾Õ´ç°ÜÁö°Å³ª ´ÊÃçÁú ¼ö ÀÖ½À´Ï´Ù.
Åùè»ç ¹è¼ÛÀÏÀÎ ¼¿ï ¹× ¼öµµ±ÇÀº 1~2ÀÏ, Áö¹æÀº 2~3ÀÏ, µµ¼, »ê°£, ±ººÎ´ë´Â 3ÀÏ ÀÌ»óÀÇ ½Ã°£ÀÌ ¼Ò¿äµË´Ï´Ù. |
|
 |
|
|