์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

Kevin์˜ ์•Œ๊ธฐ ์‰ฌ์šด Spring Reactive Web Applications: Reactor 1๋ถ€

Spring WebFlux ๊ธฐ๋ฐ˜์˜ ๋ฆฌ์•กํ‹ฐ๋ธŒํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด `Kevin์˜ ์•Œ๊ธฐ ์‰ฌ์šด Spring Reactive WebApplications` ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์„ธ์š”. ๋ฆฌ์•กํ‹ฐ๋ธŒ ์„ธ์ƒ์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„๋“ค์„ ์นœ์ ˆํ•˜๊ฒŒ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ^^

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐฑ์—”๋“œ, ์›น ๊ฐœ๋ฐœ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ์‹œ์Šคํ…œ๊ณผ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…

  • Blocking I/O์™€ Non-Blocking I/O์˜ ๊ฐœ๋…

  • Project Reactor

  • ๋งˆ๋ธ” ๋‹ค์ด์–ด๊ทธ๋žจ ๋ณด๋Š” ๋ฒ•

  • Cold Sequenc์™€ Hot Sequence์˜ ๊ฐœ๋…

  • Reactor Sequence๋ฅผ ๋””๋ฒ„๊น… ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Reactor Sequence๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ์•ฑ ๊ตฌํ˜„๊นŒ์ง€
์ด ๊ฐ•์˜์™€ ํ•จ๊ป˜ํ•˜์„ธ์š”! ๐ŸŒฑ

'์Šคํ”„๋ง์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์ €์ž ์ง๊ฐ•!

Spring MVC์— ๋Œ€ํ•œ ๋„์„œ์™€ ๊ฐ•์˜๋Š” ๊ตญ๋‚ด์— ๋งŽ๊ณ ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Spring WebFlux ๊ธฐ๋ฐ˜์˜ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜์™€ ์ˆœ์ˆ˜ ๊ตญ๋‚ด ๋„์„œ๋Š” ํ”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ•์‚ฌ์™€ ์ €์ž ์ž…์žฅ์—์„œ๋Š” Spring WebFlux๋ผ๋Š” ๋‚œ์ด๋„ ์žˆ๋Š” ๊ธฐ์ˆ ์„ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๋…น๋ก์ง€ ์•Š๊ณ , Spring WebFlux๋ผ๋Š” ๊ธฐ์ˆ ์ด Spring MVC๋ณด๋‹ค ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ๊ธฐ์ˆ ์ด๋ž€ ์‚ฌ์‹ค์„ ์•„์ง ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Kevin์˜ ์•Œ๊ธฐ ์‰ฌ์šด RxJava ๊ฐ•์˜๋ฅผ ์˜คํ”ˆํ–ˆ๋˜ Kevin์ด 3๋…„ ๋งŒ์— ๋“ค๊ณ  ์˜จ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์ธํ”„๋Ÿฐ ๊ฐ•์˜์™€ ๋„์„œ๋กœ ๋งŒ๋‚˜๋ณด์„ธ์š”!

๐ŸŒฑ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

  • ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” Non-Blocking I/O ๋ฐฉ์‹์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ณต์žก๋„๋ฅผ ๋‹จ์ˆœํ™”ํ•ด ์ค๋‹ˆ๋‹ค.
  • ์„ ์–ธํ˜• ๋ฐฉ์‹์˜ ํ˜„๋Œ€์ ์ธ ๊ฐœ๋ฐœ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋‚ด ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ๋‚˜์˜ ๊ฒฝ์Ÿ๋ ฅ์„ ํ•œ ๋‹จ๊ณ„ ์—…๊ทธ๋ ˆ์ด๋“œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€ํ•œ๋ฏผ๊ตญ 10ํผ์„ผํŠธ ๋„ค์ž„๋“œ(Named) ๊ธฐ์—…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์„ ์Šต๋“ํ•˜๊ธฐ ์œ„ํ•œ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 3๋…„ ์ฐจ ์ด์ƒ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์˜ ์ง€๋ฃจํ•œ ์‚ถ์„ ํ™œ๊ธฐ์ฐจ๊ฒŒ ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŒฑ ์ด ๊ฐ•์˜์˜ ํŠน์ง•์€ ๋ฌด์—‡์ผ๊นŒ์š”?

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜ ์ž๋ฃŒ๋Š” ํ•ต์‹ฌ ์ค‘์˜ ํ•ต์‹ฌ๋งŒ ๋‹ค๋ฃจ์–ด ๊ฐ•์˜์— ๋Œ€ํ•œ ์ง‘์ค‘๋ ฅ์„ ์žƒ์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜ ์ž๋ฃŒ์˜ ์„ค๋ช…๋งŒ์œผ๋กœ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฑ•ํ„ฐ๋ณ„๋กœ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • ๊ฐ•์˜์—์„œ ์‚ฌ์šฉํ•œ ๋ชจ๋“  ์˜ˆ์ œ ์ฝ”๋“œ๋Š” github์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒฑ ์–ด๋–ค ๊ฑธ ๋ฐฐ์šฐ๋‚˜์š”?

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ์‹œ์Šคํ…œ๊ณผ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํŠน์ง•์— ๋Œ€ํ•ด์„œ ๋ฐฐ์›๋‹ˆ๋‹ค.
  • Spring MVC์™€ Spring WebFlux ๋ฐฉ์‹์˜ ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด Blocking I/O์™€ Non-Blocking I/O์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•ด ๋ด…๋‹ˆ๋‹ค.
  • Reactor Mono์™€ Flux์˜ ๋งˆ๋ธ” ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ†ตํ•ด ๋งˆ๋ธ” ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • Cold Sequence์™€ Hot Sequence์˜ ์ฐจ์ด์ ๊ณผ ํŠน์ง•์„ ๊ทธ๋ฆผ๊ณผ ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.

  • Backpressure๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Thread๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ์—ญํ• ์„ ํ•˜๋Š” Scheduler์˜ ํŠน์ง•๊ณผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.
  • ์„œ๋กœ ๋‹ค๋ฅธ ์‹คํ–‰ Thread ๊ฐ„์— ์†์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” Context์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.
  • Reactor Sequence๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ…Œ์ŠคํŒ…ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•ด ๋ด…๋‹ˆ๋‹ค.

๐Ÿ’ก ์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

Kevin์˜ ์•Œ๊ธฐ ์‰ฌ์šด Spring Reactive Web Applications๋Š” ์ด 3๋ถ€๋กœ ๊ตฌ์„ฑ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

  • 1๋ถ€๋Š” ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…๊ณผ Spring Reactive Web Application์˜ ํ•ต์‹ฌ ์—ญํ• ์„ ํ•˜๋Š” Project Reactor์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • 2๋ถ€๋Š” 1๋ถ€์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์•˜๋˜ Project Reactor์˜ Operator์— ๋Œ€ํ•ด์„œ๋งŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค. Operator๋Š” Reactor์˜ ์—ฌ๋Ÿฌ ํŒŒํŠธ ์ค‘์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์–ด๋Š ์ •๋„ ์ต์ˆ™ํ•œ ๋ถ„๋“ค์ด Operator ๋ถ€๋ถ„๋งŒ ๋ณ„๋„๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ„๋„์˜ ๊ฐ•์˜(2๋ถ€)๋กœ ๊ตฌ์„ฑํ•ด์„œ ์˜คํ”ˆํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. (2023.06 ํ˜„์žฌ Operator ๋ถ€๋ถ„์„ ์—ด์‹ฌํžˆ ์ œ์ž‘ ์ค‘์ž…๋‹ˆ๋‹ค. ^^)
  • 3๋ถ€๋Š” Spring WebFlux์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์ดํ•ดํ•œ ํ›„์— ๋ฆฌ์•กํ‹ฐ๋ธŒํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด ๋ณด๋Š” ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ ์œ„์ฃผ๋กœ ๊ตฌ์„ฑ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. (2๋ถ€ ์˜คํ”ˆ ์ดํ›„์— ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ์˜คํ”ˆํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ^^) 

๐ŸŒฑ ์–ด๋–ค ๊ฒƒ๋“ค์ด ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

Q. ๊ฐ•์˜์˜ ๋‚œ์ด๋„๋Š” ์–ด๋Š ์ •๋„ ๋˜๋‚˜์š”?

Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ Spring MVC๋ฅผ ์ด์šฉํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ๋ฌด๋‚œํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐ•์˜๋ฅผ ํ•œ๋ฒˆ ๋ณด๊ณ  ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ ์„œ๋„ˆ ๋ฒˆ ์ •๋„ ๋ฐ˜๋ณตํ•ด์„œ ๋“ฃ๊ณ , ์ฝ”๋“œ๋ฅผ ํƒ€์ดํ•‘ํ•ด ๋ณธ๋‹ค๋ฉด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์˜ ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Q. ๊ฐ•์˜ ์ง„ํ–‰ ๋ฐฉ์‹์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

๋ชจ๋“  ์ˆ˜์—…์ด ๊ฐ•์˜ ์ž๋ฃŒ๋ฅผ ํ†ตํ•ด ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ดํ•ดํ•œ ํ›„์— ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ํ•ด๋‹น ๊ฐœ๋…์„ ํ™•์‹คํ•˜๊ฒŒ ๋‚ด ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

Q. Spring ๊ธฐ๋ฐ˜์˜ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๋ฉด ๋ฌด์—‡์ด ์ข‹์€๊ฐ€์š”?

Spring MVC ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ๋ฆฌ์•กํ‹ฐ๋ธŒํ•œ Non-Blocking ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋”์šฑ ๊ฒฝ์Ÿ๋ ฅ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋กœ์„œ ํ•œ ๋‹จ๊ณ„ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q. `์Šคํ”„๋ง์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ` ๋„์„œ ์•ˆ์— ์žˆ๋Š” ๋‚ด์šฉ๊ณผ ๊ฐ•์˜ ๋‚ด์šฉ์ด ๋™์ผํ•œ๊ฐ€์š”?

๋„์„œ์™€ ๋งŽ์€ ๋ถ€๋ถ„์˜ ๋‚ด์šฉ์ด ๋™์ผํ•˜์ง€๋งŒ ์ถœ๊ฐ„ ๋งˆ๊ฐ์ผ์ด ์ •ํ•ด์ ธ ์žˆ๋Š” ๋„์„œ์—์„œ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•œ ๋‚ด์šฉ ๋ฐ ์˜ˆ์ œ ์ฝ”๋“œ๋“ค์ด ์ „์ฒด์ ์œผ๋กœ  ์ถ”๊ฐ€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Q. ๊ฐ•์˜์—์„œ ์‚ฌ์šฉ๋œ ์›๋ณธ ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ์–ด๋””์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‚˜์š”?

์ˆ˜์—…์—์„œ ์„ค๋ช…ํ•˜๋Š” ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๋ชจ๋‘ github์— ์˜ฌ๋ผ๊ฐ€ ์žˆ์œผ๋ฉฐ ์•„๋ž˜ ์ฃผ์†Œ์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

  • Project Reactor์˜ ๊ธฐ๋ณธ์„ ์ตํžˆ๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

  • Spring ๋ฒ ์ด์Šค์˜ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ๋žŒ

  • Spring MVC๋ณด๋‹ค ๋” ๋‚˜์€ ์„ฑ๋Šฅ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ด ๋ณด๊ณ  ์‹ถ์€ ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Java

  • Spring MVC ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„ ๊ฒฝํ—˜

์•ˆ๋…•ํ•˜์„ธ์š”
Kevin์ž…๋‹ˆ๋‹ค.

6,065

๋ช…

์ˆ˜๊ฐ•์ƒ

220

๊ฐœ

์ˆ˜๊ฐ•ํ‰

104

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

6

๊ฐœ

๊ฐ•์˜

- ์ฃผ๋ ฅ ์–ธ์–ด ๋˜๋Š” ๊ธฐ์ˆ  : Java, Spring Framework, RxJava, Reactor, Spring WebFlux

- (์ฃผ)์ฝ”๋“œ์Šคํ…Œ์ด์ธ (https://www.codestates.com)์—์„œ Senior Educational Software Engineer(Backend)๋กœ ํ™œ๋™
(From 2022.03 To 2024.01.31)

- ํ”„๋ฆฌ๋žœ์„œ ๊ฐœ๋ฐœ์ž ๋ฐ ๊ฐ•์‚ฌ๋กœ ํ™œ๋™(From 2024.02)

- ์ €์„œ

์•ˆ๋…•ํ•˜์„ธ์š”? Kevin์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ^^

์ธํ”„๋Ÿฐ์—์„œ ์ด๋ ‡๊ฒŒ ๊ฐ•์‚ฌ๋กœ์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค์„ ๋งŒ๋‚˜๊ฒŒ ๋˜์–ด์„œ ๋„ˆ๋ฌด ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๋ถ„์•ผ๋“  ๋งˆ์ฐฌ๊ฐ€์ง€๊ฒ ์ง€๋งŒ ํŠนํžˆ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋Š” ๋Š์ž„์—†์ด ๋ณ€ํ™”ํ•˜๋Š” ํŠธ๋ Œ๋“œ์— ๋’ค์ฒ˜์ง€์ง€ ์•Š๋„๋ก ํ•ญ์ƒ ์ž๊ธฐ ์ž์‹ ์„ ๊ฐˆ๊ณ  ๋‹ฆ๋Š”๊ฒƒ์ด ๊ฐœ๋ฐœ์ž๋กœ์จ ์‚ด์•„๋‚จ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ํ•ญ์ƒ ๋ฐฐ์šฐ๋Š” ์ž์„ธ๋กœ ์ฆ๊ฒ๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ž…๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ง€์‹๊ณผ ๊ฒฝํ—˜์ด ๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ ์ธํ”„๋Ÿฐ์—์„œ ๊ฐ•์ขŒ๋ฅผ ์‹œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ์ˆ˜๊ฐ•์ƒ๋ถ„๋“ค์—๊ฒŒ ํ˜„์‹ค์ ์œผ๋กœ ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ๊ฐ•์ขŒ๋กœ ๊พธ์ค€ํžˆ ์ฐพ์•„๋ต™๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

์งˆ๋ฌธ์ด๋‚˜ ์˜๊ฒฌ์€ ์–ธ์ œ๋“ ์ง€ ํ™˜์˜ํ•˜๋‹ˆ, ์ด๋ฉ”์ผ(it.village.host@gmail.com)๋กœ ํŽธํ•˜๊ฒŒ ์–˜๊ธฐํ•ด์ฃผ์„ธ์š”.

 

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

28๊ฐœ โˆ™ (5์‹œ๊ฐ„ 57๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!