/WebFluxPlayGround

Reactive Programing with Webflux

Primary LanguageJava

๐Ÿš€ WebFluxPlayGround

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

everything is stream

๐ŸŽฏLearning Goals

  • Reactive Programming์˜ ๊ฐœ๋…๊ณผ ์›์น™์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด
  • Reactor ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ Reactive ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ ๋ฐฉ๋ฒ• ์Šต๋“
  • Spring Boot์™€ WebFlux๋ฅผ ํ™œ์šฉํ•œ Reactive ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ• ๋Šฅ๋ ฅ ํ–ฅ์ƒ
  • R2DBC์™€ Spring Data JPA๋ฅผ ์ด์šฉํ•œ Reactive ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ํ†ตํ•ฉ ๋ฐฉ๋ฒ• ์ตํžˆ๊ธฐ
  • ์บ์‹ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ Reactive Redis ํ™œ์šฉ ๋ฐฉ์•ˆ ํƒ๊ตฌ
  • Reactive ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Spring Security๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์Šต๋“
  • Actuator๋ฅผ ํ™œ์šฉํ•˜์—ฌ Reactive ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€๋ฆฌ ๋Šฅ๋ ฅ ๊ฐœ๋ฐœ

๐Ÿ“š Features for Learning

  1. Reactive RESTful API: Spring WebFlux์™€ Reactor๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์š”์ฒญ/์‘๋‹ต ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” RESTful API ๊ตฌ์ถ•
  2. Reactive ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค: R2DBC์™€ Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋กœํ‚น๋˜์ง€ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฟผ๋ฆฌํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” Reactive ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋ฐฉ๋ฒ• ์ตํžˆ๊ธฐ
  3. Reactive Redis: ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ Reactive ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™œ์šฉ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์บ์‹ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ Reactive Redis ํ†ตํ•ฉ
  4. Reactive Spring Security: Reactive ํŒจ๋Ÿฌ๋‹ค์ž„์— ์ ํ•ฉํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๊ตฌํ˜„์„ ์œ„ํ•ด Spring Security ์ ์šฉ ๋ฐฉ๋ฒ• ํƒ๊ตฌ
  5. Actuator: Reactive ์‹œ์Šคํ…œ์˜ ํŠน๋ณ„ํ•œ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ณผ์ œ์— ์ดˆ์ ์„ ๋งž์ถฐ Spring Boot Actuator๋ฅผ ํ™œ์šฉํ•˜์—ฌ Reactive ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• ์—ฐ๊ตฌ