[ijġÅ×À̺í] ÇÕ°Ý ÀÚ±â¼Ò°³¼
ÀÎÅͳݡ¤IT¡¤Åë½Å¡¤¸ð¹ÙÀÏ¡¤°ÔÀÓÀ¥ÇÁ·Î±×·¡¸ÓÀ¥°³¹ß°æ·Â »ç¿ø3³âÂ÷
ÇÕ°Ý
1. ijġÅ×ÀÌºí¿¡ Áö¿øÇÑ ÀÌÀ¯´Â ¹«¾ùÀΰ¡¿ä?
Àú´Â ±â¼úÀ» ÅëÇØ ¿ÀÇÁ¶óÀÎÀÇ ±àÁ¤ÀûÀÎ °æÇèÀ» ±Ø´ëÈÇÏ°í »ç¶÷µéÀÇ ½Ã°£À» ´õ °¡Ä¡ ÀÖ°Ô ¸¸µå´Â ÀÏ¿¡ Å« ¸Å·ÂÀ» ´À³§´Ï´Ù. ÀÌ·¯ÇÑ ÀúÀÇ °¡Ä¡°üÀº, ´Ü¼øÈ÷ ºóÀÚ¸®¸¦ ä¿ì´Â ¿¹¾àÀ» ³Ñ¾î °í°´¿¡°Ô´Â Ưº°ÇÑ ¹Ì½Ä °æÇèÀ», Á¡ÁÖ¿¡°Ô´Â ¾ÈÁ¤ÀûÀÎ ¿î¿µÀ» ¼±¹°Çϴ ijġÅ×À̺íÀÇ ºñÀü°ú Á¤È®È÷ ÀÏÄ¡Çϱ⿡ Áö¿øÇÏ°Ô µÇ¾ú½À´Ï´Ù.
ƯÈ÷ ijġÅ×À̺íÀÇ ¹é¿£µå ½Ã½ºÅÛÀº ¡®½Ç½Ã°£¼º¡¯°ú ¡®µ¥ÀÌÅÍ Á¤ÇÕ¼º¡¯À̶ó´Â, ±â¼úÀûÀ¸·Î °¡Àå Èï¹Ì·Ó°í µµÀüÀûÀÎ °úÁ¦¸¦ ǰ°í ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù. ¿©·¯ »ç¿ëÀÚ°¡ µ¿½Ã¿¡ ƯÁ¤ ·¹½ºÅä¶ûÀÇ ÇÑÁ¤µÈ Á¼®À» ¿¹¾àÇÏ·Á´Â »óȲ¿¡¼ ¹ß»ýÇÏ´Â µ¿½Ã¼º À̽´¸¦ Á¦¾îÇϰí, ½Ç½Ã°£À¸·Î º¯ÇÏ´Â Á¼® Á¤º¸¸¦ ¸ðµç »ç¿ëÀÚ¿¡°Ô Áö¿¬ ¾øÀÌ Á¤È®ÇÏ°Ô µ¿±âÈÇÏ´Â ±â¼úÀº ijġÅ×ÀÌºí ¼ºñ½º ½Å·ÚµµÀÇ ÇÙ½ÉÀÔ´Ï´Ù. ¶ÇÇÑ, ¿¹¾à±Ý(³ë¼î ¹æÁö), ¿þÀÌÆÃ, °í°´ °ü¸® µî ·¹½ºÅä¶û ¿î¿µÀÇ ¸ðµç Á¢Á¡À» µðÁöÅзΠÀüȯÇÏ´Â °úÁ¤Àº ¹é¿£µå °³¹ßÀڷμ ±íÀÌ ÀÖ´Â µµ¸ÞÀÎ Àü¹®¼º°ú ±â¼úÀû ¿Ï¼ºµµ¸¦ µ¿½Ã¿¡ Ãß±¸ÇÒ ¼ö ÀÖ´Â ÃÖ°íÀÇ ±âȸ¶ó°í È®½ÅÇÕ´Ï´Ù.
ÀÌÀü ÀÌÄ¿¸Ó½º Ç÷§Æû¿¡¼ ÇÑÁ¤ ¼ö·® »óǰÀÇ ½Ç½Ã°£ Àç°í¸¦ °ü¸®ÇÏ´Â ½Ã½ºÅÛÀ» °³¹ßÇϸç, ºÐ»ê ¶ô(Distributed Lock)À» Ȱ¿ëÇØ µ¿½Ã ÁÖ¹®À¸·Î ÀÎÇÑ µ¥ÀÌÅÍ ºÒÀÏÄ¡(overselling) ¹®Á¦¸¦ ÇØ°áÇÑ °æÇèÀÌ ÀÖ½À´Ï´Ù. À̴ ijġÅ×À̺íÀÇ ÇÙ½É °úÁ¦ÀÎ ¡®Áߺ¹ ¿¹¾à ¹æÁö¡¯ ¹®Á¦¸¦ ÇØ°áÇÏ´Â µ¥ Á÷Á¢ÀûÀ¸·Î ±â¿©ÇÒ ¼ö ÀÖ´Â ÀúÀÇ ÇÙ½É ¿ª·®ÀÔ´Ï´Ù.
ÀÌÁ¦´Â ´Ü¼øÈ÷ »óǰ Àç°í¸¦ °ü¸®ÇÏ´Â °ÍÀ» ³Ñ¾î, »ç¶÷µéÀÇ ¼ÒÁßÇÑ ½Ã°£°ú °æÇèÀ» Ã¥ÀÓÁö´Â ¼ºñ½º¸¦ ¸¸µé°í ½Í½À´Ï´Ù. ±¹³» ÃÖ°íÀÇ ¹Ì½Ä Ç÷§ÆûÀ» ³Ñ¾î, °í°´ÀÇ ¸ðµç Ưº°ÇÑ ¼ø°£À» ÇÔ²²ÇÏ´Â ¼ºñ½º·Î ¼ºÀåÇϴ ijġÅ×À̺íÀÇ ¿©Á¤¿¡¼, °¡Àå ¾ÈÁ¤ÀûÀÌ°í ½Å·Úµµ ³ôÀº ±â¼ú ±â¹ÝÀ» ¸¸µå´Â ÇÙ½É °³¹ßÀÚ°¡ µÇ°Ú½À´Ï´Ù.
2. Áö¿øÀÚ´ÔÀÇ ÀåÁ¡Àº ¹«¾ùÀΰ¡¿ä?
ÀúÀÇ °¡Àå Å« ÀåÁ¡Àº ¡®¹Ì¼Ç Å©¸®Æ¼Äà ¼ºñ½ºÀÇ ¾ÈÁ¤¼ºÀ» Ã¥ÀÓÁö´Â ¹®Á¦ ÇØ°á ´É·Â¡¯ÀÔ´Ï´Ù. Àú´Â Àå¾Ö°¡ ¹ß»ýÇØ¼´Â ¾È µÇ´Â ÇÙ½É ±â´ÉÀϼö·Ï, ¹ß»ý °¡´ÉÇÑ ¸ðµç ¿§Áö ÄÉÀ̽º¸¦ °í·ÁÇÏ°í µ¥ÀÌÅÍÀÇ Á¤ÇÕ¼ºÀ» º¸ÀåÇÏ´Â °ß°íÇÑ ½Ã½ºÅÛÀ» ¼³°èÇÏ´Â µ¥ °Á¡ÀÌ ÀÖ½À´Ï´Ù.
ù°, ±ØÇÑÀÇ µ¿½Ã¼º ȯ°æ¿¡¼µµ µ¥ÀÌÅÍ Á¤ÇÕ¼ºÀ» º¸ÀåÇÏ´Â ¿ª·®ÀÔ´Ï´Ù.
°³ÀÎ ÇÁ·ÎÁ§Æ®¿¡¼ ¼±Âø¼ø ÄíÆù ¹ß±Þ À̺¥Æ®¸¦ ±¸ÇöÇϰí Å×½ºÆ®Çϸç, ÃÊ´ç ¼öõ °ÇÀÇ ¿äûÀÌ ¸ô¸®´Â »óȲÀ» °æÇèÇß½À´Ï´Ù. Ãʱ⠸ðµ¨Àº Race ConditionÀ¸·Î ÀÎÇØ ÄíÆùÀÌ Ãʰú ¹ß±ÞµÇ´Â ½É°¢ÇÑ ¹®Á¦°¡ ÀÖ¾ú½À´Ï´Ù. À̸¦ ÇØ°áÇϱâ À§ÇØ RedisÀÇ RedissonÀ» Ȱ¿ëÇÑ ºÐ»ê ¶ôÀ» µµÀÔÇÏ¿© ÀÓ°è ¿µ¿ª(Critical Section)À» ¿Ïº®ÇÏ°Ô Á¦¾îÇß°í, ºÎÇÏ Å×½ºÆ®¸¦ ÅëÇØ ´Ü ÇÑ °ÇÀÇ µ¥ÀÌÅÍ ºÒÀÏÄ¡ ¾øÀÌ ¸ðµç ¿äûÀ» ¾ÈÁ¤ÀûÀ¸·Î ó¸®ÇÔÀ» Áõ¸íÇß½À´Ï´Ù. ÀÌ·¯ÇÑ °æÇèÀº ¿©·¯ »ç¿ëÀÚ°¡ µ¿½Ã¿¡ ƯÁ¤ ½Ã°£´ëÀÇ ¸¶Áö¸· ³²Àº Å×À̺íÀ» ¿¹¾àÇÏ·Á´Â ijġÅ×À̺íÀÇ ÇÙ½ÉÀûÀÎ µ¿½Ã¼º ¹®Á¦¸¦ ÇØ°áÇÏ´Â µ¥ Á÷Á¢ÀûÀÎ ÇØ¹ýÀÌ µÉ °ÍÀÔ´Ï´Ù.
µÑ°, ¿¹Ãø ºÒ°¡´ÉÇÑ Æ®·¡ÇÈ¿¡µµ Èçµé¸² ¾ø´Â ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â ¼³°è ´É·ÂÀÔ´Ï´Ù.
Àú´Â ¡®Àα⠷¹½ºÅä¶û ¿¹¾à ¿ÀÇ¡¯°ú °°ÀÌ Æ¯Á¤ ½Ã°£¿¡ Æ®·¡ÇÈÀÌ ÆøÁõÇÏ´Â »óȲ¿¡ ´ëºñÇÏ´Â ½Ã½ºÅÛ ¼³°èÀÇ Á߿伺À» ±íÀÌ ÀÌÇØÇϰí ÀÖ½À´Ï´Ù. °ú°Å Æ®·¡ÇÈ ±ÞÁõÀ¸·Î ÀÎÇÑ Àå¾Ö¸¦ °ÞÀº ÈÄ, ÁÖ¿ä APIÀÇ ¼º´É °³¼± ÇÁ·ÎÁ§Æ®¸¦ ÁÖµµÇß½À´Ï´Ù. ºñµ¿±â 󸮰¡ °¡´ÉÇÑ ·ÎÁ÷Àº ¸Þ½ÃÁö Å¥(Kafka)·Î ºÐ¸®ÇÏ¿© Áï°¢ÀûÀÎ ÀÀ´äÀ» º¸ÀåÇß°í, ¹Ýº¹ÀûÀ¸·Î Á¶È¸µÇ´Â µ¥ÀÌÅʹ ij½Ã(Redis)¸¦ ´Ù°èÃþÀ¸·Î Àû¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽ºÀÇ ºÎÇϸ¦ 90% ÀÌ»ó ÁÙ¿´½À´Ï´Ù. ±× °á°ú, ÀÌÀü ´ëºñ 5¹è ÀÌ»óÀÇ Æ®·¡ÇÈÀ» ¾ÈÁ¤ÀûÀ¸·Î ó¸®ÇÏ´Â ½Ã½ºÅÛÀ» ±¸ÃàÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù. À̴ ijġÅ×À̺íÀÌ ¾î¶² »óȲ¿¡¼µµ °í°´¿¡°Ô ºü¸£°í ÄèÀûÇÑ ¿¹¾à °æÇèÀ» Á¦°øÇÏ´Â µ¥ ±â¿©ÇÒ °ÍÀÔ´Ï´Ù.
ÀÌó·³ Àú´Â »ç¿ëÀÚÀÇ ¼ÒÁßÇÑ ¿¹¾àÀÌ ¡®Àý´ë ½ÇÆÐÇÏÁö ¾Ê´Â´Ù¡¯´Â ¹ÏÀ½À» ÁÖ´Â ¹é¿£µå ½Ã½ºÅÛÀ» ¸¸µé ÀÚ½ÅÀÌ ÀÖ½À´Ï´Ù. ÀúÀÇ ¹®Á¦ ÇØ°á ´É·Â°ú ½Ã½ºÅÛ ¼³°è ¿ª·®À» ¹ÙÅÁÀ¸·Î, ijġÅ×À̺íÀÌ °í°´°ú Á¡ÁÖ ¸ðµÎ¿¡°Ô °¡Àå ½Å·Ú¹Þ´Â Ç÷§ÆûÀ¸·Î ¼ºÀåÇÏ´Â µ¥ ÇÙ½ÉÀûÀÎ ¿ªÇÒÀ» ÇϰڽÀ´Ï´Ù.