´ë±Ô¸ð Æ®·¡ÇÈÀ» ÀûÀº ºñ¿ëÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ´Â °í¼º´É ¼¹öÀÇ ºñ¹ÐÀº ¹«¾ùÀϱî? ½ºÇÁ¸µ ºÎÆ® °³¹ß, Å×½ºÆ®, ¹®¼È, º¸¾È, µµÄ¿È, ¿î¿µ±îÁö ¸ðµÎ¸¦ ÇÑ ±Ç¿¡ ¸¶½ºÅÍÇÏ´Â °ÍÀ» ¸ñÇ¥·Î, Àͼ÷ÇÏ°í ¼Õ½¬¿î ÀÌÄ¿¸Ó½º ¿¹Á¦¸¦ µû¶ó Çغ¸¸é¼ ´çÀå ¹Ù·Î È°¿ë °¡´ÉÇÑ ½ºÇÁ¸µ ºÎÆ®(Spring Boot), ½ºÇÁ¸µ À¥Ç÷°½º(WebFlux), ¸®¾×Ƽºê ÇÁ·Î±×·¡¹Ö(Reactive programming) ½ÇÀü È°¿ë Àü·«À» ÀÍÈú ¼ö ÀÖ´Ù! °£´ÜÇÑ Àå¹Ù±¸´Ï ¿¹Á¦¸¦ ¸®¾×ÅÍ(Reactor)¸¦ È°¿ëÇÑ ³íºí·ÎÅ·/ºñµ¿±â ¹æ½ÄÀ¸·Î ±¸ÇöÇÏ¸ç ºñ¹ÐÀ» ÆÄÇìÃĺ»´Ù. ½ºÇÁ¸µ ÇìÀÌƼ¿À½º(HATEOAS)¸¦ Àû¿ëÇؼ º¯°æ ¿©Æĸ¦ ÃÖ¼ÒÈÇÏ¸é¼ ÁøÈÇÏ´Â API¸¦ ¸¸µé¾îº¸°í, ½ºÇÁ¸µ ·¹½ºÆ® µ¶(REST Docs)À» »ç¿ëÇؼ ¼Ò½º ÄÚµå¿Í ÀÏÄ¡ÇÏ´Â API ¹®¼¸¦ ÀÛ¼ºÇغ»´Ù. AMQP ¸Þ½Ã¡À» È°¿ëÇؼ ´À½¼ÇÏ°Ô ¿¬°áµÈ À̺¥Æ® Á᫐ ¾ÆÅ°ÅØó¸¦ ±¸ÇöÇغ¸°í, ¾ç¹æÇâ ¸®¾×Ƽºê ÇÁ·ÎÅäÄÝÀÎ R¼ÒÄÏÀ» »ç¿ëÇؼ HTTPº¸´Ù È¿À²ÀûÀÎ ÃֽŠ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö ±â¹ýµµ ÀÍÈù´Ù.
VM¿þ¾î ¼Ò¼ÓÀ¸·Î ½ºÇÁ¸µ ÆÀÀÇ ¼ö¼® °³¹ßÀÚ·Î ÀÏÇÏ°í ÀÖÀ¸¸ç, ½ºÇÁ¸µ ÇìÀÌƼ¿À½º(HATEOAS), ½ºÇÁ¸µ µ¥ÀÌÅÍ, ½ºÇÁ¸µ ºÎÆ®, R2DBC, ¸ù°íµðºñ¿ë ½ºÇÁ¸µ ¼¼¼Ç ÇÁ·ÎÁ§Æ®ÀÇ Ä¿¹ÌÅÍ´Ù. ÆÑÆ®(Packt) ÃâÆÇ»çÀÇ º£½ºÆ®¼¿·¯ÀÎ ¡ºLearning Spring Boot 2.0¡» 2ÆÇÀ» Àú¼úÇßÀ¸¸ç, 2010³â¿¡ ³»½´ºô ÀÚ¹Ù »ç¿ëÀÚ ±×·ìÀ» °øµ¿ ⸳Çß´Ù. Á¸ÀçÇÏ´Â ¸ðµç ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀ» »ç¶ûÇÏ´Â ÀÚ¹Ù °³¹ßÀÚ´Ù.
GregLTurnquist.com/hacking-with-spring-boot-fan¿¡ ¹æ¹®Çؼ ¸ÞÀϸµ ¸®½ºÆ®¿¡ °¡ÀÔÇÏ¸é ±×·ºÀÌ ÁýÇÊ ÁßÀΠåÀÇ Áøô »óȲ°ú ´Ù¾çÇÑ ±â¼ú ÀڷḦ À̸ÞÀÏ·Î ¹Þ¾Æº¼ ¼ö ÀÖ´Ù. ±×·ºÀÌ ¿î¿µÇÏ´Â Æ®À§ÅÍ @gregturn °èÁ¤°ú À¯Æ©ºê YouTube.com/GregTurnquist¸¦ ±¸µ¶ÇÏ¸é ½ºÇÁ¸µ ºÎÆ®¿¡ °ü·ÃµÈ ¿©·¯ ¿µ»ó ÀڷḦ º¼ ¼ö ÀÖ´Ù.
ÆÑÆ® ÃâÆǻ翡¼ Ãâ°£µÈ ¡ºLearning Spring Boot 2.0 2nd Edition¡»(2017), ¡ºLearning Spring Boot¡»(2014), ¡ºPython Testing Cookbook¡»(2011), ¡ºSpring Python 1.1¡»(2011) µîÀÇ ±â¼ú ¼Àû»Ó¸¸ ¾Æ´Ï¶ó ¡ºDarklight: A Coming of Age Fantasy¡»(2018)¿Í ¡ºThe Job: A Darklight Chronicle¡»(2017) °°Àº ¼Ò¼³µµ ÁýÇÊÇÑ ÀÛ°¡·Îµµ È°µ¿ÇÑ´Ù.
[1Àå] ½ºÇÁ¸µ ºÎÆ® À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¸¸µé±â½ºÇÁ¸µ ºÎÆ®¶õ ¹«¾ùÀΰ¡¸®¾×Ƽºê ÇÁ·Î±×·¡¹Ö ¼Ò°³___¸®¾×ÅÍ Å¸ÀÔ½ºÇÁ¸µ À¥Ç÷°½ºÀÇ µîÀ彺ÇÁ¸µ ºÎÆ®·Î ÀÌÄ¿¸Ó½º Ç÷§Æû ¸¸µé±â___ÇÁ·ÎÁ§Æ® Æä¾î·±Æ®___¾ÖÇø®ÄÉÀÌ¼Ç ¸ÞŸµ¥ÀÌÅÍ___½ºÇÁ¸µ ºÎÆ® ½ºÅ¸ÅÍ___½ºÇÁ¸µ ºÎÆ® ¸ÞÀ̺ì Ç÷¯±×ÀÎù ÄÚµå___ÀÚµ¿¼³Á¤___ÄÄÆ÷³ÍÆ® Ž»ö___½ºÇÁ¸µ À¥Ç÷°½º ÄÁÆ®·Ñ·¯ »ý¼ºÅÛÇø´ Àû¿ëÁ¤¸®[2Àå] ½ºÇÁ¸µ ºÎÆ®¸¦ È°¿ëÇÑ µ¥ÀÌÅÍ ¾×¼¼½º5¸®¾×Ƽºê µ¥ÀÌÅÍ ½ºÅä¾î ¿ä°ÇÀÌÄ¿¸Ó½º ¾ÖÇø®ÄÉÀÌ¼Ç µµ¸ÞÀÎ Á¤ÀǸ®Æ÷ÁöÅ丮 ¸¸µé±âÅ×½ºÆ® µ¥ÀÌÅÍ ·ÎµùÀå¹Ù±¸´Ï º¸¿©ÁÖ±âÀå¹Ù±¸´Ï¿¡ »óÇ° ´ã±â¼ºñ½º ÃßÃâµ¥ÀÌÅͺ£À̽º Äõ¸®Äõ¸®¹® ÀÚµ¿ »ý¼º ¸Þ¼Òµå·Î ÃæºÐÇÏÁö ¾ÊÀ» ¶§Example Äõ¸®Æò¹®Çü ¿¬»êÆ®·¹ÀÌµå ¿ÀÇÁÁ¤¸®[3Àå] ½ºÇÁ¸µ ºÎÆ® °³¹ßÀÚ µµ±¸¾ÖÇø®ÄÉÀÌ¼Ç ½ÃÀÛ ½Ã°£ ´ÜÃà°³¹ßÀÚ µµ±¸___ÀÚµ¿ Àç½ÃÀÛ°ú ¸®·Îµù___Á¤Àû ÀÚ¿ø Á¦¿Ü___°³¹ß ¸ðµå¿¡¼ ij½Ã ºñÈ°¼ºÈ___ºÎ°¡Àû À¥ È°µ¿ ·Î±ë___ÀÚµ¿¼³Á¤¿¡¼ÀÇ ·Î±ë º¯°æ___¶óÀÌºê ¸®·Îµå Áö¿ø¸®¾×ÅÍ °³¹ßÀÚ µµ±¸___¸®¾×ÅÍ ÇÃ·Î¿ì µð¹ö±ë___¸®¾×ÅÍ ÇÃ·Î¿ì ·Î±ë___ºí·ÏÇÏ¿îµå¸¦ »ç¿ëÇÑ ºí·ÎÅ· ÄÚµå °ËÃâÁ¤¸®[4Àå] ½ºÇÁ¸µ ºÎÆ® Å×½ºÆ®¸®¾×Ƽºê ´ÜÀ§ Å×½ºÆ® ÀÛ¼º³»Àå ÄÁÅ×ÀÌ³Ê Å×½ºÆ® ½ÇÇེÇÁ¸µ ºÎÆ® ½½¶óÀ̽º Å×½ºÆ®ºí·ÏÇÏ¿îµå »ç¿ë ´ÜÀ§ Å×½ºÆ®Á¤¸®[5Àå] ½ºÇÁ¸µ ºÎÆ® ¿î¿µ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷___¿ì¹ö JAR ¹èÆ÷___µµÄ¿ ¹èÆ÷¿î¿µ ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®___¾ÖÇø®ÄÉÀÌ¼Ç Á¤»ó»óÅ Á¡°Ë: /actuator/health___¾ÖÇø®ÄÉÀÌ¼Ç »ó¼¼Á¤º¸: /actuator/info___´Ù¾çÇÑ ¾×Ãß¿¡ÀÌÅÍ ¿£µåÆ÷ÀÎÆ®___·Î±ë Á¤º¸ ¿£µåÆ÷ÀÎÆ®: /actuator/loggers´Ù¾çÇÑ ¿î¿µ µ¥ÀÌÅÍ È®ÀÎ___½º·¹µå Á¤º¸ È®ÀÎ: /actuator/threaddump___Èü Á¤º¸ È®ÀÎ: /actuator/heapdump___HTTP È£Ãâ Æ®·¹À̽Ì: /actuator/httptrace___±× ¹ÛÀÇ ¿£µåÆ÷ÀÎÆ®°ü¸® ¼ºñ½º °æ·Î ¼öÁ¤Á¤¸®[6Àå] ½ºÇÁ¸µ ºÎÆ® API ¼¹ö ±¸ÃàHTTP À¥ ¼ºñ½º ±¸ÃàAPI Æ÷ÅÐ »ý¼ºAPI ÁøÈ ¹Ý¿µÇÏÀÌÆ۹̵ð¾î ±â¹Ý À¥ ¼ºñ½º ±¸ÃàÇÏÀÌÆ۹̵ð¾îÀÇ °¡Ä¡API¿¡ Çൿ À¯µµ¼º Ãß°¡Á¤¸®[7Àå] ½ºÇÁ¸µ ºÎÆ® ¸Þ½Ã¡¸Þ½Ã¡ ¼Ö·ç¼Ç ¼±ÅÃÀͼ÷ÇÑ ÆÐÅÏÀ» »ç¿ëÇÑ ¹®Á¦ ÇØ°á¼Õ½¬¿î Å×½ºÆ®Å×½ºÆ®ÄÁÅ×ÀÌ³Ê »ç¿ë Å×½ºÆ®Å×½ºÆ® ÄÉÀ̽º ±¸¼º½ºÄÉÁÙ·¯¸¦ »ç¿ëÇؼ ºí·ÎÅ· API °¨½Î±âÄÁ½´¸Ó ÀÛ¼ºÁ¤¸®[8Àå] ½ºÇÁ¸µ ºÎÆ® R¼ÒÄÏR¼ÒÄÏ ¼Ò°³¸®¾×Ƽºê ÇÁ·ÎÅäÄÝ Åº»ýR¼ÒÄÏ Æз¯´ÙÀÓ___¿äû-ÀÀ´ä___¿äû-½ºÆ®¸²___½ÇÇà ÈÄ ¸Á°¢___ä³ÎR¼ÒÄÏ ¼¹ö »ý¼ºR¼ÒÄÏ Å¬¶óÀ̾ðÆ® »ý¼º___À¥Ç÷°½º ¿äûÀ» R¼ÒÄÏ ¿äû-ÀÀ´äÀ¸·Î Àüȯ___À¥Ç÷°½º ¿äûÀ» R¼ÒÄÏ ¿äû-½ºÆ®¸²À¸·Î Àüȯ___À¥Ç÷°½º ¿äûÀ» R¼ÒÄÏ ½ÇÇà ÈÄ ¸Á°¢À¸·Î Àüȯ___À¥Ç÷°½º ¿äûÀ» R¼ÒÄÏ Ã¤³Î·Î ÀüȯÁ¤¸®[9Àå] ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç º¸¾È½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ½ÃÀÛÇϱâ½Ç¹« Àû¿ë½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ Ä¿½ºÅÒ Á¤Ã¥»ç¿ëÀÚ ÄÁÅؽºÆ® Á¢±Ù¸Þ¼Òµå ¼öÁØ º¸¾ÈOAuth º¸¾ÈÁ¤¸®[Çѱ¹¾îÆÇ Æ¯º° ºÎ·Ï] ¸®¾×Ƽºê ½ºÆ®¸² ½ÃÄö½º ´ÙÀ̾î±×·¥µ¥ÀÌÅÍ Çڵ鷯 ·ÎÁ÷ Á¤ÀÇ ¹× Subscriber »ý¼ºDataProvider¿¡ µ¥ÀÌÅÍ ¿äû ¹× Publisher »ý¼º±¸µ¶ÇϱâSubscription »ý¼ºSubscription¿¡ µ¥ÀÌÅÍ ¿äû½ÇÁ¦ µ¥ÀÌÅÍ Á¢±Ù ¹× onNext/onError/onComplete È£Ãâºñµ¿±â´Â ¾îµð¿¡?