㧦
㧦
₆
₆㦮
㓺
㓺䝚Ⱇ
Web MVC 㢖
㢖
WebFlux ㎇
㎇⓻
㍳
㩫ⳛᾦ*, ㍲䌲㤦** *ἶ⩺╖䞯ᾦ 䅊䜾䎆㩫⽊䐋㔶╖䞯㤦 ㏢䝚䔎㤾㠊Ὃ䞯ὒ [email protected], [email protected]G
A Study on Tools for Agent System Development
Myung-Kyo Jung*, Taeweon Suh***Graduate School of Computer & Information technology, Korea University ** Graduate School of Computer & Information technology, Korea University
殚 殚 檃檃 ⏒な⪲䌏 IO ⯒ 䢲㣿䞲 㥏 ㍲゚㓺⯒ 㥚䞲 ⹎✺㤾㠊 ῂ㿫 ⻫㦖 2009 ⎚ 䚲♲ Node.js 㠦㍲ ☚ 㧛♲ 㧊䤚⪲ 㡂⩂ 㠎㠊 䝚⩞㧚㤢䋂⪲ 㩚䕢♮₆ 㔲㧧䞮㡖┺. 㧦 㰚㡗㠦㍲☚ Project Reactor ⯒ 䐋䞮㡂 ⏒な⪲䌏 IO 䕾⩂┺㧚㠦 ╖㦧䞮₆ 㔲㧧䞮㡖ἶ 㧊⯒ 㓺䝚Ⱇ 䝚⩞㧚㤢䋂⪲ ῂ䡚䞲 WebFlux Ṗ 㿲㔲♮㠞┺. ⽎ ⏒ⶎ㦖 㧦 ₆㦮 㥏㍲゚㓺 ῂ㿫 㔲 㓺䝚Ⱇ 䝚⩞㧚㤢䋂⯒ 䢲㣿䞲 な⪲䌏 ₆⻫ὒ ⏒な⪲䌏 ₆⻫ Ṛ㦮 㹾㧊㩦㦚 ㌊䘊⽊ἶ ㎇⓻㦚 ㍳䞲┺. 㧊⯒ 䐋䟊 Ṗ㧻 䣾㥾㩗㧎 ㎇⓻㦚 䥮䞶 㑮 㧞⓪ 㞚䋺䎣㻮 ⳾◎㦚 ☚㿲䞲┺. 1. 昢昢嵦 㧦 㠎㠊⓪ ゚ᾦ㩗 㓂㤊 ⶎ⻫ ㌂㣿㎇㦚 䌫㦒 ⪲ ῃ⌊㠦㍲ 㑮Ⱔ㦖 IT ㍲゚㓺㦮 ㌂㣿 㠎㠊⪲ 㺚䌳♮ 㠊㢪┺. 㧊䤚 2000 ⎚ 㽞㠦 㓺䝚Ⱇ 䝚⩞㧚㤢䋂Ṗ ㏢Ṳ ♲ ⛺ 㩲㠊 㡃㩚ὒ 㦮㫊㎇ 㭒㧛㈦ 㞚┞⧒ Web MVC ṯ㦖 䘎Ⰲ䞲 ☚ῂ⯒ 䐋䞮㡂 㥏 ㍲゚㓺⯒ 㓓ἶ ザ⯊Ợ ῂ㿫䞮⓪◆ 䋆 ₆㡂⯒ 䟞┺. [1] 㓺䝚Ⱇ㦮 Web MVC ⓪ ☯㔲 㩧㏣ ㌂㣿㧦 㻮Ⰲ⯒ 㥚䞮㡂 な⪲䌏 IO ⳾◎㦚 䢲㣿䞲┺. 㧊⓪ 㻮Ⰲ Ṗ⓻䞲 ☯㔲 㩧㏣㧦㦮 㑮Ⱒ䋒 㓺⩞✲⯒ ㌳㎇䞮㡂 ṗṗ㦮 㓺 ⩞✲Ṗ 㣪㼃㧊 㢚⬢♶ ➢₢㰖 㩦㥶 ♮㠊㧞⓪ ㌗䌲⪲ 㫊㨂䞮Ⳇ 䋊⧒㧊㠎䔎㠦Ợ 㦧╋㦚 ☢⩺㭚 ➢ 䟊╏ 㓺 ⩞✲Ṗ ┺㔲 Ṗ㣿䞲 ㌗䌲⪲ 㩚䢮♮⓪ 㔳㧊┺. 䞮㰖Ⱒ 䋊⧒㤆✲ 䢮ἓ㦚 ₆㦒⪲ 䞲 IT ㍲゚㓺 㧎 䝚⧒ 䢮ἓ㧊 ⓮㠊⋮₆ 㔲㧧䞮Ⳋ㍲ 㥏 ㍲゚㓺 㞚䋺䎣 㻮⯒ ῂ㿫 㔲 ▪ 㩗㦖 㧦㤦㦒⪲ ▪ ザ⯊Ợ ㍲゚㓺⯒ 㩲Ὃ䞮⩺⓪ 㑮㣪Ṗ ⓮㠊⋮₆ 㔲㧧䞮㡖ἶ, Node.js 㠦㍲ ⓪ 㧊䔎 ⬾䝚⯒ 䢲㣿䞲 ⏒な⪲䌏 IO ⯒ ㍶⽊㧊Ⳋ㍲ 㥏 ㍲゚㓺 㞚䋺䎣㻮㠦 ㌞⪲㤊 䕾⩂┺㧚㧊 㩲㔲♮㠞┺. [2] Node.js 㦮 ㎇Ὃ㦚 䐋䟊 㧦 㰚㡗㠦㍲☚ ⏒な⪲䌏 IO ⳾◎㠦 ╖䞲 䞚㣪㎇㧊 ∎㭖䧞 㩲㔲♮₆ 㔲㧧䞮㡖 ἶ, Java 8 ⻚㩚䎆 䞾㑮䡫 䝚⪲⁎⧮ ⶎ⻫㦚 㧒 㰖㤦䞮₆ 㔲㧧䞲 㧊䤚⪲ ⏒な⪲䌏 IO ⯒ 㧦㠦㍲ ῂ 䡚䞶 㑮 㧞⓪ ☚ῂ⯒ 㩲Ὃ䞮₆ 㔲㧧䞮㡖┺. 㓺䝚Ⱇ 䝚⩞㧚㤢䋂 5 ⻚㩚䎆 㧊⯒ 䢲㣿䞲 㥏 䝚⩞㧚㤢䋂⯒ ῂ㿫䞮⓪ ☚ῂ⯒ WebFlux ⧒⓪ 㧊⯚㦒⪲ 㰖㤦䞮₆ 㔲 㧧䞮㡖┺. ⽎ 㡆ῂ㠦㍲⓪ Web MVC 㢖 WebFlux Ṛ㦮 ῂ㫆㩗 㹾㧊㠦 ╖䞮㡂 㞢㞚⽊ἶ 㔺䠮㦚 䐋䞮㡂 ⚮㦮 ㎇⓻㦚 ゚ᾦ䞮㡂 ⁎ ἆὒ⯒ 䌫㦒⪲ 㥏 㠊䝢Ⰲ䅖㧊㎮ ㍲⻚ (WAS) ῂ㿫 㔲 㾲㩗㦮 ㎇⓻㦚 㥚䞲 ⻫㠦 ╖䞮㡂 㩲㞞䞲┺. 2. 分崮櫶割 2.1 な⪲䌏 IO 㔳 䋊⧒㧊㠎䔎⪲䎆 㣪㼃㧊 ㌳䞲 㔲㩦䎆 ㍲⻚Ṗ 㧊⯒ 㻮Ⰲ䞮ἶ 䋊⧒㧊㠎䔎㠦Ợ 㦧╋㦚 㭒₆ 㩚₢㰖 ╖₆䞮⓪ ῂ㫆㧊┺. 䞮⋮㦮 㓺⩞✲Ṗ 㣪㼃㦚 㻮Ⰲ䞮 ⓪ ☯㞞㠦⓪ ┺⯎ ㍲゚㓺⯒ 㑮䟟䞶 㑮 㠜⓪ な⪲䌏 ㌗䌲Ṗ ♲┺. ڃ⁎Ⱂٻڌڄٻな⪲䌏ٻ㔳㦮ٻ㧧㠛ٻ䦦⯚ٻ
2
-2020 온라인 춘계학술발표대회 논문집 제27권 제1호 (-2020. 5)2.2 ⏒な⪲䌏 IO 㔳 䋊⧒㧊㠎䔎Ṗ ㍲⻚㠦 㣪㼃㦚 㩚╂䞲 ⛺ ╖₆䞮㰖 㞠ἶ ┺⯎ 㻮Ⰲ⯒ 㑮䟟䞲┺. 㻮ⰂṖ 㢚⬢♲ ⛺㠦⓪ ⹎Ⰲ ❇⪳♲ 䆲⺇ 䞾㑮⯒ 䢎㿲䞮㡂 䤚㻮Ⰲ⯒ 㰚䟟䞲 ┺. 㧊⩆ 㔳㦖 㣪㼃㦚 ἶ 䟊╏ 㣪㼃㠦 ╖䞲 ἆὒ ⯒ Ⰲ䎊䞮⓪ ὒ㩫㠦㍲ ┺⯎ 䌲㓺䋂⯒ 㑮䟟䞶 㑮 㧞₆ ➢ⶎ㠦 ┺㑮㦮 㓺⩞✲䛖㦚 ㌳㎇䞶 䞚㣪Ṗ 㠜┺. ڃ⁎Ⱂٻڍڄٻ⏒な⪲䌏ٻ㔳㦮ٻ㧧㠛ٻ䦦⯚ٻ 2.3 㓺䝚Ⱇ Web MVC な⪲䌏 㔳㦮 㥏 ㍲゚㓺⯒ ῂ䡚䞮₆ 㥚䟊 㩲Ὃ♮ ⓪ 㓺䝚Ⱇ 䝚⩞㧚㤢䋂㦮 ⧒㧊ぢ⩂Ⰲ㧊┺. MVC ⓪ Model-View-Controller ❪㧦㧎 䕾䎊㦮 㟓㠊㧊Ⳇ 䋊⧒㧊 㠎䔎⪲䎆㦮 㣪㼃㦖 Dispatch Servlet 㦚 䐋䞮㡂 Controller ⪲ 㩚╂♮Ⳇ 㧊 ➢ ☯㔲 㩧㏣㦚 㥚䞲 ㌂㣿 㧦㦮 㑮Ⱒ䋒 㓺⩞✲Ṗ ㌳㎇♮⓪ ῂ㫆㧊┺. 2.4 㓺䝚Ⱇ WebFlux ⏒な⪲䌏 IO 㻮Ⰲ⯒ 㥚䟊 㩲Ὃ♮⓪ 㓺䝚Ⱇ 䝚⩞㧚 㤢䋂㦮 ⧒㧊ぢ⩂Ⰲ㧊┺. 㓺䝚Ⱇ 䝚⩞㧚㤢䋂 5 ⻚㩚 䎆 㩲Ὃ♮₆ 㔲㧧䞮㡖㦒Ⳇ 㦧䡫 䝚⪲⁎⧾㦚 㥚䞲 API 㓺䗯㦚 ῂ䡚䞮㡖┺. 2.5 㦧䡫 䝚⪲⁎⧮ 㦧䡫㧊⧒⓪ 㣿㠊⓪ IO 㧊䔎㠦 㦧䞮⓪ ⍺䔎 㤢䋂 䅊䙂⍢䔎, Ⱎ㤆㓺 㧊䔎㠦 㦧䞮⓪ UI 䄾䔎⪺ ⩂ ❇ 㧊䔎㠦 㦧䞮⓪ 䝚⪲⁎⧮ ⳾◎㦚 㦮⹎䞲 ┺. 㧊⩂䞲 㦮⹎㠦㍲ ⏒な⪲䌏 IO ⓪ 㦧䡫㧊⧒ἶ ⽒ 㑮 㧞⓪◆, 㧊⓪ ⏒な⪲䌏 IO ⓪ 㧧㠛㧊 㢚⬢♮Ệ⋮ ◆㧊䎆Ṗ ㌂㣿 Ṗ⓻䞲 㧊䔎㠦 㦧䞶 㑮 㧞⓪ ῂ㫆 ⯒ Ṭ㿪₆ ➢ⶎ㧊┺. [3] 3. 昷昷垫捊剖 㔺䠮㦖 ┺㦢ὒ ṯ㦖 㔳㦒⪲ 㰚䟟䞮㡖┺. 㓺䝚Ⱇ Web MVC, WebFlux ṗṗ㦚 ㌂㣿䞮㡂 ῂ䡚䞲 㥏㍲゚㓺 ⯒ ῂ㿫䞲┺. WebMVC 㦮 ἓ㤆 ☯㔲㩧㏣㧦⓪ 㾲╖ 200 ⳛ㦒⪲ ㍺㩫䞮㡖┺. 䎢㓺䔎 䋊⧒㧊㠎䔎㠦㍲⓪ ┺ 㑮㦮 ☯㔲㩧㏣㧦Ṗ 㩧㏣䞮⓪ ㌗䢿㦚 Ṗ㩫䞮㡂 ṗ ㍲ ⻚㠦 ☯㔲┺㩗㦒⪲ 㣪㼃㦚 ㌳㔲䋾┺. ṗ ㍲⻚⼚ ⪲ ☯㔲㩧㏣㧦 㑮㠦 ➆⯎ 㦧╋㔲Ṛ㦚 ⹖Ⰲ㽞 ┾㥚⪲ 䁷㩫䞲┺. 㒁㧦Ṗ ⌄㦚㑮⪳ 㦧╋㏣☚Ṗ ▪ ザ⯎ ộ㦚 㦮⹎䞲┺. ͭ瞄͑ ͯ͑͢ 圁昄欹撵檸͑ 敀棸͑ 塘岠͑ 橹嘝昄伬͑ 慬偸͑ ͙嘐樬ͫ͑ 弨峔瀰͚ ☯㔲㩧㏣㧦 㑮 Web MVC WebFlux 100 363 374 200 583 568 500 1,299 876 1,000 1,987 1,399 5,000 4,867 2,980 10,000 9,018 4,149 ڃ⁎Ⱂٻڎڄٻな⪲䌏ٻ㔳㦮ٻ㧧㠛ٻ䦦⯚ٻ 4. 冶刂 200 Ṳ 㧊䞮㦮 ☯㔲 㣪㼃㠦 ╖䟊㍲⓪ ⚦ ㍲゚㓺Ṛ 㦮 㦧╋㏣☚Ṗ ☯㧒䞮㰖Ⱒ, 200 㦚 㽞ὒ䞮⓪ 㣪㼃䎆 ⓪ 㦧╋㏣☚㦮 㹾㧊Ṗ ὖ㺆♮㠞㦒Ⳇ ☯㔲㩧㏣㧦㦮 㑮 Ṗ Ⱔ㦚㑮⪳ 㦧╋㏣☚㦮 㹾㧊Ṗ ▪ 䄺㰖⓪ ộ㦚 䢫㧎 䞶 㑮 㧞┺. 㧊⯒ 䐋䟊 ┺㭧 ㌂㣿㧦㠦 ╖䞲 HTTP 㣪 㼃 㻮Ⰲ㔲 WebFlux Ṗ Web MVC ⽊┺ ザ⯊Ệ⋮ ☯㧒 䞲 ㎇⓻㧚㦚 㞢 㑮 㧞┺. 㯟 ῂ㿫䞮⓪ ㍲゚㓺㦮 䔏㎇ ㌗ ┺⨟㦮 ☯㔲㩧㏣ ㌂㣿㧦⯒ ╖㦧䟊㟒 䞮⓪ ἓ㤆⓪ WebFlux ⯒ ㌂㣿䞮㡂 ῂ㿫㦚 䞮⓪ ộ㧊 ㎇⓻㌗㦒⪲ ▪ 䣾ὒ㩗㧊Ⳇ ☯㔲㩧㏣ ㌂㣿㧦Ṗ 㩗㦖 ㍲゚㓺㦮 ἓ 㤆⓪ Web MVC ⪲ ῂ㿫䞮▪⧒☚ ☯㧒䞲 ㎇⓻㦚 䥮 䞶 㑮 㧞┺. 䟻䤚㠦⓪ 㔺㩲 㥏㍲゚㓺 㤊㡗 䢮ἓὒ ☯ 㧒䞲 ῂ㫆⪲ ◆㧊䎆㧊㓺⯒ ῂ㎇䞮ἶ DB 䄺⍻㎮䛖 㦮 ⏒な⪲䌏 㡂㠦 ➆⯎ ㎇⓻ 㹾㧊⯒ ㍳䞮㡂 㤊㡗 䢮ἓ㠦㍲㦮 ㍲゚㓺 ㎇⓻ 㾲㩗䢪Ṗ 㧊⬾㠊㰖☚⪳ 䞶 㡞㩫㧊┺.G 焾処怾竒
[1] Johnson, Rod, et al. Professional Java development with the Spring framework. John Wiley & Sons, 2009. [2] Satheesh, Mithun, Bruno Joseph D'mello, and Jason Krol.
Web development with MongoDB and NodeJs. Packt
3
Publishing Ltd, 2015.
[3] Define “Reactive” https://docs.spring.io/spring/docs/ current/spring-framework-reference/web-reactive.html #webflux-why-reactive