[Áöµð³ÝÄÚ¸®¾Æ]ÀÌÁ¦ ±âÃʸ¦ ÀÍÈ÷°í ½º½º·Î °³¹ß ȯ°æÀ» °®Ãâ ÁÙµµ ¾Ë°Ô µÇ¾úÀ¸´Ï ¾îµð °¡¼ ÇÁ·Î±×·¡¸Ó¶ó°í ¸»ÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. ´ÙÀ½Àº »ç¶÷µéÀ» À̲ø°í ³ª°¥ ¼ö ÀÖ´Â ´É·ÂÀ» °®Ãß´Â °ÍÀÔ´Ï´Ù.
ÆÐÅϰú ÇÁ·¹ÀÓ¿öÅ©, ´Ù¼Ò ¾î·Á¿ö º¸ÀÏ ¼ö ÀÖ´Â ÁÖÁ¦ÀÌÁö¸¸ ÇÁ·Î±×·¡¸Ó·Î½á ÇÑ ´Ü°è °Åµì³ª±â À§ÇØ °ÅÃÄ¾ß ÇÒ °úÁ¦ÀÔ´Ï´Ù. ÀÌÁ¦±îÁö ±âº»±â·Î¸¸ ½Î¿ö¿Ô´Ù¸é ÀÌÁ¦ºÎÅÍ´Â Á» °í³À̵µÀÇ ±â¼ú°ú »õ·Î¿î ¹«±âµéÀ» ½á º¾½Ã´Ù. Áö±ÝºÎÅͰ¡ Á¤¸» Áñ°Å¿î ÇÁ·Î±×·¡¹ÖÀÇ ¼¼°è·Î µé¾î°¡´Â ±æÀÔ´Ï´Ù.
Å»¹«µå¿¡´Â ¹è°íÇ ÀڽĿ¡°Ô °í±â¸¦ Àâ¾ÆÁֱ⺸´Ù °í±â¸¦ Àâ´Â ¹æ¹ýÀ» °¡¸£ÃÄÁÖ¶ó´Â ¸»ÀÌ ÀÖ½À´Ï´Ù. ÁÁÀº ÇÁ·Î±×·¥À» °í±â¶ó°í º»´Ù¸é ÁÁÀº ÇÁ·Î±×·¥À» ¸¸µé¾îÁÖ´Â °Íº¸´Ù ÁÁÀº ÇÁ·Î±×·¥À» ¸¸µå´Â ¹æ¹ýÀ» °¡¸£ÃÄ¾ß ÇÑ´Ù´Â ¸»ÀÌ µÇ°ÚÁÒ. ÇÏÁö¸¸ ±×·¯±â¿£ ¸¶¼Ò ÁִϾîÀÇ Áö¸éÀº ³Ë³ËÁö ¾Ê½À´Ï´Ù. »ç½Ç ÃʱÞÀÚ´Â ÀâÁö¿¡¼ »õ·Î¿î °ÍÀ» ÀÍÈ÷·Á Çϱ⺸´Ù ÀÔ¹®¼¿¡¼ ¹è¿ö¾ß ÇÕ´Ï´Ù.
±×·¸´Ù¸é ÀÌ ÇÑÁ¤µÈ Áö¸é¿¡¼ ÇÒ ¼ö ÀÖ´Â ÃÖ¼±Àº ÀÚ¼¼ÇÑ ³»¿ëÀ» ±â¼úÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¹«¾ùÀ» °øºÎÇØ¾ß ÇÏ´ÂÁö, ¾îµð¼ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´ÂÁö, ¿äÁò Ãß¼¼´Â ¾î¶²Áö¸¦ ¾Ë·ÁÁÖ´Â °ÍÀ̰ÚÁö¿ä. ¸»ÇÏÀÚ¸é ÁÁÀº ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï¶ó ±×°ÍÀ» ¸¸µå´Â ¹æ¹ýÀ» °í±â·Î º¸°í À̰ÍÀ» Àâ´Â ¹æ¹ýÀ» Á¦½ÃÇϰڴٴ ¶æÀÔ´Ï´Ù.
ÇÊÀÚÀÇ ÂªÀº ¼¼ ¹øÀÇ ¿¬Àç¿¡´Â ¸ðµÎ ÀÌ·± »ý°¢ÀÌ ´ã°Ü ÀÖ°í ±×·¡¼ ±â¼úÀûÀÎ »ó¼¼ ³»¿ë ¼³¸íº¸´Ù´Â ¹«¾ùÀ» °øºÎÇØ¾ß Çϴ°¡¿¡ ´ëÇÑ ³»¿ë¿¡ Ä¡ÁßÇß½À´Ï´Ù. À̹ø ±Û ¿ª½Ã µðÀÚÀÎ ÆÐÅÏ, ÇÁ·¹ÀÓ¿öÅ©, XP ¼¼ °¡Áö¸¦ ´Ù·ç°í ÀÖÁö¸¸ °¢°¢ÀÇ »ó¼¼ÇÑ ¼³¸íº¸´Ù´Â ÀÌ·± °³³äµéÀ» ¾î¶»°Ô ÀÌÇØÇϰí Ȱ¿ëÇØ¾ß Çϴ°¡¿¡ ÃÊÁ¡À» ¸ÂÃâ °ÍÀÔ´Ï´Ù.
µðÀÚÀÎ ÆÐÅϰú ÇÁ·¹ÀÓ¿öÅ©´Â ¸ÕÀú ¿ë¾î¿¡ ´ëÇÑ ¼³¸íºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. ±×¸®°í ±×°ÍµéÀÇ ¸ñÀû°ú °¡Ä¡¿¡ ´ëÇØ »ìÆìº¸°í ¸î °¡Áö ¿¹¸¦ »ìÆìº¼ °ÍÀÔ´Ï´Ù. XP´Â Á¦¸ñ¿¡ Æ÷ÇÔ½Ã۱ä ÇßÁö¸¸ À̰ÍÀº µðÀÚÀÎ ÆÐÅϰú ÇÁ·¹ÀÓ¿öÅ©¸¦ XPÀÇ ½Ã°¢¿¡¼ ¹Ù¶óº»´Ù´Â ÀǹÌÀÌ°í °³º°ÀûÀÎ ÁÖÁ¦·Î´Â ´Ù·çÁö ¾Ê½À´Ï´Ù.
¿ë¾î·Î¼ÀÇ µðÀÚÀÎ ÆÐÅÏ
µðÀÚÀÎ ÆÐÅÏÀ̶õ ÇÁ·Î±×·¡¹Ö¿¡¼ ¹ß»ýÇÏ´Â ¿©·¯ °¡Áö ¹®Á¦ ¿µ¿ª¿¡ ´ëÇÑ ÇØ°á ¹æ¹ýµéÀ» ¸ð¾Æ¼ Á¤¸®ÇسõÀº °ÍÀÔ´Ï´Ù. GoF(Gang of Four)°¡ ¿©·¯ °¡Áö ÆÐÅϵéÀ» ¸ð¾Æ ¡ºµðÀÚÀÎ ÆÐÅÏ¡»À̶ó´Â Ã¥À» ³»¸é¼ºÎÅÍ µðÀÚÀÎ ÆÐÅÏÀ̶ó´Â ¿ë¾î°¡ ÀϹÝȵDZ⠽ÃÀÛÇß½À´Ï´Ù. GoFÀÇ µðÀÚÀÎ ÆÐÅÏ Áß Çϳª¸¦ ¿¹·Î µé¸é µ¥ÄÚ·¹ÀÌÅÍ(Decorator)¶ó´Â ÆÐÅÏÀÌ ÀÖ½À´Ï´Ù. ·¦ÆÛ(Wrapper)¶ó´Â ¸»·Îµµ ¾²À̴µ¥ À̰ÍÀº ¾î¶² °´Ã¼¿¡ ±âº»ÀûÀÎ µ¿ÀÛÀº À¯ÁöÇÏ¸é¼ ºÎ°¡ÀûÀÎ ±â´ÉÀ» ³Ö°í ½ÍÀ» ¶§ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ÆÐÅÏÀÇ °£´ÜÇÑ ¿¹·Î JDBC¿¡¼ ¼öÇàÇÑ Äõ¸®¸¦ ·Î±×·Î ³²±â°í ½ÍÀ» ¶§ ·Î±ëÀ» À§ÇÑ µ¥ÄÚ·¹ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸Åë JDBC¿¡¼´Â Connection °´Ã¼¸¦ ÀÌ¿ëÇØ¼ Statement °´Ã¼¸¦ »ý¼ºÇϰí À̰ÍÀ» ÀÌ¿ëÇØ¼ Äõ¸®¸¦ ¼öÇàÇÏ°Ô µÇ´Âµ¥ ÀÌ ¶§ Statement ´ë½Å LoggableStatement¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
LoggableStatement´Â Statement¸¦ »ó¼ÓÇÏ¸ç »ý¼ºÀÚ¿¡¼ Connection °´Ã¼°¡ ¸¸µç Statement °´Ã¼¸¦ ¹Þ¾Æ¼ ¸â¹ö·Î °®°í ÀÖ½À´Ï´Ù. ±×¸®°í Äõ¸® ¿äûÀÌ ¿À¸é ¸ÕÀú ·Î±ëÀ» ÇÏ°í ½ÇÁ¦ Äõ¸®´Â »ý¼ºÀÚ¿¡¼ ¹ÞÀº Statement °´Ã¼¿¡ À§ÀÓÇÕ´Ï´Ù. ÀÌ·± ¹æ½ÄÀ¸·Î StatementÀÇ µ¿ÀÛÀº ±×´ë·Î À¯ÁöÇÏ¸é¼ ·Î±×¸¦ ³²±â´Â ±â´ÉÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ·± °ÍÀÌ µðÀÚÀÎ ÆÐÅÏÀÔ´Ï´Ù. ¼öÇÐ °ø½Äó·³ °°Àº Á¾·ùÀÇ ¹®Á¦µé¿¡ ´ëÇØ ÀÌ¹Ì Á¤¸®µÈ ÇØ°áÃ¥À» ÀÌ¿ëÇÔÀ¸·Î½á ¸Å¹ø °°Àº ¹®Á¦¸¦ ÇØ°áÇϴµ¥ Áߺ¹À¸·Î ÅõÀڵǴ ³ë·ÂÀ» ÁÙÀÌ·Á´Â °ÍÀÌÁÒ.
ÇÏÁö¸¸ µðÀÚÀÎ ÆÐÅÏÀ» ±×´ë·Î »ç¿ëÇÏ´Â °ÍÀÌ ÁÁÀº °Í¸¸Àº ¾Æ´Õ´Ï´Ù. ¿À¿ëÀÇ À§Ç輺ÀÌ Å©±â ¶§¹®ÀÔ´Ï´Ù. »ç½Ç ¾î¶² ¹®Á¦ »óȲ¿¡ ¾î¶² ÆÐÅÏÀ» Àû¿ëÇÏ¸é µÇ´Â°¡¸¦ ÆÇ´ÜÇϱâ¶õ ½¬¿î ÀÏÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ÇÊ¿äÇÏÁöµµ ¾ÊÀº º¹ÀâÇÑ ÆÐÅÏÀ» µµÀÔÇÏ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù. ±× ¶§¹®¿¡ °£´ÜÇÏ°Ô ÇØ°áµÉ ¹®Á¦°¡ ´õ º¹ÀâÇØÁö±âµµ ÇÏÁÒ. ±×·¡¼ ¾ÈƼ ÆÐÅÏ °°Àº À̾߱⵵ ³ª¿À°í ÀÖ½À´Ï´Ù. XP(eXtreme Programming)¿¡¼µµ µðÀÚÀÎ ÆÐÅÏÀ» ÀǽÄÇÏÁö ¸»¶ó°í ÇÕ´Ï´Ù.
±×º¸´Ù ¿øÇϴ´ë·Î µ¿ÀÛÇÒ ¼ö ÀÖ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀ¸·Î ÄÚµùÀ» ÇÏ´Ù°¡ Áߺ¹ÀÌ »ý±â°Å³ª Äڵ尡 ÁöÀúºÐÇØÁö¸é ¸®ÆÑÅ丵À» ÇÕ´Ï´Ù. ±×·¯¸é¼ ÀÚ¿¬½º·´°Ô Äڵ尡 µðÀÚÀÎ ÆÐÅÏÀÇ ¸ð½ÀÀ» °®Ãß¾î ³ª°¡´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÕ´Ï´Ù.
ÀÌó·³ µðÀÚÀÎ ÆÐÅÏÀÇ ¿ø·¡ ¸ñÀûÀº ¹®Á¦ ÇØ°á ½Ã°£À» ´ÜÃà½ÃŰ´Â °ÍÀ̾úÁö¸¸ ¹®Á¦ ¿µ¿ª°ú ÆÐÅÏÀ» Á¤È®È÷ ¸ÅνÃŰ±â ¾î·Æ°í Over-EngineeringÀÌ ³ª¿À´Â °æ¿ì°¡ ¸¹±â ¶§¹®¿¡ ½ÇÁ¦ °³¹ß¿¡¼´Â µðÀÚÀÎ ÆÐÅÏÀ» Á÷Á¢ÀûÀ¸·Î »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
µðÀÚÀÎ ÆÐÅÏÀÇ °¡Ä¡´Â ±×º¸´Ùµµ ÀÇ»ç¼ÒÅë ºñ¿ëÀ» ÁÙ¿©ÁÙ ¼ö ÀÖ´Ù´Â µ¥ ÀÖ½À´Ï´Ù. ¼·Î°¡ ÆÐÅÏ¿¡ ´ëÇØ Àß ¾Ë°í ÀÖ´Ù¸é º¹ÀâÇÑ ¼³¸í ¾øÀ̵µ ¾ÆÁÖ °£´ÜÇÏ°Ô ÀÇ»ç¼ÒÅëÀÌ ÀÌ·ç¾îÁú ¼ö ÀÖÁÒ. À̸¦Å׸é ÀÌ ¿¹¸¦ ¼³¸íÇϱâ À§ÇØ º¹ÀâÇÏ°Ô LoggableStatementÀÇ ±¸Á¶¸¦ ¼³¸íÇÏ´Â °Í ´ë½Å¿¡ ¡®ÀÌ LoggableStatement Ŭ·¡½º´Â StatementÀÇ µ¥ÄÚ·¹ÀÌÅÍ·Î ·Î±ëÀ» Ãß°¡·Î ÇÏ°Ô µÇ¾î À־¶ó°í ¸»ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. Áï ÆÐÅÏÀº ÇØ°áÃ¥À¸·Î¼º¸´Ù ÀÇ»ç¼ÒÅëÀ» À§ÇÑ ¿ë¾î·Î¼ Ȱ¿ëÇÏ´Â °Å¶ó°í »ý°¢ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
ÀÚ¹ÙºóÁîÀÇ ÇØ¾Ç
ÆÐÅÏ ¿À¿ëÀÇ ÇÑ ¿¹·Î ÀÚ¹ÙºóÁ µé ¼ö ÀÖ½À´Ï´Ù. ¡®Çؾǡ¯À̶ó´Â Ç¥Çö±îÁö ½á°¡¸é¼ ÀÚ¹ÙºóÁ ¾ð±ÞÇÑ °Í¿¡ ´ëÇØ ³î¶ó´Â »ç¶÷µµ ¸¹À» °ÍÀÔ´Ï´Ù. ÀÚ¹Ù¸¦ ¹è¿ì¸é¼ º¸Åë ÀÚ¹ÙºóÁîÀÇ ÀåÁ¡¿¡ ´ëÇÑ À̾߱⸦ ¸¹ÀÌ µè°Ô µÇ´Ï±î¿ä. ÇÏÁö¸¸ Á¡Á¡ ÀÚ¹ÙºóÁ ÇØ·Î¿î °ÍÀ¸·Î ÀνÄÇÏ´Â »ç¶÷µéÀÌ ¸¹¾ÆÁö°í ÀÖ½À´Ï´Ù. ¸ÕÀú ÀÚ¹ÙºóÁî°¡ ¹«¾ùÀÎÁöºÎÅÍ ´Ù½Ã »ìÆìº¾½Ã´Ù.
ÀÚ¹ÙºóÁî´Â ¿ø·¡ ÄÄÆ÷³ÍÆ® ¾ÆÅ°ÅØÃ³¸¦ ÀÚ¹Ù¿¡¼ ±¸ÇöÇϱâ À§ÇØ µµÀÔµÈ ±â¼úÀÔ´Ï´Ù. °´Ã¼ÀÇ ÇÁ·ÎÆÛƼÀÇ Á¶ÀÛ ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÏ¿© Àç»ç¿ë¼ºÀÌ ³ô°í À¯¿¬ÇÑ ÄÄÆ÷³ÍÆ®¸¦ ¸¸µå´Â °ÍÀÌ ¸ñÀûÀÌÁÒ. ÀÚ¹ÙºóÁîÀÇ Æ¯Â¡À¸·Î ¾ð±ÞµÇ´Â °ÍÀÌ ¿©·¯ °¡Áö°¡ ÀÖÁö¸¸ ´Ù¸¥ ÀÚ¹Ù °´Ã¼¿Í ±¸º°µÇ´Â Ư¡Àº ÇÁ·ÎÆÛƼ °ü¸® ¹æ½ÄÀÔ´Ï´Ù. ÇÁ·ÎÆÛƼ·Î private Çʵ带 µÎ°í ±× Çʵ忡 ´ëÇÑ public getter/setter¸¦ ¸¸µé¾î¼ À̸¦ ÀÌ¿ëÇØ¼ ÇÁ·ÎÆÛƼ¿¡ Á¢±ÙÀ» ÇÕ´Ï´Ù.
»ç½Ç À̰ÍÀº ÀϹÝÀûÀÎ Çʵå ÀÎĸ½¶·¹À̼Ç(field encapsulation)°ú Å©°Ô ´Ù¸£Áö ¾Ê½À´Ï´Ù. ´Ù¸¥ Á¡Àº ÀÌ ÇÁ·ÎÆÛƼÀÇ À̸§°ú getter/setterÀÇ À̸§¿¡ ³×ÀÌ¹Ö ·êÀ» ºÎ¿©Çؼ ºóÁî API¸¦ ÅëÇØ¼ ÇÁ·ÎÆÛƼÀÇ À̸§À¸·Î ÀÌ ÇÁ·ÎÆÛƼ¸¦ Àаųª ¾µ ¼ö ÀÖ´Ù´Â Á¡ÀÔ´Ï´Ù.
¿¹¸¦ µé¾î nameÀ̶ó´Â ÇÁ·ÎÆÛƼ°¡ ÀÖ´Ù¸é getName, setNameÀ̶ó´Â À̸§À¸·Î getter/setter¸¦ ¸¸µé°í ºóÁî API¿¡¼´Â nameÀ̶ó´Â À̸§À¸·Î ÇÁ·ÎÆÛƼ¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, ÀϹÝÀûÀÎ Çʵå ÀÎĸ½¶·¹À̼ÇÀ» Çϸé ÇÁ·ÎÆÛƼ¿¡ Á¢±ÙÇϱâ À§ÇØ ¸Þ½îµå¸íÀ» Äڵ忡 Á÷Á¢ ½á¾ß ÇÏÁö¸¸ ºóÁî ±Ô¾à¿¡ ¸Â°Ô getter/setter¸¦ ¸¸µé°í ºóÁî API¸¦ ÀÌ¿ëÇϸé StringÀ¸·Î ÁÖ¾îÁø ÇÁ·ÎÆÛƼ¿¡ Á¢±ÙÇÏ´Â °ÍÀÌ °¡´ÉÇØÁø´Ù´Â °ÍÀÔ´Ï´Ù.
ÀÌ Á¡À» ÀÌ¿ëÇÏ¸é º¹ÀâÇÑ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ÀÚ¹ÙºóÁî °´Ã¼ÀÇ ÇÁ·ÎÆÛƼ¸¦ µ¿ÀûÀ¸·Î ½±°Ô Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼ Á¤º¸ ÀºÆó(information hiding, data hiding)¿Í µ¿ÀûÀÎ ÇÁ·ÎÆÛƼ Á¢±ÙÀÇ µÎ ¸¶¸® Åä³¢¸¦ µ¿½Ã¿¡ Àâ´Â °ÍÀÌ ÀÚ¹ÙºóÁîÀÇ ¸ñÀûÀÔ´Ï´Ù.
±×·¯¸é ¹«¾ùÀÌ ¹®Á¦Àϱî¿ä? ¿ì¼± ù ¹øÂ° ¸ñÀûÀÎ Á¤º¸ ÀºÆó°¡ Á¦´ë·Î µÇÁö ¾Ê½À´Ï´Ù. »ç½Ç Çʵå ÀÎĸ½¶·¹À̼ÇÀº Á¤º¸ ÀºÆó¸¦ À§ÇÑ °ÍÀ̶ó°í ÇÏÁö¸¸ À̰ÍÀº Ç㱸¿¡ ºÒ°úÇÕ´Ï´Ù. ½ÇÁúÀûÀ¸·Î ÇÁ·ÎÆÛƼ¿¡ ´ëÇÑ Á¢±Ù¼ºÀº public field¿Í private field, public getter/setter°¡ ¿ÏÀüÈ÷ µ¿ÀÏÇÕ´Ï´Ù. ¶È°°ÀÌ ÀÐ°í ¾µ ¼ö Àִµ¥ ¹¹°¡ ´Ù¸£°Ú½À´Ï±î. ´ÜÁö Á» ´õ Á¶½É½º·´°Ô ¾²Áö ¾ÊÀ»±î¶ó°í ÃßÃøÇÏ´Â °Í»ÓÀÔ´Ï´Ù. ±×·¡¼ ÀÚ¹ÙºóÁ »ç¿ëÇÒ ¶§ ²À ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¶ó¸é setter´Â ¸¸µéÁö ¾Ê±â¸¦ ±ÇÇϱ⵵ ÇÕ´Ï´Ù.
ÇÏÁö¸¸ ÀϹÝÀûÀÎ Çʵå ÀÎĸ½¶·¹À̼ÇÀ̶ó¸é setter¸¦ ¸¸µéÁö ¸»¶ó´Â Á¶¾ðÀ» ÇÒ ¼ö ÀÖ°ÚÁö¸¸ ÀÚ¹ÙºóÁî´Â ±× ¸ñÀûÀÌ ÇÁ·ÎÆÛƼ¸¦ µ¿ÀûÀ¸·Î Á¶ÀÛÇÏ´Â °ÍÀ̹ǷΠÄÄÆ÷³ÍÆ®·Î¼ÀÇ ¿ªÇÒÀ» Á¦´ë·Î ÇÏ·Á¸é setterµµ ´ç¿¬È÷ ÇÊ¿äÇÕ´Ï´Ù. °á±¹ Çʵå ÀÎĸ½¶·¹À̼ÇÀ¸·Î ÀÎÇØ ÄÚµå´Â ±æ¾îÁ³Áö¸¸ Á¤º¸ ÀºÆó´Â ´Þ¼ºÇÏÁö ¸øÇßÀ¸¹Ç·Î ½ÇÁúÀûÀÎ À̵æÀÌ ¾ø½À´Ï´Ù.
¶Ç ´Ù¸¥ ¹®Á¦´Â ÀÚ¹ÙºóÁîÀÇ ÇѰ迡 °üÇÑ °ÍÀÔ´Ï´Ù. µ¿ÀûÀ¸·Î ÇÁ·ÎÆÛƼÀÇ ³»¿ë¿¡ Á¢±ÙÇÒ ¼ö´Â ÀÖÁö¸¸ ÇÁ·ÎÆÛƼ¸¦ Ãß°¡Çϰųª ¾ø¾Ö´Â Á¤µµÀÇ À¯¿¬¼ºÀº ¼ÒÈÇÒ ¼ö ¾ø½À´Ï´Ù. ¸¹Àº °æ¿ì ÀÚ¹ÙºóÁ µ¥ÀÌÅÍ Àü¼Û °´Ã¼(Data Transfer Object)·Î »ç¿ëÇϴµ¥ ÀÌ·± °æ¿ì´Â ÇÁ·ÎÆÛƼÀÇ ³»¿ë »Ó ¾Æ´Ï¶ó ÇÁ·ÎÆÛƼ Á¾·ù ÀÚü°¡ ÀÚÁÖ º¯ÇÕ´Ï´Ù. ±×·±µ¥ ÀÚ¹ÙºóÁî·Î ¸¸µé°Ô µÇ¸é ÇÁ·ÎÆÛƼ°¡ ´Ã¾î³¯ ¶§¸¶´Ù Çʵå¿Í ¸Þ½îµå¸¦ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù. ±×¸®°í µ¥ÀÌÅÍÀÇ Á¾·ù°¡ ´Þ¶óÁú ¶§¸¶´Ù »õ·Î¿î Ŭ·¡½º¸¦ ¸¸µé¾î¾ß Çϱ¸¿ä. ÀÚ¹Ù Ä÷º¼Ç¿¡ MapÀÌ Àִµ¥ ÀÌ·± ºñÈ¿À²À» °¨´çÇØ¾ß ÇÒ ÀÌÀ¯´Â º°·Î ¾ø½À´Ï´Ù.
Map¿¡¼´Â ÇÁ·ÎÆÛƼ¿¡ µ¿ÀûÀ¸·Î Á¢±ÙÇÏ´Â °ÍÀº ¹°·ÐÀ̰í ÇÁ·ÎÆÛƼ°¡ ÀÚÀ¯·Ó°Ô ´Ã¾î³ª°Å³ª ÁÙ¾îµé ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡ ºóÁî API´Â StringÀ¸·Î ÁÖ¾îÁø ÇÁ·ÎÆÛƼ¸í¿¡ ´ëÇÑ getter/setter¸¦ È£ÃâÇϱâ À§ÇØ ³»ºÎÀûÀ¸·Î IntrospectionÀ̶ó´Â ±â¼úÀ» »ç¿ëÇϴµ¥ À̰ÍÀº ÀÚ¹ÙÀÇ Reflection API¸¦ ÀÌ¿ëÇÕ´Ï´Ù. ¶§¹®¿¡ ¼º´É»ó¿¡¼µµ ÇØ½Ì(Hashing)À» ÀÌ¿ëÇÏ´Â HashMap¿¡ ºñÇØ ³ªÀº °ÍÀÌ ¾ø½À´Ï´Ù.
±×·¡¼ ÀÚ¹ÙºóÁîÀÇ ´ÜÁ¡¿¡ ´ëÇØ ¸¹Àº »ç¶÷µéÀÌ °ø°¨Çϱ⠽ÃÀÛÇß°í ÃÖ±Ù¿¡ µîÀåÇÏ´Â °¢Á¾ ÇÁ·¹ÀÓ¿öÅ©µéµµ ÀÌ·± °æÇâÀ» ¹Ý¿µÇϰí ÀÖ½À´Ï´Ù. ÃʱâÀÇ ÇÁ·¹ÀÓ¿öÅ©µéÀº ÀÚ¹ÙºóÁ Ȱ¿ëÇÏ´Â ±â´ÉµéÀ» Á¦°øÇßÀ¸³ª ÃֽŠÇÁ·¹ÀÓ¿öÅ©µéÀº ÀÚ¹ÙÀÇ Ä÷º¼ÇÀ» Àû±ØÀûÀ¸·Î Ȱ¿ëÇϰí ÀÖ½À´Ï´Ù.
ÀϹÝÀûÀ¸·Î µ¥ÀÌÅÍ Àü¼Û °´Ã¼ÀÇ °æ¿ì´Â MapÀ» ±×³É »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ°í ±× ¿Ü¿¡ º¹ÀâÇÑ ·ÎÁ÷À» ¼öÇàÇÏ´Â °´Ã¼Àε¥ ÇÁ·ÎÆÛƼ¸¦ ¸¹ÀÌ »ç¿ëÇØ¾ß ÇÑ´Ù¸é MapÀ» µ¥ÄÚ·¹ÀÌÅÍ·Î »ç¿ëÇÏ¸é Æí¸®ÇÕ´Ï´Ù. ±×¸®°í ÀϹÝÀûÀ¸·Î Ŭ·¡½º¸¦ ¼³°èÇÒ ¶§ setter´Â µÇµµ·Ï ¸¸µéÁö ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
ÇÁ·¹ÀÓ¿öÅ©ÀÇ °¡Ä¡
ÇÁ·¹ÀÓ¿öÅ©(framework)¶õ ´Ü¾î´Â ¿©·¯ °¡Áö Àǹ̷Π»ç¿ëµÇÁö¸¸ º¸ÅëÀº ¾î¶² ¿µ¿ªÀÇ APIµéÀ» »ç¿ëÇÏ±â Æí¸®ÇÑ ÇüÅ·ΠÆ÷ÀåÇØ³õÀº °ÍÀ» ¸»ÇÕ´Ï´Ù. À̸¦Å׸é ÀÚ¹Ù Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©´Â ÀÚ¹Ù¿¡¼ °¢Á¾ Ä÷º¼ÇÀ» »ç¿ëÇϱ⠽±°Ô ¸ð¾Æ³õÀº °ÍÀ̰í ÀÚÄ«¸£Å¸ ÇÁ·ÎÁ§Æ®ÀÇ BSF(Bean Scripting Framework)´Â ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ÀÚ¹ÙºóÁ ½ºÅ©¸³ÆÃÀ» Çϱ⠽±°Ô ¸¸µç APIÀÇ ÁýÇÕÀÔ´Ï´Ù. ±×¸®°í Áö±Ý ³íÀÇÇÏ·Á´Â À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©´Â À¥¿¡¼ ¼ºí¸´ APIµéÀ» Á» ´õ Æí¸®ÇÏ°í °´Ã¼ÁöÇâÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â °ÍÀÔ´Ï´Ù.
ÇöÀç À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÁÖ·ù´Â ´Ü¿¬ ½ºÆ®·µÃ÷(struts)ÀÔ´Ï´Ù. Àü ¼¼°è ÀÚ¹Ù À¥ °³¹ßÀÚÀÇ 60%°¡ ½ºÆ®·µÃ÷¸¦ »ç¿ëÇϰí ÀÖ´Ù°í ÇÏÁÒ. ÇÏÁö¸¸ ½ºÆ®·µÃ÷°¡ ÀÖÀ½¿¡µµ °è¼ÓÇØ¼ »õ·Î¿î ÇÁ·¹ÀÓ¿öÅ©°¡ µîÀåÇϰí ÀÖ½À´Ï´Ù. ÇöÀç±îÁö °ø°³µÈ ÇÁ·¹ÀÓ¿öÅ©ÀÇ ¼ýÀÚ´Â ÀÌ¹Ì 60°³¸¦ ³Ñ½À´Ï´Ù. ½ºÆ®·µÃ÷¿¡´Â ¾î¶² ºÎÁ·ÇÔÀÌ Àֱ淡, ±×¸®°í ´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©µéÀº ¹¹°¡ ºÎÁ·Çϱ淡 °³¹ßÀÚµéÀÌ »õ·Î¿î ÇÁ·¹ÀÓ¿öÅ©¸¦ °è¼Ó ¸¸µé±î¿ä.
| |
| ½ºÆ®·°Ã³(structure), ¾ÆÅ°ÅØÃ³(architecture), ÇÁ·¹ÀÓ¿öÅ©(framework)¶õ ¿ë¾î´Â ±â¼ú°ú ½Ã´ë°¡ º¯ÇÏ¸é¼ Á¶±Ý¾¿ ±× Àǹ̸¦ ´Þ¸®ÇØ °¡´Â °Í °°½À´Ï´Ù. ½ºÆ®·°Ã³¶ó´Â ¿ë¾î°¡ Tree¿Í °°Àº °èÃþÀûÀΠźźÇÑ ±â¹Ý ±¸Á¶¸¦ ¸»ÇÏ´Â ¹Ý¸é, ÇÁ·¹ÀÓ¿öÅ©´Â ´Ù¼Ò ¼öÆòÀûÀÎ Àǹ̸¦ °¡Áö´Â ÇϺΠ±¸Á¶¸¦ ³ªÅ¸³À´Ï´Ù. ¶ÇÇÑ ¾ÆÅ°ÅØÃ³¶ó´Â °ÍÀº ÀÌ µÎ ºÎºÐÀ» ¸ðµÎ Æ÷ÇÔÇÏ´Â ´õ Æ÷°ýÀûÀÎ °³³ä ü°èÀûÀÎ ±â¹Ý ±¸Á¶¸¦ ³ªÅ¸³À´Ï´Ù.
±×·¯³ª ÇÁ·¹ÀÓ¿öÅ©À̶õ ¿ë¾î´Â ½ºÆ®·°Ã³³ª ¾ÆÅ°ÅØÃ³º¸´Ù ´õ ³·Àº ·¹º§ÀÇ Àǹ̸¦ Áö´Õ´Ï´Ù. Áï, ÇÁ·¹ÀÓ¿öÅ©ÀÇ ½Çü´Â ¶§·Ð APIÀÇ ÁýÇÕÀ¸·Î ³ªÅ¸³ª±âµµ ÇÑ´Ù´Â °ÍÀÌÁö¿ä. ½ã ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁîÀÇ Java Activation Framework°¡ ±×·¯Çϰí Java Media Framework°¡ ±×·¯ÇÕ´Ï´Ù. ±×·¯³ª ÃÖ±Ù¿¡ ¿Í¼ IBMÀÇ »÷ÇÁ¶õ½Ã½ºÄÚ ÇÁ·¹ÀÓ¿öÅ©(San Francisco Framework)¶ó´Â ¿ë¾î°¡ µîÀåÇÏ¸é¼ ¡®¹ÝÁ¦Ç°¡¯ÀÇ Àǹ̸¦ °ÇÏ°Ô ¶ç´Â °Í °°½À´Ï´Ù.
¾Ë´Ù½ÃÇÇ »÷ÇÁ¶õ½Ã½ºÄÚ ÇÁ·¹ÀÓ¿öÅ©´Â Á¤ÇüÈµÈ ¾÷¹«¸¦ À§ÇÑ ºñÁî´Ï½º ÄÄÆ÷³ÍÆ®¸¦ ¹Ì¸® ¸¸µé¾î µÎ°í, À̸¦ Á¶¸³ÇÔÀ¸·Î½á »ý»ê¼ºÀ» ±Ø´ëȽÃŰÀÚ´Â °ÍÀÌ ¿äÁöÀÔ´Ï´Ù. ¾î·°Å³ª ÇöÀçÀÇ ÇÁ·¹ÀÓ¿öÅ©¶õ °ÍÀº ¡®±â¹Ý Ʋ ±¸Á¶¡¯¶ó´Â ¸ðÈ£ÇÑ Ãß»óÀûÀÎ °³³äÀ̱⺸´Ù´Â ¹°¸®ÀûÀÎ ½ÇüÀÌ¸é¼ ¹ÝÁ¦Ç° ¼º°ÝÀÇ ±¸Ã¼ÀûÀ̰í ü°èÈµÈ API¸¦ Á¦°øÇÏ´Â °³³äÀ̶ó°í ºÁ¾ß ÇÒ °ÍÀÔ´Ï´Ù.
| | - javaservice.net ÀÌ¿ø¿µ´ÔÀÇ ±Û | | | | | |
| |
ÇÁ·¹ÀÓ¿öÅ©ÀÇ °¡Ä¡´Â ±â¼úÀûÀÎ ¿µ¿ª¿¡¼ ¼Ò¸ðÀûÀÌ°í ¹Ýº¹ÀûÀÎ ÄÚµùÀ» ÇÁ·¹ÀÓ¿öÅ©°¡ ¼ÒÈÇÏ¿© °³¹ßÀÚ°¡ ºñÁî´Ï½º ·ÎÁ÷¿¡¸¸ Àü³äÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â µ¥ ÀÖ½À´Ï´Ù. À̸¦Å׸é À¥ ÇÁ·Î±×·¡¹ÖÀ» ÇÑ´Ù¸é HTTP ÇÁ·ÎÅäÄݵµ ¾î´À Á¤µµ ¾Ë¾Æ¾ß ÇÏ°í ¼ºí¸´ API¸¦ ÀÍÈ÷°í Äí۵µ ¾µ ÁÙ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù.
ÇÏÁö¸¸ JSF(Java Server Faces) °°Àº ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌ¿ëÇϸé ÀÏ¹Ý ÀÚ¹Ù GUI ÇÁ·Î±×·¡¹ÖÀ» ÇϵíÀÌ ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼ºí¸´ API¸¦ ¸ô¶óµµ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» Àß ¸¸µé ¼ö ÀÖ´Â °ÍÀÌÁÒ. ·Î±ë(logging) ÇÁ·¹ÀÓ¿öÅ©°¡ ¾ø´Ù¸é °³¹ßÀÚ°¡ ·Î±×¸¦ ³²±â°í ½ÍÀ» ¶§ Á÷Á¢ ÆÄÀÏÀ» ¿¾î¼ ÆÄÀÏ¿¡ ³»¿ëÀ» ¾²´Â µîÀÇ º¹ÀâÇÑ Äڵ带 ½á³ª°¡¾ß ÇÏÁö¸¸ log4j¿Í °°Àº ÇÁ·¹ÀÓ¿öÅ©¸¦ ¾²¸é ´Ü¼øÈ÷ Logger °´Ã¼¿¡ ·Î±× ¸Þ½ÃÁö¸¦ ³Ñ°ÜÁÖ´Â °ÍÀ¸·Î ·Î±ëÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
EJBµµ ÀÌ·± ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÀÏÁ¾ÀÔ´Ï´Ù. EJB°¡ ¾ø´Ù¸é ºÐ»ê Æ®·£Àè¼ÇÀÌ »ý±æ ¶§¸¶´Ù °³¹ßÀÚ°¡ Á÷Á¢ ºÐ»ê Æ®·£Àè¼Ç °ü¸®¸¦ ÇØ¾ß ÇÏÁö¸¸ EJB ¿£ÁøÀÌ À̸¦ ´ë½ÅÇØÁÖ¸é °³¹ßÀÚ´Â ºñÁî´Ï½º ·ÎÁ÷ÀÇ ±¸Çö¿¡¸¸ ÁýÁßÇÒ ¼ö ÀÖÁÒ. ÀÌó·³ ±â¼úÀûÀÎ ¿µ¿ªÀÌ ´Þ¶óÁú ¶§¸¶´Ù °³¹ßÀÚ´Â »õ·Î¿î API¸¦ ÀÍÈ÷°í ¶Ç ¼Ò¸ðÀûÀÌ°í ¹Ýº¹ÀûÀÎ Äڵ带 ½á¾ß Çϴµ¥ ÇØ´ç ºÐ¾ß¿¡ ÁÁÀº ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÖÀ¸¸é Áߺ¹ Äڵ嵵 ½±°Ô Á¦°ÅÇÒ ¼ö ÀÖ°í ±â¼úÀûÀÎ ¼¼ºÎ»çÇ׿¡ ½Å°æ¾²Áö ¾Ê¾Æµµ µË´Ï´Ù.
°á±¹ ÇÁ·¹ÀÓ¿öÅ©ÀÇ °¡Ä¡´Â °³¹ßÀÚÀÇ ÇÒ ÀÏÀ» ÁÙ¿©ÁÖ´Â µ¥ ÀÖ´Â °ÍÀÔ´Ï´Ù.
ÇÏÁö¸¸ °£È¤ ÇÁ·¹ÀÓ¿öÅ©ÀÇ °¡Ä¡¸¦ À¯Áöº¸¼öÀÇ ¿ëÀÌÇÔ¿¡¼ ã´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ÇÁ·¹ÀÓ¿öÅ©°¡ ²Ë Â¥³õÀº Ʋ ¾È¿¡¼¸¸ ÄÚµùÀ» ÇÏ¸é °³¹ßÀÚµéÀÌ ¸ðµÎ ÀϰüµÈ ¹æ½ÄÀ¸·Î °³¹ßÇϱ⠶§¹®¿¡ ´Ù¸¥ »ç¶÷ÀÌ ÀÛ¼ºÇÑ Äڵ带 ÆÄ¾ÇÇϱ⠽¬¿ö¼ À¯Áöº¸¼öÇϱ⵵ ½±´Ù´Â °ÍÀÌÁÒ.
±×·¯³ª ÀÌ·¸°Ô Àϰü¼ºÀ» ÇÊ¿ä ÀÌ»óÀ¸·Î °Á¶ÇÏ¸é ¶§¶§·Î ¹®Á¦°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. PEAA(Patterns of Enterprise Application Architecture)¿¡¼´Â ±â¾÷¿ë ¾ÖÇø®ÄÉÀ̼Ç(Enterprise Application)¿¡´Â ¸ðµÎ °¢°¢ÀÇ ¾î·Á¿òÀ» °¡Áö°í Àִµ¥ ÀÌ ¾î·Á¿òÀº ¸ðµÎ Á¾·ù°¡ ´Ù¸£±â ¶§¹®¿¡ ÀÌ ¸ðµç ¾î·Á¿òÀ» ÇØ°áÇÏ´Â ÇϳªÀÇ ¾ÆÅ°ÅØÃ³´Â ºÒ°¡´ÉÇÏ´Ù°í ¸»ÇÕ´Ï´Ù. ´Ù¸¥ ¹®Á¦ ¿µ¿ª¿¡´Â ´Ù¸¥ ÇØ°áÃ¥À» ½á¾ßÇÑ´Ù´Â °ÍÀÌÁÒ. ±×·±µ¥ ÇÁ·¹ÀÓ¿öÅ©¸¦ ÅëÇØ¼ Áö³ªÄ¡°Ô ƲÀ» °íÁ¤½ÃÄÑ ³õ°Ô µÇ¸é ±× Ʋ¿¡¼ ¼ö¿ëÇÒ ¼ö ¾ø´Â ¹®Á¦¸¦ ¸¸³µÀ» ¶§ ¾ÆÁÖ ºñÈ¿À²ÀûÀÎ ÄÚµùÀ» ÇÏ°Ô µË´Ï´Ù. ¹°·Ð À̰ÍÀº ÇÁ·¹ÀÓ¿öÅ© ÀÚü°¡ °¡Á®¿À´Â Á÷Á¢ÀûÀÎ ¹®Á¦´Â ¾Æ´Õ´Ï´Ù.
±×º¸´Ùµµ ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÀåÁ¡À» ¡®Àϰü¼º¡¯¿¡¼ ã´Â »ç¶÷µéÀÌ ÀϹÝÀûÀ¸·Î ¹üÇÏ´Â ¿À·ùÀÔ´Ï´Ù. Àϰü¼ºÀÇ °¡Ä¡¸¦ Áö³ªÄ¡°Ô ³ô°Ô Æò°¡ÇÑ ³ª¸ÓÁö ÄÚµù ÆÐÅÏ¿¡ ³Ê¹« ¸¹Àº ±¸¼ÓÀ» ÇÏ°Ô µÇ°í ±× °á°ú·Î ¹®Á¦ ¿µ¿ª¿¡ ¸Â´Â ÆÐÅÏÀ» »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÆÐÅÏ¿¡ Äڵ带 ³¢¿ö ¸ÂÃß´Â Äڵ带 ¸¸µé°Ô µË´Ï´Ù. ±×·¡¼ °á°úÀûÀ¸·Î ÇÁ·¹ÀÓ¿öÅ©¸¦ À¯¿¬ÇÏ°Ô È°¿ëÇÏÁö ¸øÇÏ°í ¿ÀÈ÷·Á Äڵ尡 ´õ ±æ°í º¹ÀâÇØÁö´Â °æ¿ì°¡ ¸¹½À´Ï´Ù. ¾Õ¼ ¾ð±ÞÇÑ µðÀÚÀÎ ÆÐÅÏÀÇ ¿À¿ë°ú °°Àº °ÍÀÌÁÒ.
»ç½Ç Àϰü¼ºÀÇ ¹®Á¦´Â ÇÁ·¹ÀÓ¿öÅ©º¸´Ùµµ ÄÁº¥¼ÇÀ» ÅëÇØ ÇØ°áÇØ¾ß ÇÏ´Â °ÍÀÔ´Ï´Ù. XP¿¡¼´Â Äڵ忡 ´ëÇÑ ¼ÒÀ¯±ÇÀ» °³¹ßÀÚ ÇÑ ¸íÀÌ ¾Æ´Ï¶ó ¸ðµÎ°¡ °®°Ô µÇ´Â ÄÚµå °øµ¿ ¼ÒÀ¯(collective code ownership)¸¦ ±ÇÀåÇÕ´Ï´Ù. ±×·¡¼ ´Ù¸¥ »ç¶÷ÀÇ Äڵ带 ÀÐ°í ¼öÁ¤ÇÏ´Â ÀÏÀº ¾ÆÁÖ ÀÏ»óÀûÀÎ ÀÏÀÔ´Ï´Ù. ÀÌ·± »óȲ¿¡¼ °³¹ßÀÚ °¢°¢ÀÇ °³¼ºÀÌ °Çؼ ¼·ÎÀÇ Äڵ带 ÀÐ±â ¾î·Æ´Ù¸é ¹®Á¦°¡ Å©°ÚÁÒ.
±×·³¿¡µµ ºÒ±¸Çϰí XP´Â ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇØ ¾à°£ÀÇ ºÎÁ¤ÀûÀÎ ÀÔÀåÀ» ÃëÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀº ÇÁ·¹ÀÓ¿öÅ©°¡ µðÀÚÀÎ ÆÐÅϰú °°Àº ¹®Á¦¸¦ ¹ß»ý½Ãų ¼ö ÀÖ´Ù°í º¸±â ¶§¹®À̱⵵ ÇÏÁö¸¸ °íÁ¤ÀûÀÎ ÆÐÅÏ¿¡ µû¶ó ÄÚµùµÈ Äڵ庸´Ùµµ ÄÚµå ÄÁº¥¼ÇÀÌ ÅëÀÏµÇ°í ¸®ÆÑÅ丵ÀÌ ÀßµÈ Äڵ尡 ´õ Àб⠽±´Ù°í º¸±â ¶§¹®ÀÔ´Ï´Ù. ½ÇÁúÀûÀ¸·Î ÄÚµù ÆÐÅÏÀÇ °Á¦¸¦ ÅëÇØ ¾òÀ» ¼ö ÀÖ´Â °ÍÀº ±×¸® ¸¹Áö ¾Ê½À´Ï´Ù. ¾îÂ÷ÇÇ ÀÌÇØÇϱ⠰¡Àå ¾î·Á¿î ºÎºÐÀº ºñÁî´Ï½º ·ÎÁ÷Àε¥ ÀÌ ºÎºÐ±îÁö ÆÐÅÏÀ̳ª ÇÁ·¹ÀÓ¿öÅ©·Î °Á¦ÇÒ ¼ö´Â ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
°á±¹ ¾Æ¹«¸® ´Ù¾çÇÑ ±â´ÉÀ» Á¦°øÇÑ´Ù ÇØµµ °á°úÀûÀ¸·Î °³¹ßÀÚ°¡ ÀÛ¼ºÇØ¾ß ÇÏ´Â Äڵ带 ÁÙ¿©ÁÖÁö ¸øÇÑ´Ù¸é ÁÁÀº ÇÁ·¹ÀÓ¿öÅ©¶ó°í ÇÒ ¼ö ¾ø½À´Ï´Ù. ½ºÆ®·µÃ÷¿¡ ´ëÇÑ ´ë¾ÈÀÌ °è¼Ó ½ñ¾ÆÁ® ³ª¿À°í ÀÖ´Â °Íµµ ½ÇÁ¦ÀûÀ¸·Î ½ºÆ®·µÃ÷°¡ °³¹ßÀÚÀÇ ÀÏÀ» ¸¹ÀÌ ÁÙ¿©ÁÖÁö ¸øÇϱ⠶§¹®ÀÔ´Ï´Ù.
½ºÆ®·µÃ÷ÀÇ °Á¡À¸·Î ÄÁÆ®·Ñ·¯(controller)¸¦ ²Å´Âµ¥ »ç½Ç ½ºÆ®·µÃ÷ÀÇ ÄÁÆ®·Ñ·¯´Â HttpServletÀÇ ¿ªÇÒÀ» ActionÀ¸·Î, web.xmlÀÇ ¿ªÇÒÀ» struts-config.xml·Î ¿Å°Ü¿Â °Í ¹Û¿¡ ¾ø½À´Ï´Ù. »ç½Ç ½ºÆ®·µÃ÷ÀÇ ÄÁÆ®·Ñ·¯ ±â´É ÀÚü´Â ¼ºí¸´ APIÀÇ ·¡ÆÛ ¸î °³·Î ¿ÏÀüÈ÷ ´ëüÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± Á¡À» ±ú´ÞÀº °³¹ßÀÚµéÀÌ Á¤¸»·Î °³¹ßÀÚÀÇ ÀÏÀ» ÁÙ¿©ÁÖ´Â °ÍÀ» ¸ñÇ¥·Î ´Ù¾çÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ ½ñ¾Æ³»°í ÀÖ´Â °ÍÀÔ´Ï´Ù.
ÇÁ·¹ÀÓ¿öÅ©ÀÇ ±¸¼º ¿ä¼Ò
½ÇÁ¦·Î ¾î¶² ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏµç ±×´ë·Î »ç¿ëÇÏ´Â °æ¿ì´Â ±×´ÙÁö ¸¹Áö ¾Ê½À´Ï´Ù. ´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©¿Í °áÇÕÇØ¼ ¾²±âµµ ÇÏ°í »ó¼ÓÀ» ÅëÇØ¼ È®ÀåÇϰųª ȤÀº Á÷Á¢ ¼Ò½ºÄڵ带 °íÃļ »ç¿ëÇϱ⵵ ÇÕ´Ï´Ù. ¾îÂ÷ÇÇ ¸ðµç ¿µ¿ª¿¡ ¸Â´Â ÇÁ·¹ÀÓ¿öÅ©´Â ¾ø±â ¶§¹®¿¡ °¢ÀÚÀÇ È¯°æ¿¡ ¸Â°Ô Ä¿½ºÅ͸¶ÀÌ¡ÇÏ´Â °ÍÀº ¹Ù¶÷Á÷ÇÑ ÀÏÀÔ´Ï´Ù. ±×·¡¼ À̹ø¿¡´Â ÇÁ·¹ÀÓ¿öÅ©¸¦ ±¸¼ºÇÏ´Â ¿ä¼Òµé¿¡ ´ëÇØ »ìÆìº¸°Ú½À´Ï´Ù.
Á¦¾î ±¸Á¶ÀÇ ¹ÝÀü
¿äÁò ³ª¿À´Â ÇÁ·¹ÀÓ¿öÅ©µéÀº °øÅëÀûÀ¸·Î Á¦¾î ±¸Á¶ÀÇ ¹ÝÀü(IoC, Inversion of Control)¸¦ ³»¼¼¿ì°í ÀÖ½À´Ï´Ù. Á¦¾î ±¸Á¶ÀÇ ¹ÝÀüÀ̶ó´Â ¸»ÀÇ Àǹ̴ °³¹ßÀÚ°¡ Á¦¾îÇÏ´ø °ÍÀ» ÇÁ·¹ÀÓ¿öÅ©·Î ¿Å°Ü¼ ÇÁ·¹ÀÓ¿öÅ©¿¡¼ Á¦¾îÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
¿¹¸¦ µé¸é GUI·Î ÀÔ·ÂÀ» ¹Þ´Â ÇÁ·Î±×·¥À» °³¹ßÀÚ°¡ Á÷Á¢ ¸ðµç ºÎºÐÀ» ¸¸µç´Ù¸é ÀÔ·Â Ç׸ñÀ» Ãâ·ÂÇÏ°í »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ±â´Ù¸° ´ÙÀ½ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ÆÇ´ÜÇØ¼ ·ÎÁ÷À» ½ÇÇàÇÏ´Â Äڵ带 ¸ðµÎ ¼øÂ÷ÀûÀ¸·Î ¾²°Ô µË´Ï´Ù. ±×·±µ¥ ÀÌ°É GUI ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌ¿ëÇϸé ȸé°ú ÀԷ¿¡ °üÇÑ ºÎºÐÀº ÇÁ·¹ÀÓ¿öÅ©°¡ ó¸®ÇÏ°í »ç¿ëÀÚ´Â ´ÜÁö »ç¿ëÀÚ°¡ ÀÔ·ÂÇßÀ» ¶§ ¹ÝÀÀÇÏ´Â À̺¥Æ® Çڵ鷯¸¸ ÀÛ¼ºÇÕ´Ï´Ù. Áï ÀÔ·Â Á¦¾î°¡ °³¹ßÀÚ¿¡¼ ÇÁ·¹ÀÓ¿öÅ©·Î À̵¿ÇÏ´Â °ÍÀÔ´Ï´Ù.
À©µµ¿ì ÇÁ·Î±×·¡¹Ö¿¡¼ Äݹé(callback)À̶ó°í ºÎ¸£´Â °Íµµ ºñ½ÁÇÑ °³³äÀÔ´Ï´Ù. »ç½Ç ¼ºí¸´ ÀÚüµµ ÀÏÁ¾ÀÇ ÇÁ·¹ÀÓ¿öÅ©À̰í ÀÌ¹Ì IoC°¡ ÀϾ°í ÀÖ½À´Ï´Ù. HTTP ¿äûÀ» ´ë±âÇÏ°í ¹Þ¾Æµé¿©¼ ¼ºí¸´À» ½ÇÇàÇÏ´Â Äڵ带 °³¹ßÀÚ°¡ ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¼ºí¸´ ¿£ÁøÀÌ Á¦°øÇÏ°í °³¹ßÀÚ´Â ´ÜÁö ¼ºí¸´¸¸À» ÀÛ¼ºÇÏ°Ô µÇÁÒ. °á±¹ ÀÌ·± ÄÁÆ®·ÑÀÇ ¹ÝÀüÀ» ÅëÇØ¼ Áߺ¹ Äڵ带 È¿°úÀûÀ¸·Î Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·¹ÀÓ¿öÅ©ÀÇ ¸ñÀûÀÌ ¼Ò¸ðÀûÀÌ°í ¹Ýº¹ÀûÀÎ Äڵ带 Á¦°ÅÇÏ´Â °ÍÀÎ ¸¸Å ´ëºÎºÐÀÇ ÇÁ·¹ÀÓ¿öÅ©¿¡´Â ÇÁ·¹ÀÓ¿öÅ© °³¹ßÀÚ°¡ ÀǵµÇßµç ¾Æ´Ïµç IoC°¡ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù.
ÇÏÁö¸¸ IoC ¿ª½Ã ÁÖÀÇÇØ¼ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÀÏ»óÀûÀÎ ÇÁ·Î±×·¥°ú´Â ´Þ¸® Á¦¾î ±¸Á¶°¡ °Å²Ù·Î µÇ±â ¶§¹®¿¡ µð¹ö±ëÇϱ⵵ ¾î·Æ°í ÄÁÆ®·ÑÀÌ ¹ÝÀüµÈ ºÎºÐ¿¡ ´ëÇÑ ¼±Çà Áö½ÄÀÌ ¾øÀ¸¸é ÀÌÇØÇϱ⠾î·Á¿î Äڵ尡 µË´Ï´Ù. ±×·¡¼ IoC´Â ²À ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
MVC ÆÐÅÏ
¿äÁò ÇÁ·¹ÀÓ¿öÅ©°¡ IoC¸¦ °Á¶ÇÑ´Ù¸é ½ºÆ®·µÃ÷ó·³ Á» ¿À·¡µÈ ÇÁ·¹ÀÓ¿öÅ©µéÀº MVC(Model-View-Controller)¸¦ ³»¼¼¿ü½À´Ï´Ù. UI°¡ Æ÷ÇÔµÈ ÇÁ·¹ÀÓ¿öÅ©¿¡´Â °ÅÀÇ ÇʼöÀûÀ¸·Î »ç¿ëµÇ´Â ÆÐÅÏÀÔ´Ï´Ù. ¿ø·¡ MVC´Â À¥º¸´Ùµµ ÀÏ¹Ý GUI ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¶§ UI(User Interface)¿Í ºñÁî´Ï½º ·ÎÁ÷À» È¿°úÀûÀ¸·Î ºÐ¸®Çϱâ À§Çؼ °í¾ÈµÇ¾ú½À´Ï´Ù. ÇöÀç´Â À¥¿¡¼µµ ±× È¿°ú°¡ ÀÔÁõµÇ¾ú±â ¶§¹®¿¡ ³Î¸® ¾²À̰í ÀÖ½À´Ï´Ù.
MVCÀÇ ±¸Á¶´Â MFC ÇÁ·Î±×·¥¿¡¼ µîÀåÇß´ø Document-View ±¸Á¶¸¦ ÇÑ Â÷¿ø ´õ ¹ßÀü½ÃŲ °ÍÀ¸·Î ÇÁ·Î±×·¥ÀÇ ±¸¼º ¿ä¼Ò¸¦ ¸ðµ¨, ºä, ÄÁÆ®·Ñ·¯·Î ³ª´©¾î¼ °¢°¢ ´Ù¸¥ ¿ªÇÒÀ» ¸Ã°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù. ¸ðµ¨Àº ºñÁî´Ï½º ·ÎÁ÷À» ´ã´Â °´Ã¼¸¦ ¸»Çϸç ÀÌ ¸ðµ¨Àº PEAA¿¡¼ ¸»ÇÏ´Â µµ¸ÞÀÎ ¸ðµ¨ÀÌ µË´Ï´Ù.
 |
| <±×¸² 1>MVC ÆÐÅÏÀÇ ±¸Á¶ |
µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÏ´Â °Íµµ ¸ðµ¨ °´Ã¼ÀÇ ¸òÀÔ´Ï´Ù. ¸ðµ¨ °´Ã¼µé ÀÚü·Î UML Ŭ·¡½º ´ÙÀ̾î±×·¥À» ±×¸°´Ù¸é ±× ÀÚü·Î ºñÁî´Ï½º ·ÎÁ÷ÀÇ Ç¥ÇöÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ºä´Â ȸé UI¸¦ ±¸¼ºÇÏ´Â ¿ä¼ÒÀ̸ç ÀϹÝÀûÀ¸·Î À¥¿¡¼´Â JSP°¡ ºäÀÇ ¿ªÇÒÀ» ¸Ã½À´Ï´Ù.
±×¸®°í ÄÁÆ®·Ñ·¯´Â »ç¿ëÀÚÀÇ ¿äûÀ» ¹Þ¾Æ¼ ¸ðµ¨ °´Ã¼¸¦ ½ÇÇàÇÏ°í ±× °á°ú¸¦ ºä·Î Àü´ÞÇÏ´Â ¿ªÇÒÀ» ¸Ã°Ô µÇ´Âµ¥ ÀϹÝÀûÀ¸·Î ÀÌ ºÎºÐÀº ÇÁ·¹ÀÓ¿öÅ©¿¡¼ ´ã´çÇÏ¸ç °³¹ßÀÚ´Â ¾î¶² ¸ðµ¨À» ½ÇÇàÇÏ°í ¾î¶² ºä¸¦ ¼±ÅÃÇÒ °ÍÀÎÁö¸¦ ÄÁÆ®·Ñ·¯¿¡ ¾Ë·ÁÁֱ⸸ ÇÏ¸é µË´Ï´Ù. ÀÌ·± ±¸Á¶°¡ ÀÌ»óÀûÀÎ MVC ÆÐÅÏÀÇ ±¸Á¶ÀÔ´Ï´Ù.
MVC ÆÐÅÏÀÇ °¡Àå Å« ÀåÁ¡Àº ¸ðµ¨°ú ºäÀÇ ºÐ¸®¸¦ ÅëÇØ ȸé UI¸¦ À§ÇÑ ÄÚµå¿Í ºñÁî´Ï½º ·ÎÁ÷À» À§ÇÑ Äڵ尡 ¼¯ÀÌÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù. ±×·¡¼ ¶§¶§·Î ȸé UI °³¹ßÀÚ¿Í ºñÁî´Ï½º ·ÎÁ÷ °³¹ßÀÚ¸¦ µû·Î µÎ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ±×¸®°í ÀÌ ÆÐÅÏÀ» ÅëÇØ ÇÁ·Î±×·¥ µðÀÚÀÎÀÇ ±âº» ¿øÄ¢ÀÎ low coupling, high cohesionÀ» ÀÚ¿¬½º·´°Ô ´Þ¼ºÇÒ ¼ö ÀÖÁÒ.
¹«¾ð°¡ º¯°æÇÏ°í ½ÍÀ» ¶§ ¿©·¯ ÄÄÆ÷³ÍÆ®µéÀ» °°ÀÌ º¯°æÇØ¾ß ÇÏ´Â couplingÀº ÁÙÀÌ¸é¼ ÄÄÆ÷³ÍÆ®°£ÀÇ Çù·Â(cohesion)Àº ÄÁÆ®·Ñ·¯¸¦ ÅëÇØ ÀÚÀ¯·Ó°Ô ÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ¸ðµ¨°ú ºä°¡ ºÐ¸®µÇ¸é ÇÑ ¸ðµ¨¿¡ ¿©·¯ °¡Áö ´Ù¾çÇÑ ºä¸¦ ºÙÀÌ´Â °Íµµ °¡´ÉÇÏ°í ±× ¹Ý´ëÀÇ °æ¿ìµµ °¡´ÉÇÕ´Ï´Ù. ±×·¡¼ ¿ä±¸»çÇ×ÀÇ º¹Àâµµ´Â ³ôÁö¸¸ ±Ô°ÝÀÌ Àß Á¤ÇØÁø ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¶§´Â °³¹ßÀÚÀÇ ÀÏÀ» ȹ±âÀûÀ¸·Î ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. MVC ÇÁ·¹ÀÓ¿öÅ©¶õ °á±¹ ÀÌ·± ¸ðµ¨°ú ºäÀÇ ºÐ¸®¸¦ È¿°úÀûÀ¸·Î ÇÒ ¼ö ÀÖ´Â ÄÁÆ®·Ñ·¯¸¦ Á¦°øÇÑ´Ù´Â µ¥¿¡ ±× °¡Ä¡°¡ ÀÖ½À´Ï´Ù.
XML ¼³Á¤ ÆÄÀÏÀÇ ¿ªÇÒ
ÇÁ·¹ÀÓ¿öÅ©¿¡¼ ¶Ç Çϳª Áß¿äÇÑ °ÍÀº ¼³Á¤ ÆÄÀÏÀÇ È°¿ëÀÔ´Ï´Ù. À¯Çàó·³ ¹øÁ®³ª°¡±â ½ÃÀÛÇÑ XML ¼³Á¤ ÆÄÀÏÀº ¿äÁò °ÅÀÇ ÇÁ·¹ÀÓ¿öÅ©ÀÇ Çʼö»çÇ×ó·³ µÇ¾î°¡°í ÀÖ½À´Ï´Ù. Ãʱ⿡ ¼³Á¤ ÆÄÀÏÀÌ µîÀåÇϱ⠽ÃÀÛÇÑ ÀÌÀ¯´Â ¼Ò½ºÀÇ ³»¿ë Áß »ó¼ö¿¡ ÇØ´çÇÏ´Â °ªµéÀ» ¼³Á¤ ÆÄÀÏ·Î »© ³õÀ¸¸é ÄÄÆÄÀÏÀ» ´Ù½Ã ÇÏÁö ¾Ê¾Æµµ µ¿ÀÛÀ» º¯°æÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. C++ µîÀÇ ¾ð¾î¿¡¼´Â ÄÄÆÄÀÏ ÈÄ¿¡ ¸µÅ©±îÁö ÇØ¾ß Çϱ⠶§¹®¿¡ ÀÌ Â÷ÀÌ´Â ÀûÁö ¾Ê½À´Ï´Ù.
ÇÏÁö¸¸ ÀÚ¹Ù¿¡¼´Â ÇÊ¿äÇÑ ºÎºÐ¸¸ °£´ÜÇÏ°Ô ÄÄÆÄÀÏÇÏ¸é ¹Ù·Î µ¿ÀÛÇÏ°Ô ÇÒ ¼ö ÀÖ°í XPÀÇ Áö¼ÓÀûÀÎ ÅëÇÕ(Continuous Integration)ÀÌ ÀϹÝÈµÇ¸é¼ ¼Ò½º¸¦ º¯°æÇÏ´Â ºñ¿ëÀÌ Å©°Ô ÁÙ¾îµé¾úÁÒ. ±×·¡¼ »ç½Ç Áö±ÝÀº XML ¼³Á¤ ÆÄÀÏ¿¡ »ó¼ö¸¦ ³Ö¾îµÎ´Â °ÍÀÌ ÀÚ¹Ù Äڵ忡 ³Ö´Â °Íº¸´Ù °³¹ß½ÃÀÇ º¯°æ ºñ¿ëÀÌ Àû´Ù°í Çϱâ Èûµì´Ï´Ù.
ÇÏÁö¸¸ ¿©ÀüÈ÷ ¾ÖÇø®ÄÉÀÌ¼Ç »ç¿ëÀÚÀÇ ÀÔÀå¿¡¼´Â XMLÀÌ ÈξÀ º¯°æÇϱ⠽±½À´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®·Î ¹èÆ÷µÈ ÇÁ·Î±×·¥ ȤÀº ¼¹ö¿¡ ¹èÄ¡µÈ ÇÁ·Î±×·¥ÀÇ ¼³Á¤À» ¹Ù²Ù±â À§ÇØ ´Ù½Ã ºôµå¸¦ ÇÒ ¼ö´Â ¾ø´Â ÀÏÀ̴ϱî¿ä.
ÇÏÁö¸¸ ÀÌ·± ºñ¿ëÀûÀÎ Ãø¸é ¿Ü¿¡µµ XML ¼³Á¤ ÆÄÀÏÀº ÀÚ¹Ù Äڵ庸´Ù Á» ´õ Á¤º¸¸¦ ¼¼úÀû(descriptive)À¸·Î ´ã¾Æ³õÀ» ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù.
XMLÀº ±¸Á¶ÀûÀÎ Á¤º¸¿Í ¸ÞŸ Á¤º¸¸¦ Æ÷ÇÔÇÑ ¸ðµç Á¤º¸¸¦ ÇÑ ´«¿¡ ¾Ë¾Æº¸±â ½±°Ô Á¤¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÀÚ¹Ù Äڵ忡¼ ¿©·¯ Ŭ·¡½º·Î ºÐ»êµÉ ¼ö ÀÖ´Â ¼³Á¤ ³»¿ëÀ» °³¹ßÀÚ°¡ °ü¸®ÇÏ±â ÆíÇÑ ´ÜÀ§·Î ¼Õ½±°Ô ÅëÇÕÇØ¼ °ü¸®ÇÒ ¼ö ÀÖÁÒ.
ÀÚ¹ÙÀÇ ÇÁ·ÎÆÛƼµµ ¼³Á¤ ÆÄÀÏ ¿ëµµ·Î ¸¹ÀÌ »ç¿ëµÇ¾î ¿Ô½À´Ï´Ù¸¸ ±¸Á¶ÀûÀÎ Á¤º¸¸¦ Á¦´ë·Î Á¤ÀÇÇÏ±â ¾î·Æ±â ¶§¹®¿¡ ¼³Á¤ ÆÄÀϷδ ºÎÀûÇÕÇÕ´Ï´Ù. °Ô´Ù°¡ ÇÁ·ÎÆÛƼ´Â ÇÑ±Û ¹®Á¦µµ Àֱ⠶§¹®¿¡ ¾ÕÀ¸·Î ÇÁ·ÎÆÛƼ´Â ¾²Áö ¾Ê´Â °ÍÀÌ ÁÁ´Ù°í º¾´Ï´Ù.
¹¹µçÁö À߸ø ¾²¸é ÇØ°¡ µÈ´Ù´Â Á¡¿¡¼ XML ¿ª½Ã ¿¹¿Ü°¡ ¾Æ´Õ´Ï´Ù. XML ¼³Á¤ ÆÄÀÏÀ» ¿À¿ëÇÏ´Â ´ëÇ¥ÀûÀÎ »ç·Ê·Î Jelly ½ºÅ©¸³Æ®°¡ ÀÖ½À´Ï´Ù. ÀÚÄ«¸£Å¸ commons ÇÁ·ÎÁ§Æ®ÀÇ ÇϳªÀε¥ XML·Î ½ºÅ©¸³ÆÃÀ» ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ¿£ÁøÀÔ´Ï´Ù. Jelly ½ºÅ©¸³Æ®ÀÇ ÆÄ¿ö´Â ¿©ÀüÈ÷ ÁøÂ¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ¹ÌÄ¡Áö ¸øÇÏ¸é¼ Jelly·Î ½ºÅ©¸³Æ®¸¦ Â¥¸é °¡µ¶¼ºµµ ¶³¾îÁö°í ¸®ÆÑÅ丵ÇÏ±â ¾î·Æ±â ¶§¹®¿¡ Á¡Á¡ ÁöÀúºÐÇÑ Äڵ尡 µÇ°í ¸¿´Ï´Ù. Antµµ ÀÌ¿Í ºñ½ÁÇÑ ¹®Á¦Á¡ÀÌ ÀÖ½À´Ï´Ù. ±×·¡¼ º¹ÀâÇÑ Á¦¾î È帧ÀÌ ÇÊ¿äÇÑ ºÎºÐ¿¡¼´Â ÀÚ¹Ù Äڵ带 Á÷Á¢ ÀÌ¿ëÇϰí À̰ÍÀÌ ¹«°Ì´Ù¸é Á»´õ °¡º¿î ½ºÅ©¸³Æ® ¾ð¾î¸¦ ÀÚ¹Ù¿¡ ÀÓº£µùÇØ¼ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
´Ü, SQLÀÇ °æ¿ì´Â ¾ð¾î ÀÚü°¡ °á°ú¹°¿¡ ´ëÇÑ Á¤ÀǸ¦ Ç¥ÇöÇÏ´Â °ÍÀ̱⠶§¹®¿¡ º¹ÀâÇÑ Á¦¾î ±¸Á¶°¡ ÇÊ¿äÇÏÁö ¾Ê¾Æ XML·Î º° ¹«¸® ¾øÀÌ ¼ÒȰ¡ °¡´ÉÇÕ´Ï´Ù. ½ÇÁ¦·Î XML°ú JDBC¸¦ °áÇÕ½ÃŲ iBatis¿¡¼ XML·Î SQLµéÀ» °ü¸®Çغ¸¸é ½ÇÁ¦ ÀÚ¹Ù Äڵ庸´Ù ÈξÀ ½±°í º¸±â ÁÁ°Ô ÄÚµùÇÒ ¼ö ÀÖ½À´Ï´Ù.
¶Ç ÇÑ °¡Áö ÁÖÀÇÇØ¾ß ÇÒ °ÍÀº XML ¼³Á¤ ÆÄÀÏÀ» ÀÌ¿ëÇÏ°Ô ¸¸µé´õ¶óµµ XML ¾øÀ̵µ ÇÁ·¹ÀÓ¿öÅ©°¡ µ¿ÀÛÇÏ°Ô ¸¸µé¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¾Õ¼ÀÇ iBatis´Â ±¸ÇöµÈ ±â´ÉµéÀÌ Á¤¸» Æí¸®Çϰí ÁÁÁö¸¸ °¢ ÄÄÆ÷³ÍÆ®µéÀÌ Áö³ªÄ¡°Ô °ÇÏ°Ô °áÇյǾî ÀÖ°í XML ¼³Á¤ ÆÄÀÏ ¾øÀÌ´Â ¾Æ¹« °Íµµ ÇÏÁö ¸øÇÕ´Ï´Ù. ±×·¡¼ Ãß°¡ ±â´ÉÀ» ³Ö°í ½Í´Ù°Å³ª °³¼±ÇÏ°í ½ÍÀº ºÎºÐÀÌ ÀÖÀ» ¶§ »ó¼Ó µîÀÇ ¹æ¹ýÀ¸·Î´Â ÇØ°áÇÏ±â ¾î·Æ°í °ÅÀÇ ´ëºÎºÐ ¼Ò½º¸¦ ¼öÁ¤ÇØ¾ß ÇØ°áÇÒ ¼ö ÀÖÁÒ. ±×·¡¼ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µé´õ¶óµµ ÀÏ´Ü ÀÚ¹Ù ÄÚµå·Î ¸ðµÎ ¸¸µç ´ÙÀ½ ¸¶Áö¸·¿¡ XML·Î ¼³Á¤ ³»¿ëµéÀ» »©´Â ÀÛ¾÷À» ÇÏ´Â °Ô ÁÁ½À´Ï´Ù.
»ìÆìº¼¸¸ÇÑ ÇÁ·¹ÀÓ¿öÅ©
±×¸²µµ Äڵ嵵 ¾ø´Â Áö·çÇÑ ÅØ½ºÆ®¸¦ ÀÐ¾î ³»·Á¿À´À¶ó Áö·çÇßÀ» µ¶ÀÚµéÀ» À§ÇØ ±¸Ã¼ÀûÀÎ ÇÁ·¹ÀÓ¿öÅ©µéÀ» ¸î °¡Áö ¼Ò°³ÇÒ±î ÇÕ´Ï´Ù. À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ© »Ó ¾Æ´Ï¶ó ¿©·¯ ¿µ¿ª¿¡¼ À¯¿ëÇÏ´Ù°í »ý°¢µÇ´Â °ÍµéÀ» »Ì¾Ò½À´Ï´Ù. ´ÜÁö ÇÊÀÚÀÇ °æÇè ¼Ó¿¡¼ À¯¿ëÇß´ø °ÍµéÀ̹ǷΠÇÑ ¹ø »ìÆìº¼ °¡Ä¡°¡ ÀÖ´Ù´Â Á¤µµ·Î ¹Þ¾ÆµéÀÌ¸é µÉ °ÍÀÔ´Ï´Ù.
½ºÆ®·µÃ÷¿Í JSF
À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©·Î´Â ½ºÆ®·µÃ÷°¡ ÇöÀçÀÇ ÁÖ·ùÀ̸ç JSF°¡ ÀϺο¡¼ ¹Ì·¡ÀÇ ÁÖ·ù·Î ²ÅÈü´Ï´Ù. ¸ðµÎ ÇÑ »ç¶÷ÀÌ ÁÖµµÇÑ ÇÁ·¹ÀÓ¿öÅ©ÀÔ´Ï´Ù.
ÇÊÀÚÀÇ ÆÇ´ÜÀ» µ¡ºÙÀ̸é, ½ºÆ®·µÃ÷´Â ½ÇÁ¦·Î °³¹ßÀÚÀÇ ÀÏÀ» °ÅÀÇ ÁÙ¿©ÁÖÁö ¸øÇÏ¸ç ¿ÀÈ÷·Á ´ÃÀÌ´Â °æ¿ìÁ¶Â÷ °£È¤ ÀÖ½À´Ï´Ù. ½ºÆ®·µÃ÷¸¦ ¾µ ¹Ù¿¡´Â Á÷Á¢ ½ºÆ®·µÃ÷¿Í À¯»çÇÑ ÇüÅ·Π¼ºí¸´À» Á÷Á¢ »ç¿ëÇϵµ·Ï À籸¼ºÇÏ´Â °ÍÀÌ ÁÁÀ¸¸®¶ó »ý°¢µË´Ï´Ù. ¹°·Ð À¯È¿¼º °Ë»ç ±â´É°ú Tiles´Â ÁÁÀº ±â´ÉÀÌÁö¸¸ À̵éÀº ½ºÆ®·µÃ÷¿Í ºÐ¸®Çؼµµ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
JSF´Â ¹Ì·¡ÀÇ ÁÖ·ù¶ó°í Çϱ⿣ ºÎÁ·ÇÔÀÌ ³Ê¹« ¸¹½À´Ï´Ù. ½ã¿¡¼ Java Studio Creator¸¦ ÅëÇØ ¸ÚÁø °¡´É¼ºÀ» ³»º¸À̱ä ÇßÁö¸¸ ±×·± IDE¸¦ »ç¿ëÇÏÁö ¾ÊÀ» ¶§ÀÇ JSF ÄÚµùÀº ³Ê¹« ¹øÀâÇÏ°í º¹Àâµµµµ Å®´Ï´Ù. ÀÌ´Â ±¸Á¶ÀûÀ¸·Î ¾ÆÁ÷ °³¼±ÀÇ ¿©Áö°¡ ¸¹´Ù´Â °ÍÀÌÁÒ. JSF ½ºÆå ¿ª½Ã ²ÙÁØÈ÷ ¹ßÀüÇϰí ÀÖÀ¸´Ï ¹Ì·¡´Â ¾î¶³Áö ¸ð¸£°ÚÁö¸¸ Áö±Ý JSF¸¦ »ç¿ëÇÏ´Â °ÍÀº ½Ã±â»óÁ¶¶ó »ý°¢µË´Ï´Ù. ¿ÀÈ÷·Á JSF¿Í ºñ½ÁÇÑ ±¸Á¶ÀÎ Tapestry°¡ ´õ ¿Ï¼ºµµ°¡ ³ô´Ù´Â Æò°¡¸¦ ¹Þ°í ÀÖ½À´Ï´Ù.
Turbine
Turbineµµ ²Ï ³Î¸® ¾²ÀÌ´Â ÇÁ·¹ÀÓ¿öÅ© Áß ÇϳªÀÔ´Ï´Ù. ±âº» ƲÀº ½ºÆ®·µÃ÷¿Í ºñ½ÁÇϳª ÈξÀ ¸¹Àº ºÎºÐµéÀ» Ä¿¹öÇϰí Àֱ⠶§¹®¿¡ ÄÚµù·®Àº »ó´çÈ÷ ÁÙ¾îµì´Ï´Ù. °³¹ßÀÚÀÇ ÆíÀǸ¦ À§ÇÑ Å¬·¡½ºµéµµ ¸¹À¸¸ç Turbine °³¹ß °úÁ¤¿¡¼ ¸¸µé¾îÁø ÄÄÆ÷³ÍÆ®µéÀÌ »ó´ç¼ö µ¶¸³Çؼ º°µµÀÇ ÇÁ·ÎÁ§Æ®·Î ÁøÇàµÇ°í ÀÖ½À´Ï´Ù. Àü¿¡´Â À¯¿¬¼ºÀÌ ´Ù¼Ò ¶³¾îÁø´Ù´Â °ÍÀÌ ´ÜÁ¡À̾ú´Âµ¥ Á¡Á¡ ³ª¾ÆÁö°í ÀÖ½À´Ï´Ù.
Spring
SpringÀº ¿äÁò ÁÖ¸ñ ¹Þ´Â ÇÁ·¹ÀÓ¿öÅ©·Î AOP(Aspect Oriented Programming)¸¦ ³»¼¼¿ì°í ÀÖÀ¸¸ç low coupling, high cohesionÀ̶ó´Â µðÀÚÀÎ ¿øÄ¢ÀÌ Àß ÁöÄÑÁø ÇÁ·¹ÀÓ¿öÅ©ÀÔ´Ï´Ù. µüÈ÷ À¥À» ¿°µÎ¿¡ µÎ¾ú´Ù±âº¸´Ù Á¾ÇÕÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©À̱⠶§¹®¿¡ ºÎºÐº°·Î »ç¿ëÇÒ ¼öµµ ÀÖ°í ´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©¿¡ ºÙ¿©¼ »ç¿ëÇϱ⵵ ÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º¿Í °ü·ÃÇØ¼ dzºÎÇÑ API¸¦ Á¦°øÇϸç, Mock Object¸¦ ÇÁ·¹ÀÓ¿öÅ© ÀÚü¿¡¼ Á¦°øÇϰí ÀÖ´Ù´Â °Íµµ ƯÀÌÇÑ Á¡ÀÔ´Ï´Ù. ÇöÀç °¡Àå ÃßõÇÒ ¸¸ÇÑ ÇÁ·¹ÀÓ¿öÅ©ÀÔ´Ï´Ù.
iBatis
µ¥ÀÌÅͺ£À̽º¿Í °ü·ÃÇØ¼´Â ¾Õ¼ÀÇ SpringÀ¸·Îµµ ÃæºÐÇÒ ¼ö ÀÖÁö¸¸ XML·Î SQLÀ» °ü¸®ÇϰíÀÚ ÇÑ´Ù¸é iBatis°¡ ÃÖ¼±ÀÇ ¼±ÅÃÀÏ °ÍÀÔ´Ï´Ù. ³»ºÎÀûÀÎ ÄÚµåÀÇ Ç°ÁúÀº ´Ù¼Ò ¶³¾îÁöÁö¸¸ ±â´É»óÀ¸·Î´Â º°´Ù¸¥ ºÎÁ·ÇÔÀÌ ¾ø½À´Ï´Ù. Spring°ú iBatis°¡ JDBC¿¡ ´ëÇÑ ´Ü¼ø ·¡ÆÛ ¼öÁØÀÇ API¸¦ Á¦°øÇÑ´Ù¸é Hibernate´Â OR(Object-Relation) ¸ÊÇÎÀ» ÅëÇØ¼ °³¹ßÀÚ´Â °´Ã¼¸¸À» ¹Ù¶óº¸°í µ¥ÀÌÅͺ£À̽º¸¦ °£Á¢ÀûÀ¸·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·¹ÀÓ¿öÅ©ÀÔ´Ï´Ù. ±âº»ÀûÀ¸·Î ±¸Á¶°¡ ±ò²ûÇÏ°í Æí¸®ÇÏ´Ù´Â Æò°¡¸¦ ¹Þ°í ÀÖÀ¸¸ç ºñÁî´Ï½º ·ÎÁ÷À» µµ¸ÞÀÎ ¸ðµ¨·Î Á÷Á¢ ´Ù·ê ¼ö ÀÖ´Ù´Â Á¡¿¡¼ ³ôÀÌ Æò°¡ÇÒ¸¸ ÇÕ´Ï´Ù.
OSCache, Quartz, JUnit
À̿ܿ¡ À¥¿¡¼ ij½Ì ±â¹ýÀ¸·Î ¼º´ÉÀ» Çâ»ó½Ã۱â À§ÇÑ OSCache, ½ºÄÉÁì·¯¸¦ ¸¸µé±â À§ÇÑ APIÀÎ Quartzµµ ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù. ¹°·Ð Å×½ºÆÃ ÇÁ·¹ÀÓ¿öÅ©·Î JUnitÀº ¾ð±ÞÇÒ Çʿ䰡 ¾øÀ» °ÍÀÔ´Ï´Ù. ÀÌ·± ÇÁ·¹ÀÓ¿öÅ©µéÀ» ²À »ç¿ëÇÏÁö ¾Ê´õ¶óµµ ÇÑ ¹ø »ìÆìº¸¸é ¹è¿ï ¸¸ÇÑ Á¡µéÀ» ¹ß°ßÇÒ ¼ö ÀÖ°í ÀÌ·± Á¡µéÀÌ ³ªÁß¿¡ µµ¿òÀÌ µÇ´Â °æ¿ì°¡ ÀûÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.
¸¹Àº ³í¶õ°Å¸®µé
ÆÐÅÏÀ̳ª ÇÁ·¹ÀÓ¿öÅ©´Â ƯÁ¤ ¿µ¿ª¿¡ ´ëÇØ ¾î´À Á¤µµ °ËÁõµÈ ÇØ°áÃ¥ÀÔ´Ï´Ù. ±×·¡¼ ¶§¶§·Î ÀÌ¿¡ ´ëÇÑ ¸Í½ÅÀÌ ³ªÅ¸³ª±âµµ ÇÕ´Ï´Ù. °ËÁõµÈ ¹æ¹ýÀ̶ó´Â ³í¸®·Î ³Ê¹« ½±°Ô ¹®Á¦ ¿µ¿ª¿¡ ÆÐÅÏÀ» Àû¿ëÇϰųª ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇϰï ÇÏÁÒ. ÇÏÁö¸¸ ±× ¹®Á¦ ¿µ¿ªÀÌ ÆÐÅÏÀ̳ª ÇÁ·¹ÀÓ¿öÅ©¸¦ Ȱ¿ëÇÒ ¼ö ÀÖ´Â ¹Ù·Î ±× ¿µ¿ªÀ̶ó´Â Á¡Àº °ËÁõÇϱâ Èûµç °ÍÀÔ´Ï´Ù. ¶§¹®¿¡ ÆÐÅÏ Áß½ÉÀûÀÎ »ç°í ¹æ½ÄÀ̳ª ÇÁ·¹ÀÓ¿öÅ©¿¡ ³¢¿ö ¸ÂÃß´Â ÄÚµùÀ» Áö¾çÇÏ°í ¹®Á¦ ¿µ¿ªÀÇ ÇØ°á¿¡ Ãæ½ÇÇÏ¸é¼ ÆÐÅÏÀ» »ý°¢ÇÏ´Â °ÍÀÌ ´õ ÁÁ½À´Ï´Ù.
¹ÙµÏ °Ý¾ð Áß¿¡ ¡®Á¤¼®Àº ¹è¿ì°í, Àؾî¹ö·Á¶ó¡¯¶ó´Â ¸»ÀÌ ÀÖ½À´Ï´Ù. Á¤¼®À» ÀÍÇô¼ ¾Ë°í´Â ÀÖµÇ ½ÇÀü¿¡¼´Â Á¤¼®¿¡ ÁýÂøÇÏÁö ¸»°í »óȲ¿¡ µû¶ó À¯¿¬ÇÏ°Ô ´ëÃ³ÇØ¾ß ÁÁÀº ¹ÙµÏÀ» µÑ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ÆÐÅÏÀº ÇÁ·Î±×·¡¹ÖÀÇ Á¤¼®°úµµ °°½À´Ï´Ù. »óȲ¿¡ ´ëÇÑ °ËÁõµÈ ÇØ°áÃ¥ÀÌÁö¸¸ ±× »óȲÀº °è¼Ó º¯ÇÏ°í ±× º¯È¿¡ ºü¸£°Ô ´ëÃ³ÇØ¾ß ÇÕ´Ï´Ù.
ÆÐÅÏÀ̳ª ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇÑ ¸Í½ÅÀ¸·Î ºüÁ®µå´Â °ÍÀ» °æ°èÇϱâ À§ÇØ ¾î¶² »ç¶÷µéÀº ¹«¾ùÀ̵çÁö Àå´ÜÁ¡ÀÌ ÀÖÀ¸´Ï ³Ê¹« ÁýÂøÇÏÁö ¸»¶ó°í ¸»ÇÕ´Ï´Ù. À̰ÍÀº ¿ÇÀº ¸»ÀÌÁö¸¸ »ç½Ç Å« Àǹ̰¡ ÀÖ´Â ¸»Àº ¾Æ´Õ´Ï´Ù. ¹«¾ùÀ̵ç Àå´ÜÀÌ ÀÖ´Ù´Â »ç½ÇÀº ´©±¸µµ ºÎÀÎÇÒ ¼ö ¾øÁö¸¸ ¶ÇÇÑ ´©±¸µµ ºÎÀÎÇÒ ¼ö ¾ø´Â ÀÚ¸íÇÑ »ç½ÇÀ̱⿡ ÀÇ¹Ì ¾ø´Â ¸»À̱⵵ ÇÕ´Ï´Ù. ½ÇÁ¦ »óȲ¿¡ ¸Â°Ô Àß ¾²·Á¸é ±¸Ã¼ÀûÀ¸·Î ÀåÁ¡ÀÌ ¹«¾ùÀÎÁö, ´ÜÁ¡ÀÌ ¹«¾ùÀÎÁö¸¦ ÆÄ¾ÇÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. ¾Õ¼ ÆÐÅϰú ÇÁ·¹ÀÓ¿öÅ©¸¦ ´Ù·ç¸é¼ °¢°¢ÀÇ ´ÜÁ¡µéÀ» ±¸±¸ÀýÀýÀÌ µûÁö°í µé¾î°£ °Íµµ ±×·± ÀÌÀ¯ÀÔ´Ï´Ù.
³ª³¯ÀÌ ½Å±â¼úÀÌ ½ñ¾ÆÁ® ³ª¿À°í ÀÖÁö¸¸ ±×¿¡ ¸øÁö¾Ê°Ô ÆÐ·¯´ÙÀÓµµ ¸¹ÀÌ º¯ÈÇϰí ÀÖ½À´Ï´Ù. À¯¿¬¼º ³ôÀº ÄÄÆ÷³ÍÆ® ±â¼ú·Î ÁÖ¸ñ¹Þ´ø ÀÚ¹ÙºóÁî°¡ ÇØ·Î¿î °ÍÀ̶ó´Â Æò°¡¸¦ ¹Þ±â ½ÃÀÛÇϰí, ¸¹ÀÌ ½á¾ß ÁÁÀº °ÍÀ̶ó°í ÇÏ´ø ÁÖ¼®À» ÀÌÁ¦´Â Àû°Ô ¾µ¼ö·Ï ÁÁÀº °ÍÀ̶ó°í ÇÕ´Ï´Ù.
½Å±â¼úÀ» µû¶ó°¡´Â °Íµµ ÇÊ¿äÇÏÁö¸¸ ÀÌ·¯ÇÑ ÆÐ·¯´ÙÀÓÀÇ º¯È¸¦ Àд °ÍÀÌ ´õ Áß¿äÇÕ´Ï´Ù. ÇöÀçÀÇ ¹æ½ÄÀÌ Áö±ÝÀº °¡Àå È¿À²ÀûÀÎ ¹æ½ÄÀÏ ¼ö ÀÖ°ÚÁö¸¸ Áö±Ýº¸´Ù ÈξÀ ´õ È¿À²ÀûÀÎ ¹æ½ÄÀÌ ³ª¿À´Âµ¥ ¸ð¸£°í ÀÖÀ¸¸é µµÅ嵃 ¼ö¹Û¿¡ ¾ø½À´Ï´Ù. ÈçÈ÷ ÇÁ·Î±×·¡¸Ó´Â ¿ö³« ±â¼úÀÌ »¡¸® ¹ßÀüÇϱ⠶§¹®¿¡ ÈĹèµéÀ» ´çÇÒ ¼ö°¡ ¾ø´Ù´Â ¸»À» Çϰï ÇÕ´Ï´Ù.
ÇÏÁö¸¸ Çö½ÇÀº °áÄÚ ±×·¸Áö ¾Ê½À´Ï´Ù. ±â¼úÀÇ º¯È´Â ´ÜÁö API°¡ º¯ÇÏ´Â °Í »Ó ±×·¸°Ô Áß¿äÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. ÇÁ·Î±×·¡¹ÖÀÇ ÁÖ¿äÇÑ ÆÐ·¯´ÙÀÓÀº ±×·¸°Ô ºü¸¥ ¼Óµµ·Î º¯ÇÏÁö ¾ÊÀ¸¸ç ¶ÇÇÑ ±×·± ÆÐ·¯´ÙÀÓÀÇ º¯È¸¦ ÁÖµµÇÏ´Â °ÍÀº ¹Ý¦ÀÌ´Â ¾ÆÀ̵ð¾î°¡ ¾Æ´Ï¶ó °æÇè ¼Ó¿¡¼ ÃàÀûµÈ °í¹ÎµéÀÔ´Ï´Ù. ²÷ÀÓ¾øÀÌ °í¹ÎÇÏ¸é¼ ÇÁ·Î±×·¡¹ÖÀ» ÇØ¿Ô´Ù¸é ÀÌ·± º¯È¸¦ µû¶óÀâ´Â °ÍÀº ¾î·Á¿î ÀÏÀÌ ¾Æ´Õ´Ï´Ù.
ÁÁÀº ÇÁ·Î±×·¡¸Ó°¡ µÇ±â À§Çؼ Æø³ÐÀº Áö½Ä°ú ºü¸¥ ÇнÀ ´É·ÂÀº ¹°·Ð ÇʼöÀûÀÎ °ÍÀÔ´Ï´Ù¸¸ ±×º¸´Ù ´õ Áß¿äÇÑ °ÍÀº ´Ã °í¹ÎÇÏ´Â ÀÚ¼¼¿Í ±íÀÌ ÀÖ´Â »ç°í ´É·ÂÀÔ´Ï´Ù. º¯È¸¦ µû¶óÀâ´Â ÈûÀº ºü¸¥ ÇнÀ ´É·Â¿¡¼ ³ª¿À´Â °ÍÀÌ ¾Æ´Ï¶ó º¯ÈÀÇ Á߿伺À» ÀνÄÇÏ°í ¹ßÀüÀ» À§ÇØ °í³úÇϴµ¥¼ ³ª¿À´Â °ÍÀÔ´Ï´Ù.
À̹ø ¿¬Àç´Â ¾Æ¸¶ Áö³ µÎ ¹øº¸´Ù ÈξÀ ´õ ¸¹Àº ³í¶õ°Å¸®µéÀ» ´ã°í ÀÖÀ» °ÍÀÔ´Ï´Ù. ÆÐ·¯´ÙÀÓÀº ÇÑ »ç¶÷ÀÇ °í¹Î¿¡ ÀÇÇØ¼µµ ¹ßÀüÇÏÁö¸¸ ¸¹Àº »ç¶÷µéÀÇ ¸Ó¸®¸¦ ¸Â´í Åä·Ð¿¡¼µµ ¹ßÀüÇÕ´Ï´Ù. ÇÊÀÚÀÇ ±Û¿¡ ¹Ý·ÐÀÌ Àְųª ´õ ±íÀº ³íÀǸ¦ ¿øÇÏ´Â µ¶ÀÚµéÀº
youngrok.comÀ̳ª
javaservice.net, ȤÀº
c2.com¿¡ Á¦½ÃÇØ ÁÖ¼¼¿ä. ¼·Î¸¦ ¹ßÀü½Ãų ¼ö ÀÖ´Â ÁÁÀº ±âȸ°¡ ÀÖ±æ ¹Ù¶ø´Ï´Ù.@
* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.