[ÄÄÇ»ÅÍ¿ùµå]
|
 |
|
¡ã Á¤À±Áø Pivotal Lab Principal Technologist |
1. ½ºÇÁ¸µ ºÎÆ® <2017.5¿ùÈ£>
2. ½ºÇÁ¸µ Ŭ¶ó¿ìµå Config server <2017.6¿ùÈ£>
3. ½ºÇÁ¸µ Ŭ¶ó¿ìµå Service discovery <À̹øÈ£>
4. ½ºÇÁ¸µ Ŭ¶ó¿ìµå Zuul
5. ½ºÇÁ¸µ Ŭ¶ó¿ìµå Hystrix
6. ½ºÇÁ¸µ Ŭ¶ó¿ìµå Zipkin |
¼ºñ½º µð½ºÄ¿¹ö¸®
Ŭ¶ó¿ìµå ȯ°æÀº µ¿ÀûÀ¸·Î ÀÚ¿øÀ» ÇÒ´ç¹Þ°í ÇØÁ¦ÇÏ´Â °ÍÀÌ ¾ðÁ¦µç ÀϾ´Â µ¿ÀûÀΠȯ°æÀÌ´Ù. ±âÁ¸¿¡ °íÁ¤µÈ ¼ö·®ÀÇ ½Ã½ºÅÛÀ» ¿î¿ëÇÏ´Â µ¥ Àͼ÷ÇØÁø °æ¿ì, À̰ÍÀÌ ÀåÁ¡ÀÌ ¾Æ´Ñ ´ÜÁ¡À¸·Î ¹Þ¾Æµé¿©Áö´Â °æ¿ì°¡ ¸¹´Ù. ±×·¸Áö¸¸ ¼¹ö°¡ ºÎÁ·ÇØ Ãß°¡ÇÏ·Á´Â °æ¿ì³ª ³Ê¹« ¸¹ÀÌ ±¸¸ÅÇØ¼ ´Ù½Ã µÇÆÈ°í ½ÍÀº °æ¿ì¸¦ »ý°¢Çغ»´Ù¸é Ŭ¶ó¿ìµå°¡ Á¦°øÇÏ´Â ÀåÁ¡ÀÌ ¸Å¿ì Áß¿äÇÏ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ°Ô µÈ´Ù.
¹®Á¦´Â, À̵éÀ» ¿î¿ëÇÏ´Â ÀÔÀå¿¡¼´Â µ¿ÀûÀ¸·Î º¯ÈÇÏ´Â °¢Á¾ ¼³Á¤À¸·Î ÀÎÇØ ÀÚµ¿ÈµÇÁö ¸øÇÑ ¼öÀÛ¾÷µéÀÌ ¸Å¿ì ÀÚÁÖ, ±×¸®°í ¹Ýº¹ÀûÀ¸·Î ¹ß»ýÇϰí, À̰ÍÀ» Á¤È®ÇÏ°Ô Ã³¸®ÇÏÁö ¸øÇÑ´Ù¸é Áï°¢ Àå¾Ö·Î ¿¬°áµÇ´Â ȯ°æÀ̱⠶§¹®¿¡ ´õ¿í ¹Î°¨ÇØÁú ¼ö ÀÖ´Ù. Áï, °íÁ¤µÈ ¼ö·®ÀÇ ½Ã½ºÅÛÀ» ¿î¿ëÇÒ ¶§ »ç¿ëÇÏ´ø ±â¹ýµéÀÌ ¼ö·®ÀÌ µ¿ÀûÀ¸·Î º¯°æÇϴ ȯ°æ¿¡¼´Â ±×´ÙÁö ¾µ¸ð°¡ ¾ø°Å³ª, ¾Æ´Ï¸é ´Ù¸¥ µµ±¸·Î ´ëüµÅ¾ß ÇÑ´Ù. ±×°Íµé Áß ´ëÇ¥ÀûÀÎ °ÍÀÌ ¹Ù·Î DNS¸¦ ‘¼ºñ½º µð½ºÄ¿¹ö¸®’¶ó ºÒ¸®´Â ¹æ¹ýÀ¸·Î ´ëüÇÏ´Â °ÍÀÌ´Ù.
¼ºñ½º µð½ºÄ¿¹ö¸®¿¡ ¾Õ¼ DNS ü°è¿¡ ´ëÇØ Àá½Ã »ý°¢Çغ¸ÀÚ. ½Ã½ºÅÛÀÇ ÀÔÀå¿¡¼ DNS´Â º¸Åë /etc/resolv.conf ¿¡ ¼³Á¤µÈ ³×ÀÓ¼¹ö¸¦ ÂüÁ¶ÇØ µµ¸ÞÀÎÀ» IPÁ¤º¸·Î ¹Ù²ãÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¹®Á¦´Â ÀÌ ·¹Äڵ尡 ¾÷µ¥ÀÌÆ®µÇ°í ÂüÁ¶µÇ´Â ¹æ½ÄÀÌ 1970³â´ë 3600bps ¸ðµ©À» »ç¿ëÇÏ´ø ½ÃÀý ÀÌÀüÀÇ ±â¼úÀ̶ó´Â °ÍÀÌ´Ù.
¿¾ÇÇÑ ³×Æ®¿öÅ©¸¦ °¡Áø ȯ°æÀϼö·Ï ij½ÃÀÇ »ç¿ëÀÌ ±ÇÀåµÈ´Ù. ³×Æ®¿öÅ© ³Ê¸Ó·Î ÁúÀǰ¡ ¸¹ÀÌ ¹ß»ýÇÏ¸é ¹ß»ýÇÒ¼ö·Ï ³×Æ®¿öÅ©¿¡ »ç¿ëµÇ´Â ºñ¿ëÀÌ Áõ°¡Çϰí ÀÀ´äÀ» ±â´Ù¸®´Â µ¿¾È »ç¿ëÀÚ°æÇèÀÌ ¾öû³ª°Ô ¶³¾îÁö¹Ç·Î, ´õ ºü¸¥ ÀÀ´äÀ» À§ÇØ Çѹø ÁúÀÇ ¹× ÀÀ´äµÈ µµ¸ÞÀο¡ ´ëÇØ¼´Â ÁöÁ¤ÇÑ TTL °ª¸¸Å ¿¬°üµÈ ½Ã½ºÅ۵鿡¼ º¸Á¸ÇÏ°Ô µÈ´Ù. ù ¹øÂ° ¹®Á¦´Â ¹Ù·Î ÀÌ TTL ÀÚü¿¡ ÀÖ´Ù.
´Ù¸¥ Çϳª´Â µ¿ÀÏÇÑ µµ¸ÞÀο¡ »õ·Î¿î È£½ºÆ®°¡ µî·ÏµÇ°Å³ª, ±âÁ¸¿¡ µî·ÏµÈ È£½ºÆ®¸¦ Á¦°ÅÇϰųª, º¯°æÀ» À§ÇØ ¾÷µ¥ÀÌÆ®¸¦ ÇÏ´Â °æ¿ì¿£ Zone file À̶ó°í ºÒ¸®´Â ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®Çϰí ÇÁ·Î¼¼½º¸¦ Àç½ÃÀÛÇØ¾ß ÇÏ´Â ¹®Á¦°¡ ÀÖ´Ù. ÀÌÀüó·³ ÀÏ ³â¿¡ ÇѵΠ¹ø Á¤µµ ¼¹ö°¡ Ãß°¡µÇ°Å³ª ¾÷µ¥ÀÌÆ®µÇ´Â ȯ°æÀ̶ó¸é ÀÛ¾÷ °øÁö¸¦ ÇÏ°í ³×ÀÓ¼¹ö¸¦ ¾÷µ¥ÀÌÆ®ÇÏ´Â °ÍÀÌ °¡´ÉÇÏÁö¸¸, µ¿ÀÏÇÑ µ¿ÀÛÀÌ ¼öºÐ ³»¿¡ ¼ö½Ê ´ë ÀÌ»óÀÇ ¼¹ö¿¡¼ ¹ß»ýÇϴ ȯ°æÀ̶ó¸é ¾î¶³±î.
³×ÀÓ¼¹ö´Â ±âº»ÀûÀ¸·Î´Â, ±×·¯´Ï±î ±âº»ÀûÀ¸·Î´Â ³×ÀÓ¼¹ö°¡ ÀÀ´äÇÏ´Â µµ¸ÞÀΰú ¿¬°áµÈ È£½ºÆ®µé¿¡ ´ëÇÑ Çコüũ¸¦ ¼öÇàÇÏÁö´Â ¾Ê´Â´Ù. Áï °ü¸®ÀÚ°¡ ¼³Á¤ÇÑ È£½ºÆ®ÀÇ IP°¡ µ¿ÀÛÇÏ´ÂÁöÀÇ ¿©ºÎ¿Í´Â °ü°è¾øÀÌ ÁöÁ¤µÈ ÀÀ´ä¸¸À» Á¦°øÇϵµ·Ï µ¿ÀÛÇϴ ü°è¶ó´Â °ÍÀÌ´Ù.
¹°·Ð ÃÖ±ÙÀÇ ³×ÀÓ¼¹öµéÀº ´Ù¾çÇÑ ¿ä±¸¸¦ ¹Ý¿µÇϱâ À§ÇØ °íµµ·Î ¹ß´ÞÇϰí ÀÖ´Â °ÍÀº »ç½ÇÀÌ´Ù. ÁúÀÇÇϴ Ŭ¶óÀ̾ðÆ®ÀÇ Áö¸®Àû À§Ä¡¸¦ ÂüÁ¶ÇØ °¡±î¿î Áö¿ªÀÇ ¼¹ö¸¦ ÀÀ´äÇÑ´ÙµçÁö, Áö¸®ÀûÀ¸·Î ´Ù¼öÀÇ ³×ÀÓ¼¹ö¸¦ ÁغñÇϰí À̵éÀ» µ¿ÀÏÇÑ IPÁÖ¼Ò·Î ¹¾î any cast °°Àº ¹æ¹ýÀ¸·Î °í°¡¿ë¼ºÀ» ±¸ÇöÇÑ´ÙµçÁö, ±×¸®°í ³×ÀÓ¼¹ö¿¡ µî·ÏµÈ È£½ºÆ®µéÀÌ µ¿ÀÛÇÏ´ÂÁö ¿©ºÎ¸¦ ÁÖ±âÀûÀ¸·Î Çコüũ¸¦ ¼öÇàÇÏ°í ¹®Á¦°¡ ¹ß»ýÇÑ °æ¿ì ÁöÁ¤ÇÑ fallback È£½ºÆ® ±×·ìÀ¸·Î ÀÀ´äÀ» ¿ìȸÇϰųª, TTLÀ» 0¿¡ °¡±õ°Ô ¼³Á¤Çؼ º¯È¿¡ ´õ ºü¸¥ ´ëÀÀÀ» Çϵµ·Ï ÇÑ´ÙµçÁö ÇÏ´Â °ÍµéÀÌ ¹Ù·Î ±×·¸´Ù.
³×ÀÓ¼¹ö´Â ÀÎÅͳݿ¡¼´Â ¾ø¾î¼´Â ¾È µÉ Á¸Àç±â´Â ÇÏÁö¸¸, ±×¸®°í À§¿¡ ¿°ÅÇÑ ´Ù¾çÇÑ ±â´Éµé°ú ÇÔ²² ¼ºñ½ºÀÇ À¯¿¬¼ºÀ» ³ô¿©ÁÙ ¼ö ÀÖ´Â ¹æ¹ýµéÀÌ Á¸ÀçÇϱâ´Â ÇÏÁö¸¸, ¸¸¾à ³»ºÎ ¼ºñ½º °£ ¿¬µ¿À» À§ÇØ ³×ÀÓ¼¹ö°¡ ÇÊ¿äÇÑ °æ¿ì¶ó¸é ¾î¶³±î.
¿ì¸®´Â ¸Å¿ì ÀÚÁÖ, ¼ºñ½º¿¡ º°µµÀÇ ³»ºÎ ³×ÀÓ¼¹ö¸¦ ¹èÄ¡ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. À̰ÍÀº ½Ã½ºÅÛÀÇ È¯°æ ¼³Á¤À» ³×ÀÓ¼¹ö·Î ºÐ¸®ÇÔÀ¸·Î½á º¯°æ¿¡ Á¶±Ý ´õ À¯¿¬ÇÔÀ» È®º¸ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ Àü¼úÇßµí, ÇÏ·ç¿¡ ¼ö ´ë, ¶Ç´Â ¼ö½Ê ´ë, ¾Æ´Ï¸é ¼ö¹é ¼öõ ´ëÀÇ È£½ºÆ®°¡ »ý°Ü³ª°í »ç¶óÁø´Ù¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î. À̸¦ À§ÇØ ³»ºÎ ³×ÀÓ¼¹ö¸¦ ¾÷µ¥ÀÌÆ®ÇÏ´Â ½ºÅ©¸³Æ®¶óµµ ¾²±â¿£ ³Ê¹« ºñÈ¿À²ÀûÀ̸ç, ³×ÀÓ¼¹ö °ü¸®¶ó´Â ÀÛ¾÷ÀÌ ¾ÖÃÊ¿¡ ±×´ÙÁö ½¬¿î ÀÏÀÌ ¾Æ´Ï´Ù.
µû¶ó¼ ¿ì¸®´Â ¼ºñ½º ³»ºÎ¿¡ ¾ÖÇø®ÄÉÀ̼ǰú ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¼·Î¸¦ ã°í, È£½ºÆ®°¡ ´Ù¸¥ È£½ºÆ®¸¦ ã¾Æ³»´Â µ¿ÀÛÀÌ ¾Æ¹«¸® ¸¹ÀÌ, ±×¸®°í ÀÚÁÖ ¹ß»ýÇÏ´õ¶óµµ Áö¿øÇÒ ¼ö ÀÖ´Â »õ·Î¿î ¹æ¹ýÀÌ ÇÊ¿äÇÏ´Ù. ±×¸®°í ÀÌ »õ·Î¿î ¹æ¹ýÀ» ÁöĪÇÏ´Â ´Ü¾î´Â ¿©·¯ °³°¡ ÀÖÀ» ¼ö ÀÖÁö¸¸, º¸Åë ‘¼ºñ½º µð½ºÄ¿¹ö¸®’¸¦ »ç¿ëÇÑ´Ù.
¼ºñ½º µð½ºÄ¿¹ö¸®·Î ÁöĪµÇ´Â µµ±¸µéÀÌ ¼öÇàÇÏ´Â µ¿ÀÛÀÇ ÇÙ½ÉÀº ºñ±³Àû °£´ÜÇÏ´Ù. Ŭ·¯½ºÅÍ·Î ±¸¼ºµÈ ¼ºñ½º µð½ºÄ¿¹ö¸® ¼¹ö´Â Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÚ½ÅÀÌ °®°í Àִ ȣ½ºÆ®ÀÇ Á¤º¸¸¦ Àü´Þ ¹× ¾÷µ¥ÀÌÆ®ÇØÁØ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â ±âµ¿µÇ´Â ¼ø°£ ÀÚ½ÅÀÇ ³×Æ®¿öÅ© Á¤º¸, ±¸µ¿Çϰí ÀÖ´Â ¾ÖÇø®ÄÉÀÌ¼Ç Á¤º¸¿Í °°Àº ³»¿ëÀ» ¼ºñ½º µð½ºÄ¿¹ö¸® ¼¹ö¿¡ Àü´ÞÇÑ´Ù.
¼¹ö´Â Àü´Þ¹ÞÀº Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î ÇÊ¿äÇϸé Çコüũ¸¦ ¼öÇàÇϰí, °í°¡¿ë¼ºÀ» À§ÇØ Å¬·¯½ºÅ͸µµÅÀÖ´Â ´Ù¸¥ ¼¹ö¿Í ¾÷µ¥ÀÌÆ®µÈ ³»¿ëÀ» µ¿±âÈÇÑ´Ù. µð½ºÄ¿¹ö¸® Ŭ¶óÀÌ¾ðÆ®µéÀº ¼¹ö·ÎºÎÅÍ Àü´Þ¹ÞÀº Á¤º¸¸¦ ÁöÁ¤µÈ ½Ã°£µ¿¾È ij½ÌÀ» ¼öÇàÇÔÀ¸·Î½á, ¼ºñ½º µð½ºÄ¿¹ö¸® ¼¹ö°¡ µ¿ÀÛÇÏÁö ¾Ê´Â °æ¿ì¿¡µµ ÀÌ¹Ì ÀúÀåµÈ ¸®½ºÆ®¸¦ ¹ÙÅÁÀ¸·Î ¼¹ö ÀÀ´ä ¾øÀ̵µ ´Ù¸¥ È£½ºÆ®¿¡ ¿äûÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
À§ ±×¸²Àº ³ÝÇø¯½º À¯·¹Ä«(Eureka)°¡ µ¿ÀÛÇÏ´Â ¹æ½ÄÀ» º¸¿©ÁØ´Ù. À¯·¹Ä«´Â ¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ®·Î ÀÌ·ïÁ®ÀÖÀ¸¸ç, Ŭ¶óÀÌ¾ðÆ®´Â °¢ ¾ÖÇø®ÄÉÀÌ¼Ç ¾È¿¡¼ ¿¡ÀÌÀüƮó·³ µ¿ÀÛÇÑ´Ù. ³ÝÇø¯½º¿¡¼´Â À¯·¹Ä« ¼¹ö¸¦ ´Ù¼öÀÇ µ¥ÀÌÅͼ¾ÅÍ¿¡ ±¸¼ºÇØ ÇϳªÀÇ À¯·¹Ä« ¼¹ö¿¡ ¹®Á¦°¡ ¹ß»ýÇÏ´õ¶óµµ Àüü ¼ºñ½º¿¡´Â ÀÌ»óÀÌ ¾øµµ·Ï ±¸¼ºÇϰí ÀÖ´Ù. ÀÌ´Â À¯·¹Ä« Ŭ¶óÀÌ¾ðÆ®µéÀÌ µî·ÏµÈ È£½ºÆ®ÀÇ Á¤º¸¸¦ ¹Þ¾Æ¿À´Âµ¥ ÇϳªÀÇ ¼¹ö¸¸À» »ç¿ëÇϵµ·Ï ±¸¼ºÇÏÁö ¾Ê°í ´Ù¼öÀÇ ¼¹ö¸¦ ÂüÁ¶Çϵµ·Ï ±¸ÇöµÆ±â ¶§¹®¿¡ °¡´ÉÇÏ´Ù.
Ŭ¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ÇÀº ½ÃÀ۵Ǵ ¼ø°£ ÀÚ½ÅÀÇ Á¤º¸¸¦ ¼¹ö·Î µî·ÏÇÑ´Ù. ÀÌ·¸°Ô µî·ÏµÈ ½Å±Ô Ŭ¶óÀÌ¾ðÆ® Á¤º¸´Â ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®µé¿¡ Àü´ÞµÇ°í, À̸¦ ÅëÇØ ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ǵéÀº ‘¼·Î Åë½ÅÀÌ °¡´ÉÇÑ’ »óŰ¡ µÈ´Ù. À̸¦ ÅëÇØ Ŭ¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼´Â ‘µ¿ÀûÀ¸·Î º¯ÈÇϴ ȯ°æ¿¡ ´ëÇÑ Á¤º¸’¸¦ ¹ÙÅÁÀ¸·Î ¿øÇϴ ȣ½ºÆ® ¶Ç´Â ¾ÖÇø®ÄÉÀ̼ǿ¡ Á÷Á¢ ¿¬°á, ƯÁ¤ È£½ºÆ®°¡ ÀÀ´äÇÏÁö ¾Ê´Â °æ¿ì ´Ù¸¥ È£½ºÆ®·Î ¹ë·±½Ì µîÀÇ ´Ù¾çÇÑ µ¿ÀÛÀ» ó¸®ÇÒ ¼ö ÀÖ´Â ´É·ÂÀÌ »ý±ä´Ù.
µû¶ó¼ Ŭ¶ó¿ìµå¿¡¼ µ¿ÀÛÇÏ´Â °ÅÀÇ ¸ðµç ³ÝÇø¯½ºÀÇ ¾ÖÇø®ÄÉÀ̼ǵéÀº ÀÌ À¯·¹Ä« ¼ºñ½º¿¡ ÀÚ½ÅÀ» µî·ÏÇϰí, ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǵ鿡¼ Á¢±ÙÇϴµ¥ ¹®Á¦°¡ ¾øµµ·Ï ±¸¼ºÇϰí ÀÖ´Ù. ±×¸®°í ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀº ¸¶ÀÌÅ©·Î¼ºñ½ºÀÏ »Ó¸¸ ¾Æ´Ï¶ó ij½Ã, ¿µ±¸Àû µ¥ÀÌÅÍÀúÀå¼Ò µî ¸Å¿ì ´Ù¾çÇÏ´Ù.
¼ºñ½º µð½ºÄ¿¹ö¸®ÀÇ ±¸¼ºÀº Ŭ¶ó¿ìµå ȯ°æ¿¡¼ ¸Å¿ì ³î¶ó¿î ÀåÁ¡µéÀ» Á¦°øÇÑ´Ù. ù ¹øÂ°´Â ³ôÀº °¡¿ë¼ºÀÌ´Ù. ¿¹¸¦ µé¾î ƯÁ¤ ¾ÖÇø®ÄÉÀ̼ǿ¡ ¹®Á¦°¡ ¹ß»ýÇÑ °æ¿ì, µ¿ÀÏÇÑ ¿ªÇÒÀ» ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ» »õ·Î¿î ¼¹ö ¶Ç´Â ÄÁÅ×À̳ʿ¡ ÀûÀçÇØ ±âµ¿ÇÑ´Ù. ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ±âµ¿µÇ°í ³ª¼ ¾ó¸¶ Áö³ªÁö ¾Ê¾Æ ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǵéÀº ½Å±Ô·Î »ý¼ºµÈ ¼¹ö¿¡ ¿äûÀ» º¸³¾ ¼ö ÀÖ°Ô µÈ´Ù. ±×¸®°í ±âÁ¸¿¡ ¹®Á¦°¡ µÆ´ø ¼¹ö³ª ÄÁÅ×À̳ʴ À¯·¹Ä« ¼¹öÀÇ ¸®½ºÆ®¿¡¼ »ç¶óÁø´Ù.
Áï, ¹®Á¦°¡ µÇ´Â ¸®¼Ò½º¸¦ ºü¸£°Ô ´ëóÇϰųª Ãß°¡ 󸮷®ÀÌ ÇÊ¿äÇÑ °æ¿ì ¸®¼Ò½º¸¦ ºü¸£°Ô Ãß°¡Çϰí, ÇÊ¿ä ¾øÀ» ¶§ Á¦°ÅÇÏ´Â µ¿ÀÛÀ» Áö¿øÇϱ⠶§¹®¿¡ ³ôÀº °¡¿ë¼ºÀ» Á¦°øÇÏ´Â ±âº» µµ±¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
µÎ ¹øÂ°´Â Ŭ¶óÀÌ¾ðÆ®°¡ ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®¿¡ ‘¾ÖÇø®ÄÉÀÌ¼Ç À̸§’À» ÅëÇØ ÄÚµå ³»¿¡¼ Ŭ·¡½º ¼öÁØ¿¡ ÇÊ¿äÇÑ ¸®¼Ò½º¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ´ëºÎºÐÀÇ ¸¶ÀÌÅ©·Î¼ºñ½º ±¸Á¶¿¡¼ ÇϳªÀÇ ¸¶ÀÌÅ©·Î¼ºñ½º´Â ´Ù¸¥ ¸¶ÀÌÅ©·Î¼ºñ½º¿¡ ·Îµå¹ë·±¼¸¦ ÅëÇØ Á¢±ÙÇÑ´Ù. ÇÏÁö¸¸ ¼ºñ½º µð½ºÄ¿¹ö¸®¸¦ »ç¿ëÇÏ°Ô µÇ¸é Ŭ¶óÀÌ¾ðÆ®°¡ Á÷Á¢ ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ ³×Æ®¿öÅ© Á¤º¸¿Í ±¸µ¿ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ Á¤º¸¸¦ °®°í ÀÖÀ¸¸ç, À̸¦ ¹ÙÅÁÀ¸·Î Áß°£¿¡ ·Îµå¹ë·±¼°¡ ¾ø¾îµµ ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ Á¢±ÙÀÌ °¡´ÉÇÏ°Ô µÇ´Â °ÍÀÌ´Ù.
ÇÏ·ç¿¡ ¼öõ, ¼ö¸¸ °³ÀÇ È£½ºÆ®¿¡ º¯È°¡ ¹ß»ýÇÏ´õ¶óµµ ¼ºñ½º¿¡¼ ¿øÇÏ´Â ¹æ¹ýÀ¸·Î µ¿ÀÏÇÏ°Ô °ü¸®µÇ°í, À̸¦ ÅëÇØ ±Ã±ØÀûÀ¸·Î´Â ¾î´À È£½ºÆ®°¡ ¾îµð¿¡ À§Ä¡ÇÏ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °ü¸®ÀÚ°¡ º°µµ ½ºÅ©¸³Æ®³ª ¼öµ¿À¸·Î °ü¸®ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ±×¸®°í ¾ÖÇø®ÄÉÀ̼ÇÀº ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ µ¿ÀÛÇϴ ȣ½ºÆ®¸¦ FQDNÀÌ ¾Æ´Ñ ‘¾ÖÇø®ÄÉÀÌ¼Ç À̸§’À¸·Î Á¢±ÙÀÌ °¡´ÉÇÏ´Ù´Â Ãß°¡Àû ÀåÁ¡À» Á¦°øÇÑ´Ù. À̰ÍÀº Áï, ¾ÖÇø®ÄÉÀÌ¼Ç ÄÚµå ³»¿¡¼ ÂüÁ¶µÅ¾ß ÇÏ´Â ´Ù¸¥ ¼ºñ½º ¶Ç´Â ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ È£ÃâÇϰíÀÚ ÇÏ´Â °æ¿ì ³×ÀÓ¼¹ö¿¡¼ »ç¿ëÇÏ´Â µµ¸ÞÀÎ À̸§ÀÌ ¾Æ´Ñ ¾ÖÇø®ÄÉÀÌ¼Ç À̸§À» »ç¿ëÇÑ´Ù´Â °ÍÀÌ´Ù.
½ºÇÁ¸µ Ŭ¶ó¿ìµå ÇÁ·ÎÁ§Æ®¿¡¼´Â ÀÌ ³ÝÇø¯½ºÀÇ À¯·¹Ä« ¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Á¦°øÇÑ´Ù. ÀÌ ¿Ü¿¡µµ Consul, Zookeeper µîÀÇ µµ±¸¸¦ ½ºÇÁ¸µºÎÆ®ÀÇ ¹æ¹ýÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
Config server¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ±â¾ïÇϰí ÀÖ´Ù¸é, À¯·¹Ä« ¼¹öµµ ¸Å¿ì ¼Õ½±°Ô ½ÃÀÛÇÒ ¼ö ÀÖ´Ù. À¯·¹Ä« ¼¹ö ¿ª½Ã Config serverÀÇ Å¬¶óÀÌ¾ðÆ®°¡ µÉ ¼ö ÀÖ´Ù. ¾Æ·¡ ¼ø¼¸¦ ÅëÇØ ½ºÇÁ¸µ Ŭ¶ó¿ìµåÀÇ À¯·¹Ä« ¼¹ö¸¦ ÁغñÇÒ ¼ö ÀÖ´Ù.
¢º http://start.spring.io ¿¡ Á¢±ÙÇÑ´Ù.
¢º artifact¿¡ discovery-service¸¦ ±âÀÔÇÑ´Ù.
¢º dependencies¿¡ Eureka Server, Config client¸¦ Ãß°¡Çϰí Generate project¸¦ ´·¯ ÇÁ·ÎÁ§Æ®¸¦ ´Ù¿î·ÎµåÇÑ´Ù.
´Ù¿î·ÎµåÇÑ ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇϱâ Àü¿¡, Config server¸¦ ÁغñÇØ¾ß ÇÑ´Ù. ÀÌÀü¿¡ ÁغñÇÑ Config server¿¡¼ application.properties ÆÄÀÏÀÇ ´ÙÀ½ ³»¿ëÀ» º¯°æÇØÁÖµµ·Ï ÇÏÀÚ. Áö±ÝºÎÅÍ´Â ´Ù¼ö ¾ÖÇø®ÄÉÀ̼ÇÀÌ ÁغñµÇ¹Ç·Î ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼³Á¤À» º¯°æÇÏÁö ¾Êµµ·Ï ÁÖÀÇÇÏÀÚ.
config-serverÀÇ application.properties¸¦ bootstrap.properties·Î ¸®³×ÀÓÇϰí, ¾Æ·¡ ³»¿ëÀ» ³Ö´Â´Ù.
spring.application.name=config-server
spring.cloud.config.server.git.uri=https://github.com/younjinjeong/demo-config
management.security.enabled=false
server.port=8888 |
´Ù¿î·Îµå ¹ÞÀº À¯·¹Ä« ¼¹ö ÇÁ·ÎÁ§Æ®ÀÇ ¾ÐÃàÀ» ÇØÁ¦Çϰí IDE·Î ¿¬´Ù. com/example/DiscoveryServiceApplication.java ÆÄÀÏ¿¡ @EnableEurekaServer ÀÇ ¾î³ëÅ×À̼ÇÀ» Ãß°¡ÇÑ´Ù.
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServiceApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryServiceApplication.class, args);
}
}
|
À¯·¹Ä« ¼¹ö ÇÁ·ÎÁ§Æ® ÇÏÀ§ÀÇ application.properties ¸¦ bootstrap.properties ·Î ¹Ù²Ù°í ¾Æ·¡ÀÇ ³»¿ëÀ» ³Ö´Â´Ù.
spring.application.name=discovery-service
spring.cloud.config.uri=http://localhost:8888/ |
ÀúÀåÇÏ°í ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇϰí, ¾Æ·¡¿Í °°Àº ¸Þ¼¼Áö¸¦ º»´Ù¸é ¼º°øÀûÀ¸·Î À¯·¹Ä« ¼¹ö°¡ ÁغñµÈ °ÍÀÌ´Ù.
2017-04-18 12:00:46.600 INFO 21742 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http)
2017-04-18 12:00:46.601 INFO 21742 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8761
2017-04-18 12:00:46.604 INFO 21742 --- [ main] com.example.DiscoveryServiceApplication : Started DiscoveryServiceApplication in 6.39 seconds (JVM running for 6.718) |
·ÎÄà ȣ½ºÆ®ÀÇ 8761 Æ÷Æ®¿¡ À¯·¹Ä« ¼¹ö°¡ ½ÃÀ۵ƴÙ. Á¢¼ÓÇØº¸µµ·Ï ÇÏÀÚ. ºê¶ó¿ìÀú¸¦ »ç¿ëÇÏ¸é µÈ´Ù.
µ¿ÀÛÇϰí ÀÖ´Â À¯·¹Ä« ¼¹öÀÇ ´Ù¾çÇÑ ¼³Á¤À» È®ÀÎÇÒ ¼ö ÀÖ´Ù. À̵é Áß ‘Instance currently registered with Eureka’ Ç׸ñ¿¡ À¯·¹Ä« ¼¹ö¿¡ µî·ÏµÈ Ŭ¶óÀÌ¾ðÆ®µéÀÇ Á¤º¸°¡ ³ªÅ¸³´Ù. ÇöÀç À¯·¹Ä« ¼¹öÀÇ ¼³Á¤Àº ½º½º·Î°¡ ½ÃÀÛµÇ¸é¼ µî·ÏÇϵµ·Ï Ç߱⿡, À¯·¹Ä« ¼¹öÀÇ spring.application.nameÀÌ DISCOVERY-SERVICE·Î µî·ÏµÈ °ÍÀ» º¼ ¼ö ÀÖ´Ù.
Ŭ¶óÀÌ¾ðÆ®¸¦ ½ÃÀÛÇϱ⿡ ¾Õ¼, À¯·¹Ä« ¼¹ö°¡ Á¦°øÇÏ´Â Á¤º¸¸¦ Á¶±Ý ´õ »ìÆìº¸µµ·Ï ÇÏÀÚ. http://localhost:8761/eureka/apps ÁÖ¼Ò·Î Á¢±ÙÇØº¸µµ·Ï ÇÑ´Ù. ³×Æ®¿öÅ© Á¤º¸»Ó¸¸ ¾Æ´Ï¶ó ÇöÀç ¾ÖÇø®ÄÉÀ̼ÇÀÇ »óÅÂ, µ¿ÀÛÇÏ´Â Æ÷Æ®, ¾ÖÇø®ÄÉÀ̼ÇÀÇ À̸§ µî ¸Å¿ì ´Ù¾çÇÑ Á¤º¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. À¯·¹Ä« ½Ã½ºÅÛ Ã¼°è´Â À̸¦Å×¸é µ¿ÀûÀ¸·Î °øÀ¯µÇ´Â ÀüȹøÈ£ºÎ °°Àº °ÍÀ¸·Î ÀÌÇØÇÏ¸é ½±´Ù. ÁÖ¼Ò¿Í °ÅÁÖ »óŰ¡ ÀÚÁÖ º¯°æµÇ´Â ¼¼»ó¿¡¼ ÇÊ¿äÇÑ ÀüȹøÈ£ºÎ´Ù.
À¯·¹Ä« ¼¹ö¸¦ ¼³Á¤Çß´Ù¸é, ÀÌÁ¦ Ŭ¶óÀÌ¾ðÆ®¸¦ ¿¬°áÇØº¼ Â÷·Ê´Ù. Áö³¹ø Config server¸¦ ¼³Á¤Çϸç ÁغñÇß´ø simple-client¸¦ Àç»ç¿ëÇϱâ·Î ÇÏÀÚ. simple-client¸¦ ½ºÇÁ¸µ À̴ϼȶóÀÌÀú(start.spring.io)¸¦ ÅëÇØ »ý¼ºÇÒ ¶§ Discovery client (Eureka client)¸¦ Ãß°¡ÇÏÁö ¾Ê¾Ò´Ù¸é ÀÇÁ¸¼ºÀ» Ãß°¡ÇØÁÙ Çʿ䰡 ÀÖ´Ù. ¾Æ·¡ÀÇ ÀÇÁ¸¼º ¼³Á¤À» simple-client ÇÁ·ÎÁ§Æ®ÀÇ pom.xml ÆÄÀÏ¿¡ Ãß°¡Çϵµ·Ï ÇÏÀÚ.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency> |
ÀÌÈÄ simple-client ÇÁ·ÎÁ§Æ®ÀÇ com/example/SimpleClientApplication.java ÆÄÀÏ¿¡ À¯·¹Ä« Ŭ¶óÀÌ¾ðÆ®¸¦ »ç¿ëÇϱâ À§ÇÑ ¾î³ëÅ×À̼ÇÀ» ¾Æ·¡¿Í °°ÀÌ Ãß°¡ÇÏÀÚ.
package com.example;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@EnableEurekaClient
public class SimpleClientApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleClientApplication.class, args);
}
}
@RefreshScope
@RestController
class MessageRestController {
@Value("${message}")
private String message;
@RequestMapping("/msg")
String message() {
return this.message;
}
}
|
¸ðµç Áغñ°¡ ³¡³µ´Ù. simple-client ½ºÇÁ¸µºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸µ¿Çغ¸µµ·Ï ÇÏÀÚ. ¹®Á¦¾øÀÌ ±¸µ¿µÆ´Ù¸é ´Ù½Ã À¯·¹Ä« ¼¹ö http://localhost:8761 ¿¡ Á¢¼ÓÇØº¸ÀÚ.
SIMPLE-CLIENT ¼ºñ½º°¡ Á¤»óÀûÀ¸·Î µî·ÏµÆ´Ù. ¾Æ·¡ Ä¿¸Çµå¸¦ ÅëÇØ ´õ ¸¹Àº simple-client ¼ºñ½º¸¦ ½ÃÀÛÇϰí Á¾·áÇØº¸µµ·Ï ÇÏÀÚ.
$ cd simple-client
$ PORT=9989 java -jar target/simple-client-0.0.1-SNAPSHOT.jar |
´Ù½Ã À¯·¹Ä« ¼¹ö¿¡ Á¢±ÙÇØ º¸¸é simple-client ¾ÖÇø®ÄÉÀ̼ÇÀÇ status¿¡ ¼ýÀÚ°¡ º¯°æµÇ°í, ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸µÅ©°¡ Ãß°¡µÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´Ù½Ã ¾ÖÇø®ÄÉÀ̼ÇÀ» Á¾·áÇÏ¸é »ç¶óÁø´Ù.
´ÙÀ½À¸·Î ³Ñ¾î°¡±â Àü¿¡ Áö±Ý±îÁöÀÇ µ¿ÀÛ¿¡ ´ëÇØ Á¤¸®Çغ¸µµ·Ï ÇÏÀÚ. À¯·¹Ä« ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ¼³Á¤Àº ¸ðµÎ Config server¸¦ ÅëÇØ Àü´Þ¹Þ°í ÀÖ´Ù. ¸ÕÀú config server°¡ ÂüÁ¶ÇÏ´Â githubÀÇ ¼³Á¤ÀÌ ´ã±ä ÄÚµå ÀúÀå¼ÒÀÇ À§Ä¡´Â ¿©±â(https://github.com/younjinjeong/demo-config)´Ù. ¸µÅ©¿¡ ´ã°ÜÁø ÆÄÀϵéÀ» »ìÆìº¸¸é, application.properties Çϳª¿Í °¢ ½ºÇÁ¸µºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç À̸§À¸·Î ÇÒ´çµÈ ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤ ÆÄÀϵéÀÌ Á¸ÀçÇÑ´Ù.
½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀº ½ÃÀÛµÇ¸é ¸ÕÀú ºôµå ½Ã ÂüÁ¶ÇÑ bootstrap.properties(¶Ç´Â yml)À» ÂüÁ¶ÇÑ´Ù. ¿©±â¿¡´Â º¸Åë spring.application.name ¶Ç´Â config server À§Ä¡¿Í °°ÀÌ ÀÚÁÖ º¯ÇÏÁö ¾Ê´Â Á¤º¸¸¦ ³Ö´Â´Ù. ±×·¸°Ô ½ÃÀÛµÈ ¾ÖÇø®ÄÉÀ̼ÇÀº ÁöÁ¤µÈ config server·ÎºÎÅÍ ¼³Á¤À» ³»·Á ¹Þ´Â´Ù.
À̶§ application.properties¿¡ ´ã±ä ³»¿ëÀº ¸ðµç ¾ÖÇø®ÄÉÀ̼ÇÀÌ °øÅëÀûÀ¸·Î ÂüÁ¶Çϸç, ¿©±â¿¡ ÀÚ½ÅÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç À̸§À¸·Î ÁöÁ¤µÈ ¼³Á¤ ÆÄÀÏÀ» °¡Á®¿Í º´ÇÕÇÑ´Ù. À̶§ ´õ ³ôÀº ¿ì¼±±ÇÀ» °¡Áö´Â ¼³Á¤Àº ¾ÖÇø®ÄÉÀÌ¼Ç À̸§À¸·Î Æ¯ÈµÈ ¼³Á¤ ÆÄÀÏ¿¡ ´ã±ä °ÍÀÌ´Ù.
º» ³»¿ë¿¡¼´Â ¼Ò°³µÇÁö ¾Ê¾ÒÁö¸¸, ȯ°æº°·Î ÇÁ·ÎÆÄÀÏÀ» ÁöÁ¤ÇØ Àû¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. À̶§´Â ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀÌ ½ÃÀÛÇÏ´Â ¼¹ö³ª ÄÁÅ×À̳ʿ¡ ½Ã½ºÅÛ È¯°æ º¯¼ö¿¡ profile ÀÌ ´ã±ä ³»¿ëÀ» Àü´ÞÇÏ´Â ¹æ½ÄÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖ´Ù. ¿ª½Ã ÄÚµåÀÇ º¯°æ ¾øÀÌ °¢ ȯ°æ¿¡ Á¾¼ÓÀûÀÎ ¼³Á¤À» Àû¿ëÇÏ´Â ¸Å¿ì ¿ì¾ÆÇÑ ¹æ¹ýÀ̶ó°í ÇÒ ¼ö ÀÖ°Ú´Ù.
demo-config ÄÚµå ÀúÀå¼ÒÀÇ ³»¿ë¿¡¼ ÇöÀç Àû¿ëµÇ´Â ¼³Á¤Àº application.properties, discovery-service.properties, ±×¸®°í simple-client.propertiesÀÇ ¼³Á¤À̶ó°í ÇÒ ¼ö ÀÖ´Ù. À̰͵éÀº ½Ã°£ÀÌ µÇ¸é õõÈ÷ »ìÆìºÁµµ ¹«¹æÇÏ´Ù.
Config server¿Í À¯·¹Ä« ¸ðµÎ ´õ ³ôÀº ¼öÁØÀ¸·Î °¡¿ë¼ºÀ» ³ôÀ̰ųª ÀÎÁõ µîÀ» ÅëÇÏ´Â ¹æ¹ýÀ¸·Î Á¤º¸¸¦ ÂüÁ¶ÇÒ ¼ºñ½º¸¦ Á¦ÇÑÇÒ ¼ö ÀÖ´Ù. ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº °¢°¢ ½ºÇÁ¸µ Ŭ¶ó¿ìµå ¼ºñ½º¿¡ ´ëÇÑ ¸Å´º¾óÀ» ÂüÁ¶ÇÏ´Â °ÍÀ» ±Ç°íÇÑ´Ù.
À̹ø¿¡ »ìÆìº» ½ºÇÁ¸µºÎÆ®, ½ºÇÁ¸µ Ŭ¶ó¿ìµåÀÇ Config server¿Í À¯·¹Ä« ¼¹ö/Ŭ¶óÀÌ¾ðÆ®´Â Å¬¶ó¿ìµå ±â¹Ý ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸Çö¿¡ ÇÊ¿äÇÑ ±âº»ÀûÀÎ Á¢±ÙÀ» ¼öÇàÇϱ⿡ ¸Å¿ì ÁÁÀº µµ±¸´Ù. ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ¿°µÎ¿¡ µÎ´Â °æ¿ì, °¢°¢ÀÇ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ½ºÇÁ¸µºÎÆ®¸¦ ÅëÇØ °³¹ßÇϰí, À̵鿡 ÇÊ¿äÇÑ ¼³Á¤À̳ª ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ Á¤º¸¸¦ °øÀ¯ÇÏ´Â ¹æ¹ýÀ» ½ºÇÁ¸µ Ŭ¶ó¿ìµå¸¦ ÅëÇØ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
½ºÇÁ¸µ Ŭ¶ó¿ìµå¿¡´Â ÀÌ µÎ °¡Áö ¿Ü¿¡µµ API Gateway, Distributed tracking, ¼Å¶ ºê·¹ÀÌÄ¿, ¸¶ÀÌÅ©·Î ÇÁ¶ô½Ã, Ŭ¶óÀÌ¾ðÆ® ·Îµå ¹ë·±½Ìµî ¸Å¿ì ´Ù¾çÇÑ µµ±¸°¡ Æ÷ÇÔµÅÀÖ´Ù. À̵éÀº Ŭ¶ó¿ìµå ȯ°æ¿¡¼ µ¿ÀÛÁßÀÎ ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ °¡½Ã¼º È®º¸, ´Ù¿îŸÀÓ ¾øÀÌ Å¬¶óÀ̾ðÆ®ÀÇ ¿äû È帧À» ¼öÁ¤, ±×¸®°í ƯÁ¤ ¼ºñ½º¿¡ ¹®Á¦°¡ ¹ß»ýÇßÀ» ¶§ Àüü ¼ºñ½º¿¡ ¹®Á¦°¡ È®ÀåµÇÁö ¾Êµµ·Ï ÇÏ´Â µîÀÇ ¹æ¹ýÀ» Æ÷ÇÔÇÑ´Ù.
Ŭ¶ó¿ìµå¿¡¼ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ°í ¿î¿µÇÒ ¶§´Â '¾ðÁ¦ ¾îµð¼µç ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù' ´Â »ý°¢À» ±âº»À¸·Î °®°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÎÇÁ¶ó¸¦ ´ã´çÇÏ´Â ¿£Áö´Ï¾î»Ó¸¸ ¾Æ´Ï¶ó ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â ¿£Áö´Ï¾îµµ “À¯·¹Ä« ¼¹ö°¡ µ¿ÀÛÇÏÁö ¾Ê´Â »óÅ¿¡¼ ij½ÌµÈ Ŭ¶óÀÌ¾ðÆ® ¸®½ºÆ®ÀÇ ¼¹ö Áß Çϳª°¡ ½ºÄÉÀÏ ÀÎ µÅ ¾ø¾îÁø °æ¿ì¿¡´Â ¾î¶»°Ô ó¸®ÇÒ ¼ö ÀÖÁö?"¿Í °°Àº ½ÄÀÇ Á¢±ÙÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù.
±×¸®°í ÀÌ·± ¹æ½ÄÀ¸·Î Ŭ¶ó¿ìµå ¼ºñ½º °³¹ß ¹æÇâ¿¡ Á¢±ÙÇÏ´Â °ÍÀº ±Ã±ØÀûÀ¸·Î ¼ºñ½º¸¦ º¯È¿Í Àå¾Ö¿¡ ´õ¿í ´õ °ÇÏ°Ô ¸¸µé°í, À̸¦ ¹ÙÅÁÀ¸·Î ¾÷µ¥ÀÌÆ®°¡ ´õ¿í ºü¸¥ Áֱ⸦ °¡Áú ¼ö ÀÖ°Ô µÅ ½ÃÀåÀÌ ¿øÇÏ´Â ¼Óµµ·Î ¼ºñ½º¸¦ °³¼±ÇÒ ¼ö ÀÖÀ» °ÍÀ̸ç, ÀÌ´Â °æÀï·Â ÀÖ´Â ¼ºñ½º¸¦ ¸¸µé¾î ³»´Âµ¥ Ãʼ®ÀÌ µÉ °ÍÀÌ´Ù.
´ÙÀ½È¸¿¡´Â ¼ºñ½º µð½ºÄ¿¹ö¸®¸¦ ¹ÙÅÁÀ¸·Î ¹é¿£µåÀÇ ¸¶ÀÌÅ©·Î ¼ºñ½ºµé¿¡ Æ®·¡ÇÈÀ» Àü´ÞÇÏ´Â ‘Zuul’¿¡ ´ëÇØ »ìÆìº¸µµ·Ï ÇÏÀÚ. |