์ด ๊ธ์์๋ ๋ด๊ฐ ์ ํ๋ธ ์๋ฒ์ ๋ฏธ๋์ด ๋๋ฉ์ธ์ ๋งก์ผ๋ฉด์ ์ด๋ป๊ฒ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ์์ผ ๋๊ฐ๋์ง ์ค๋ช ํ๋ค.
๋ด๊ฐ ์ด๋ฒ ํ๋ก์ ํธ์์ ๋งก์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ํ๋ธ์์ ๊ฐ์ฅ ํต์ฌ์ด ๋๋ ๋์์ ์คํธ๋ฆฌ๋ฐ ๋๋ฉ์ธ์ ๋ด๋นํ๋ค.
- ์ ํ๋ธ ์๋ฒ์์ ๊ด๋ฆฌ๋๋ ์ ์ ๋ฆฌ์์ค๋ค์ ๊ด๋ฆฌํ๋ค.
์ด๋ฒ ๊ธ์์๋ ๋์์ ์คํธ๋ฆฌ๋ฐ์ ๊ตฌํํ๋ฉฐ ๊ตฌ์กฐ์ ์ธ ๊ด์ ์์ ๊ฐ์ ํ ์ ์ ๊ธฐ๋กํด ๋๋ ค๊ณ ํ๋ค.
์ฌ์ค ๊ตฌ์กฐ๋ ๊ฒ๋ ์๋ ๊ตฌ์กฐ์ด๋ค. ํ์๋ค ์ค ๋ฐฐํฌ๋ ์ด๋ฐ ๋ฐฐํฌ ์ํคํ ์ณ์ ๋ํ ์ง์์ ๊ฐ์ง๊ณ ์๋ ํ์์ด ์์๊ธฐ ๋๋ฌธ์, ๊ทธ์ ๋จ์ํ๊ฒ ํ๋์ spring boot ์๋ฒ๋ฅผ ๊ตฌ์ํ์๋ค.
๋ด๋ถ์ ์ผ๋ก domain์ ๋๋์ด ์์ ํ๋ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์์ ํ๊ณ ํ๋ก์ ํธ๋ฅผ ์งํ์ ํ์๋ค.
์ด๋ ๊ฒ ์ค์ ์ ํ๊ณ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ๋ํ ํ๋กํ ํ์ ์ ์์ฑํ์๋๋ฐ, ์ ๋ง ๋ค์ํ ๋ฌธ์ ๊ฐ ์์์ ์ ์ ์์๋ค. ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์คํ๋ง์ผ๋ก ๋ง์ดํ๋ controller - service - dao - db ๋ก ๋ํ๋๋ ๋ก์ง๊ณผ๋ ๋ฌ๋ฆฌ, ๋์์์ ์ธ์ฝ๋ฉํ๊ณ ํ์ผ ์์คํ ์ ๊ด๋ฆฌํ๋ ๋ก์ง์ ์ ๋ง ๋ง์ cpu burst๋ฅผ ํฌํจํ๋ ์์ ์ด์๋ค.
์ฐ๋ฆฌ์ ์๋ฒ ์คํ์ด 1์ฝ์ด 1GB ๋ฉ๋ชจ๋ฆฌ๋ผ๋ ์์ข์ ํ๊ฒฝ์ผ๋ก ์์ ์ด ๋์ด์์๊ธฐ ๋๋ฌธ์ ์ต๋ํ ํจ์จ์ ์ผ๋ก ๋ง๋๋ ค๊ณ ํ๋ค.
๋ ๋ฏธ๋์ด ๋๋ฉ์ธ์ ์์ ์ด ์์คํ ์ ์ฒด์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ฉด, ์ ์ฒด ๋๋ฉ์ธ์ ์์ ์ด ๋์์ ๋๋ ค์ง๋ฏ๋ก, ์ด๋ ํฐ ๋ฌธ์ ์๋ค
๋์ ๋ก์ง์ ์ค๊ณํ๋ฉด์ ๋ ์๊ฐ์ ์ด ๋ฏธ๋์ด๋ฅผ ๋ค๋ฃจ๋ ๋ก์ง์ด ์๊ฐ๋ณด๋ค ๋๋ฌด ๋ง์ IO์์ ์ ํฌํจํ๊ณ ์๋ค๋ ๊ฒ์ด๋ค. ์ผ๋จ ๋ค๋ฃจ๋ ํ์ผ ์์ฒด๊ฐ ๋์์ ํ์ผ์ด๋ค ๋ณด๋, ํ์ผ ์์ฒด์ ์ฉ๋์ด ๋งค์ฐ ์ปธ๋ค.
๋ํ ์์์ฑ ์ฅ์น๋ก์ IO์์ ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU์ ์ฒ๋ฆฌ์๋๋ณด๋ค ๋๋ฆฐ ๊ฒ์ ๋งค์ฐ ์๋ช ํ ์ฌ์ค์ด์๋ค. ๋ฐ๋ผ์ ๋์ ๋ก์ง์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด, ์์ฒญ-์๋ต ๊ฐ IO ๋ธ๋กํน์ด ์๋น์๊ฐ ๊ฑธ๋ฆด๊ฒ์ด๋ผ๊ณ ์์ธกํ ์ ์์๋ค.
๋ฏธ๋์ด ๋๋ฉ์ธ๋ ์ฐ๋ ๋์ ๋๋ถ๋ถ์ blocking์ ํ๋น ํ๊ณ ์๋ค.
Tomcat์ ์ฐ๋ ๋ํ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ์ฐ๋ ๋ ์์ฑ์ ๋ค์ด๊ฐ๋ ๋น์ฉ ์ปค์ง๊ฒ ๋๊ณ , ์์ฑ๋ ์ฐ๋ ๋๊ฐ ๋๋ถ๋ถ ๋ธ๋กํน์ ์ํด์๋ง ์๋ชจ๋ ๊ฒ์ด๋ผ๊ณ ์์ํ ์ ์์๋ค.
๋์ ๋ก์ง ์์๋ ํ์ผ ์์คํ ์ ์ง์ ์ ๊ทผํ๊ฑฐ๋, ์์คํ ์ปค๋์ ์ง์ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด ๋ง์๋ค. ๊ทธ๋ฌ๋ค ๋ณด๋ ์ฌ๋ฌ ๋ฌธ์ ์ ์ด ์๊ฒผ๋ค.
- ์ฝ๋, ํ ์คํธ๋ฅผ ๋๋ฆฌ๋ ค๋ฉด, ๊ฐ ํ์ ์์ ์ปดํจํฐ์ ์ํคํ ์ณ์ ๋ง๋ ์ปค๋์ ์ค์นํด์ผํ๋ค.
- ๊ฐ ์ด์์ฒด์ ๋ณ๋ก ํ์ผ ์ฃผ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ค.(์๋์ฐ์ unix๊ธฐ๋ฐ์ ํ์ผ ํจ์ค๋ ํธํ์ด ๋์ง ์๋๋ค)
- ๋์ ์ฝ๋๋ฅผ ๋ก์ปฌ์์ ๋๋ฆฌ๊ฒ๋๋ฉด ํ์ ์์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ๊ทผํด์ ์์ ์ ํด์ผ๋๋๋ฐ ์ด๋ ์๋นํ ๋ถ๋ด์ด์๋ค.
- ํ์ ์๋น์๊ฐ ์์ง ์ค๋ ฅ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์, ๋ค์ํ ์ค์ ์ ํ๊ธฐ๊ฐ ์ด๋ ค์ ๋ค.
๊ธธ๊ฒ ๋์ดํ์ง๋ง, ํ๋ง๋๋ก ๋ง์ ํ์๋ฉด, ๋์ ๋๋ฉ์ธ์ ๋ก์ง๋ค์ ์์คํ ์ ์ง์ ์ ์ผ๋ก ์ข ์๋๋ ๋ถ๋ถ์ด ๋ง์์ ํ์ ํ ๋ ๋ฌธ์ ๊ฐ ๋ง์๋ค.
๋ง์ฝ ๋์ค์ ์ฑ๋ฅ์ ์ฌ๋ฆฌ๊ธฐ ์ํด ์๋ฒ๋ฅผ ์ฌ๋ฌ๊ฐ๋ฅผ ๋๊ณ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ๊ฒ ๋๋ค๋ฉด, ์๋นํ ๋นํจ์จ์ ์ด๊ฒ ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐ์ ํ๊ฒ ๋์๋ค.
๋ถ๋ช ํ ์๋ฒ๋ฅผ ๋๋ฆฌ๋ ์ด์ ๋ ์์คํ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์๋ชจํ๋ ๋ฏธ๋์ด ๋๋ฉ์ธ ๋๋ฌธ์ผ ๊ฒ์ธ๋ฐ, ์ด ๋ก์ง์ด ํ๋์ ์๋ฒ์ ํฉ์ณ์ ธ ์๋ค๋ฉด, ๋ณ๋ก ํ์ฅ์ด ํ์์๋ ๋ค๋ฅธ ๋๋ฉ์ธ๋ค๊น์ง ํจ๊ป ๋ธ๋ ค์ค๊ฒ ๋๋ฏ๋ก ํ์ฅํ ์๋ก ๋นํจ์จ์ ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ฒ ๋์๋ค.
๊ทธ๋์ ๋ ๊ฒฐ๊ตญ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๊ธฐ๋ก ๋ง์์ ๋จน์๋ค.
๋ฏธ๋์ด ์๋ฒ๋ฅผ ๋ณ๋์ ์๋ฒ๋ก ๋ถ๋ฆฌํ๊ณ , ๋ณธ ์๋ฒ์๋ API๋ฅผ ํตํด ํต์ ํ๋๊ฒ ๋ซ๋ค๊ณ ์๊ฐ์ด ๋ค์๋ค. ์ด๋ก ์ธํด ์ป๋ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์๋ค.
- ์ค์ผ์ผ์ ์ด ์์ ๋กญ๋ค
- ํ์ ์ด ์ฉ์ดํ๋ค.
- ๋ ํจ์จ์ ์ธ ์ค๊ณ๋ฅผ ์ํด ์์ ๋กญ๊ฒ ๊ธฐ์ ์คํ์ ํ์ฉํ ์ ์๋ค.
๋ฏธ๋์ด ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๋ค.
๊ทธ ๋ค์ ์๊ฐํ ๊ฒ์ด web server์๋ค. ๊ณผ์ฐ ์ ์ ํ์ผ์ ๋จ์ํ๊ฒ ์๋ตํ ๋๋ WAS์ ๋์ ์ฑ๋ฅ์ด ํ์ํ๊ฐ ์๋ค.
์ฌ์ค ๋จ์ํ ํ์ผ ์๋น์ ๊ฒฝ์ฐ ์น์๋ฒ๊ฐ ๋ด๋นํ๋ ๊ฒ์ด ๋ซ๋ค๊ณ ์๊ฐ์ ํ์๋ค. ๊ทธ๋์ ์น์๋ฒ๋ฅผ ์ฌ์ฉํด ๋ฆฌ๋ฒ์ ํ๋ก์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ๋์ ํ๋ฉฐ ๊ธฐ๋ํ ํจ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฏธ๋์ด ๋๋ฉ์ธ์ ๋จ์ ํ์ผ ์๋น ๊ธฐ๋ฅ์ ์น์๋ฒ๋ก ๋๊ธฐ๋ฉด์ WAS์ ๋ถํ๋ฅผ ์ค์ธ๋ค.
- ๋ฐ๋ณต๋๋ ์ ์ ์ปจํ ์ธ ๋ ์บ์ฑ์ ํตํด ์ฑ๋ฅ์ ๋์ธ๋ค.
- ์ถํ ์๋ฒ๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ํ์ฅ ํ ๋, ๋ก๋๋ฐธ๋ฐ์๋ก์ ํ์ฉํ ์ ์๋ค.
๋ด๋ถ์ ์น์๋ฒ๋ฅผ ๋์ด ์ ์ ํ์ผ ์๋น ์ญํ ์ ๋ถ๋ฆฌํ๊ณ , ์บ์ฑ์ด ์ฉ์ดํ๋๋ก ํ์๋ค.
์๋ฒ ๋ณผ๋ฅจ์ ๊ฐ ๋์ปค ์ด๋ฏธ์ง์ ๋ณผ๋ฅจ ๋ง์ดํธ ์ํค๊ณ , WAS์๋ฒ๋ ์ ๋ง ๋น๋์ค ์ธ์ฝ๋ฉ์ด๋ ๋ณต์กํ ๋ก์ง ์ฒ๋ฆฌ๋ง ๋ด๋นํ๋๋ก ํ์๋ค.
๊ทธ๋ฆฌ๊ณ Nginx๋ ๊ณต์ ๋ ๋ณผ๋ฅจ์์ ๋์์ ํ์ผ์ด๋, m3u8 ํ๋ ์ด๋ฆฌ์คํธ, ์ธ๋ค์ผ ํ์ผ๊ฐ์ด ํฐ ๊ท๋ชจ์ ์ ์ ํ์ผ๋ค์ ์๋นํ๋๋ก ์ญํ ์ ๋ถ๋ฆฌ์์ผฐ๋ค.
๋ฌผ๋ก ๋์ ๊ฒฝ์ฐ์๋ ํ๋์ ์๋ฒ์ ์ง์ด ๋ฃ์์ง๋ง, Nginx๋ฅผ ๋ณ๋๋ก ๋ถ๋ฆฌ์์ผ๋ ๋๊ณ , ์ ๋ณผ๋ฅจ ๋ง์ดํธ ๋ ์คํ ๋ฆฌ์ง๋ฅผ ๋ค๋ฅธ CDN๊ฐ์ ์๋น์ค๋ก ๋ฐ๊ฟ ์๋ ์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ญํ ๋ถ๋ด์ด ์ด๋ฃจ์ด ์ก๋ค.
- ์ ์ ํ์ผ ์๋น
- ํ๋ก์/์บ์ฑ
- ์ธ์ฝ๋ฉ
- ์ ์ ํ์ผ ์์ฑ/์ ์ฅ
- ์ธ์ฝ๋ฉ ์ํฉ ์ค๊ณ ๋ฑ ๋ณต์กํ ๋ก์ง
๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ๋๊ณ , ์บ์ฑ์ ํ๋๋ก ํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ์๋ค.
๊ทธ๋๋ ๋จ์ ๋ฌธ์ ์ ์ด ์์๋ค.
๋์ ๋ก์ง์ ๋๋ถ๋ถ์ด IO ๋ธ๋กํน์ด ํฌํจ๋์ด ์๊ณ , ์๋ฒ์ ์คํ์ด ์ข์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค. ์๋ฒ์ ์คํ์ด 1Gb ๋ฉ๋ชจ๋ฆฌ์ 1Core cpu ์๋๋ฐ, ์ด ๋ง์ ๋ ARM๊ธฐ๋ฐ์ด์๋ค.
๋ง์ฝ ๊ธฐ์กด์ ํฐ์บฃ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณํ๋ค๋ฉด, ๊ณ์ํด์ ๋์ด๋๋ ์ฐ๋ ๋๋ฅผ ๋ฒํฐ๊ธฐ ํ๋ค๋ค๊ณ ์๊ฐํ์๋ค. ๋ํ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ๋ ์์๋ค.
- ์ฑ๊ธ ์ฝ์ด ์ด๊ธฐ ๋๋ฌธ์, ๋ง์ ์์ ์ฐ๋ ๋๊ฐ ๊ทธ๋ค์ง ํจ์จ์ ์ด์ง ์์ ๊ฒ์ด๋ค.
- ์ฐ๋ ๋๊ฐ ๋ง์์ง๋ฉด, Context Switching ๋น์ฉ๊ณผ ์ฐ๋ ๋ ์์ฑ๋น์ฉ์ด ๊ธ๊ฒฉํ ๋์ด๋ ๊ฒ์ด๋ค.
- ๋๋ถ๋ถ์ด ๋ธ๋กํน ์์ ์ด๊ณ , ๊ทธ ๋ธ๋กํน ์๊ฐ๋์ ์ฐ์ฐ ๋ฆฌ์์ค๋ฅผ ๋งค์ฐ๋งค์ฐ ๋ง์ด ์๋ชจํ๋ค.(์ธ์ฝ๋ฉ ์์ )
- ์ธ์ฝ๋ฉ ์์ฒญ์ด ๋ง์ด ๋ค์ด์ค๋ฉด, ์์คํ ์ด ๋ ๋๋ ค์ง ๊ฒ์ด๊ณ , ์ด๋ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ๋ฅผ ๋ ๋๋ฆฌ๊ฒ ๋ง๋๋ฏ๋ก, ์์ฒญ์ด ๋์ฑ ์ ์ฒด๋๊ฒ ๋ง๋ค์ด ์ ์ํ์ด ๋ฐ๋ณต๋๋ค.
์์ฒญ์ด ๋์ด๋๋ฉด, ์ธ์ฝ๋ฉ ์์ ์ด ๋ ์ค๋๊ฑธ๋ฆฌ๊ณ , ์ด๋ ๋ฌธ๋งฅ ์ ํ๋น์ฉ์ ๋๋ฌด ๋์ธ๋ค.
๋ฐ๋ผ์ ๊ธฐ์กด์ ์ฐ๋ ๋ ํ ๋ฐฉ์์ผ๋ก๋ ํ๊ณ๊ฐ ์๋ค๊ณ ์๊ฐ์ ํ์๋ค. ๊ทธ๋์ ์๋ ๋ชฉํ๋ฅผ ์ก์๋ค.
- ์ธ์ฝ๋ฉ ์์ฒญ์ด ์ค๋ฉด, ํ์ ๋ฑ๋กํ๊ณ , ์ฆ์ ํ์ธ์๋ต(์๋ฃ์๋ต์ด ์๋๋ผ)๋ฅผ ๋ณด๋ธ๋ค.
- ๋ณ๋๋ก ์ ํ๋ ์ฐ๋ ๋ ํ์ ์์ฑํ๊ณ , ํ๋ฒ์ ์คํ๋ ์ ์๋ ์ธ์ฝ๋ฉ ์์ ์๋ฅผ ์ ํํ๋ค.
- ๋๊ธฐ ์ค์ธ ์์ ์ ๊ฐ๋ฒผ์ด ์ธ์ฝ๋ฉ ์ฃผ๋ฌธ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ํ์ ์ ์ฅํ๋ค.
- ์ฐ๋ ๋๋ฅผ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ์.
์์ ๊ฐ์ ์ฌํญ์ ๋ง์กฑ์ํค๊ธฐ ์ํด WebFlux๋ฅผ ๋์ ํ๊ณ ์๋ก์ด ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ์ค๊ณํ๊ธฐ ์์ํ๋ค.
WebFlux๋ฅผ ์ ํํ ํ๊ฐ์ง ์ถ๊ฐ์ ์ธ ์ด์ ๊ฐ ์์๋๋ฐ, ๋ฏธ๋์ด ์๋ฒ์ ์ฃผ์ API์ค ํ๋์ธ ์งํ ์ํฉ์ SSE๋ก BroadCastํ๋ ์์ ์ ์กฐ๊ธ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํจ ์ด์๋ค.
WebFlux๋์ ๊ณผ ์์คํ ์ค๊ณ
์ด๋ฅผ ํตํด ์ป์ ์ ์๋ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์๋ค.
- Non-Blocking ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ๋์ ํด์ ์ฐ๋ ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๋น ๋ฅด๊ฒ ์๋ตํ ์ ์์๋ค. โ ์ธ์ฝ๋ฉ์ด ์ ์ฒด๋์ด ๋ค๋ฅธ ๊ฐ๋ฒผ์ด ์๋ต์ด ์๊ฐ๋ ์ํฉ์ ๋ฐฉ์ง ํ ์ ์๋ค.
- Bonded Thread Pool์ ์์คํ ์ฝ์ด์ ๋๋ฐฐ๊น์ง๋ง ์์ฑ๋๋๋ก ํ์ฌ ๊ณผ๋ํ ์ฐ๋ ๋ ๊ฒฝ์ ๋ฐฉ์ง, ์ ์ํ ์๋ฐฉ
- ํ์ผ(๋น๋์ค)์ ๊ทธ๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ๋๋ ๊ฒ์ด ์๋๋ผ, ์ผ๋จ ํ์ผ ์์คํ ์ ์๋ณธ์ ์ ์ฅํ๊ณ , ๊ฒฝ๋ก(String)๋ง ํ์ ๋ฑ๋กํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ค.
๊ฐ์ฅ ํต์ฌ์, ์ฑ๊ธ ์ฝ์ด์ ์ฌ์์ด ๋ง์ด ๋จ์ด์ง๋ ์๋ฒ์์ ์๋นํ ๊ณ ํจ์จ๋ก ๋ก์ง๋ค์ ๋๋ฆด ์ ์์๋ค๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๊ฐ์ ํ ์๋ฒ ๋ก์ง์ธ๋ฐ๋ ์์ง ๋ง์ด ๋ถ์กฑํ๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ๋์์ POST์์ฒญ์ ์ฐ์ํด์ 2๊ฐ ์ด์ ๋ณด๋ด๋ฉด, Connection Timeout์ด ๋ฐ์ํ๋ค.
๋งจ ์ฒ์์๋ ์๋ฒ์ ์ฌ์์ด ๋ถ์กฑํด์ ๊ทธ๋ฌ๊ฒ ๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ์ง๋ง, ๊ณ์ํด์ ์๊ฐํ๋ค ๋ณด๋ ๋ฌธ์ ์ ์ ๋ฐ๊ฒฌํ ์ ์์๋ค. ๋์ ๋น๋์ค ์ ์ฅ๋ก์ง์ ๋ค์๊ณผ ๊ฐ์ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅธ๋ค
- ์์ฒญ์ ๋ฐ๋๋ค
- ์์ฒญ์ ๊ฒ์ฆํ๋ค. (ํ๋๋, ํ์ผ์ ํ์์ด๋ ๋ฑ)
- ํ์ผ์ ์ ์ฅํ๋ค. (๋ฉ๋ชจ๋ฆฌ โ ํ์ผ ์์คํ )
- ์ ์ฅ๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ํฌํจํ ์ธ์ฝ๋ฉ ์์ฒญ์ (ํ์ง, ์ค๋์ค ์ฌ๋ถ ๋ฑ)์ ์์ฑํด์ ํ์ ์ฝ์ ํ๋ค.
- ์์๊ฐ ๋๋ฉด ์ฐ๋ ๋๋ฅผ ๋ฐฐ์ ๋ฐ๊ณ ์ธ์ฝ๋ฉ์ ์ํํ๋ค.
๋ฌธ์ ๋ ํ์ผ์ ์ ์ฅํ๋ ๋ก์ง๊ณผ ์ธ์ฝ๋ฉ์ ํ๋ ๋ก์ง์ด ๋ชจ๋ Bounded ์ฐ๋ ๋ํ์์ ๊ฐ์ด ๋๊ธฐ๋ฅผ ํ๋ค๋ ๊ฒ์ด์๋ค.
์ธ์ฝ๋ฉ ์์ ์ ํ๊ท ์ ์ผ๋ก ์๊ฐ์ ๋ง์ด ์ก์๋จน๊ณ , ํ์ผ ์ ์ฅ ์์ ์ ๋น๊ต์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋๋ฌ๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ์๊ฐ์ ํ๊ฒ ๋์๋ค.
Bounded ์ฐ๋ ๋ ํ์ ๋์์ ์ธ์ฝ๋ฉ ์์ ์ด ๋ชจ๋ ๋ค์ด๊ฐ๊ณ ๋๋ฉด, ํ์ผ ์ ์ฅ๋ก์ง์ด ๋๊ธฐ๋ฅผ ํ๋๋ผ ์์ฒญ์ด TimeOut ๋๋ ๊ฒ์ด ์๋๊น?
์๋นํ ํฉ๋ฆฌ์ ์ธ ์์ฌ์ธ ๊ฒ์ด, ๋์ ์๋ฒ ์ฝ์ด ์๋ 1๊ฐ์ด๊ณ ๋ฐ๋ผ์ 2๊ฐ์ง๋ฆฌ ์ฐ๋ ๋ ํ์ด ์์ฑ์ด ๋ ํ ๋ฐ, ๊ทธ๋ ๋ค๋ฉด ์คํ์ ์ผ๋ก ์ป์ ์ต๋ 2๊ฐ ์ธ์ฝ๋ฉ์ด๋ผ๋ ์์น๊ฐ ๋ค์ด๋ง์๋ค. (2๊ฐ์ ์ฐ๋ ๋๊ฐ ์ ์ ๋นํ์ผ๋ฏ๋ก)
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ํ์๋ค.
๊ฐ์ ๋ ์์คํ , ๋ ์ด์ ์์ฒญ์ ๋ํ ์ง์ฐ์ด ๋ฐ์ํ์ง ์๋๋ค
์ธ์ฝ๋ฉ ์์ ๋ง์ ์ํ Bounded ์ฐ๋ ๋ ํ์ ๋ณ๋๋ก ์์ฑํ ํ, ์ธ์ฝ๋ฉ ์์ ์๋ง ์ฌ์ฉํ๋๋ก ๋ฐฐ์ ํ์๋ค.
์ด๋ก์จ ์ธ์ฝ๋ฉ ์์ ์ฐ๋ ๋ํ์ ์ธ์ฝ๋ฉ ์์ ๋ง ์งํํ๊ณ , ๋๋จธ์ง ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ธ๋กํน ์์ ์ ์ฌ๊ธฐ์ ์ํฅ์ ๋ฐ์ง ์๊ณ ์ ๋์๊ฐ ์ ์๊ฒ ๋์๋ค.
์ง์ PostMan์ผ๋ก ์ฐ์ํด์ ๋์์ ๋ฑ๋ก ์์ฒญ์ 10๋ฒ ์ ๋ ๋ณด๋ด ๋ณด์์ง๋ง, ์์ฒญ๊ฐ ์ง์ฐ์๊ฐ์ด ๋น์ทํ๊ฒ ์ ์ฒ๋ฆฌ๋์๋ค. (๋ฌผ๋ก ์ฝ๊ฐ์ ์ง์ฐ์ ๋ฐ์ํ์ง๋ง, ๊ธฐ์กด์ TimeOut์ ๋นํ๋ฉด, ์๋ฌด๊ฒ๋ ์๋์๋ค.)
์ด ๊ธ์์๋ ๋ค๋ฅธ ๋ถ๋ถ์ ์์ฑํ์ง ์๊ณ , ํ๋ก์ ํธ์ ๊ตฌ์กฐ์ ๊ดํด์ ๊ฐ์ ํ ๋ถ๋ถ์ ์์ฃผ๋ก ์์ฑํ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ฐ์ ์ฌํญ์ ๋ค๋ฅธ ๊ธ์ ์ ๋๋ก ํ๊ฒ ๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์ ๋ก์ง์ด ์๋ ์ด๋ฌํ ์๋ฒ์ ๋ฐฐ์น๋, ๋ก์ง ๋ถ๋ฐฐ, ์์คํ ์ค๊ณ ๋ง์ผ๋ก ์๋นํ ๋ง์ ๊ฐ์ ์ ์ด๋ฃจ์๋ค.
๋งจ ์ฒ์ WAS ํ๋๋ง์ผ๋ก ์ ์ฒด ์๋ฒ๋ฅผ ๋๋ ธ์ ๋๋ ํ๋์ ์ธ์ฝ๋ฉ ์์ ๋ ์ ์ฒ๋ฆฌํ์ง ๋ชปํ์์ง๋ง, ์ฌ๋ฌ๋ฒ์ ๊ฐ์ ์ ํตํด 1Gb ๋ฉ๋ชจ๋ฆฌ์ 1Core(Arm) CPU๋ผ๋ ์ด์ ํ ์๋ฒํ๊ฒฝ์์๋ ๋ฌด์ฌํ ๋์๊ฐ๋ ์๋ฒ๋ฅผ ๋ง๋ค์๋ค.
๋์์ ์ธ์ฝ๋ฉ์ ๋น๋๊ธฐ๋ก ์งํํ๋ค๋ณด๋, ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ด ์๊ฒผ๋ค. ์ฌ์ฉ์๊ฐ ํ์ฌ ๋์์ ์ธ์ฝ๋ฉ ์์ ์ด ์ผ๋ง๋ ์งํ๋ ์ ์๋์ง ์ด๋ป๊ฒ ์ ์ ์์ง?
๋๋ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, ์๋ฒ ๋ด๋ถ์ ConcurrentHashMap์ ๋์ด ํด๊ฒฐ ํ์๋ค.
์ธ์ฝ๋ฉ ์์ ๋ง๋ค ๊ณ ์ ํ ํค ๊ฐ์ ์์ฑํ๊ณ , ๊ทธ ๋ด๋ถ์ Project Reactor์ Flux.Sink๋ฅผ ๋์ด BroadCast๋ฅผ ํ๋๋ก ํ์๋ค.
ConcurrentHashMap์ ์ฌ์ฉํ์๊ธฐ ๋๋ฌธ์ ์ํธ๋ฆฌ๋ง๋ค ๋ฝ์ด ๊ฑธ๋ฆฌ๊ฒ ๋์ด, ์ฌ๋ฌ ์ฐ๋ ๋์์ ๋์์ Map์ ์กฐํํ๋๋ผ๋ ์ฑ๋ฅํ๋ฝ์ ์ต์ํํ์๋ค.
๊ทธ๋ ๊ฒ ํ์ฌ, ๋์์ ์์ ์ด ์ ์๋๋ฉด, READY์ํ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ธํ๊ณ , ๋์์ ์ธ์ฝ๋ฉ์ด ์งํ๋ ๋๋, ffmpeg์ ๋ก๊ทธ๋ฅผ ํ์ฑํ์ฌ ๋ฐฑ๋ถ์จ ํ์์ผ๋ก ์ด๋ฒคํธ๋ฅผ ํผ๋ธ๋ฆฌ์ฑ ํ์๋ค.
์ด ํผ๋ธ๋ฆฌ์ฑ ํ ์ด๋ฒคํธ๋ SSE๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์๊ฒ ์ง์์ ์ผ๋ก ์ ๋ฌํ๋๋ก ์ค๊ณํ์๋ค.
์ด๋ ๊ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ๋๋, ํ์คํ ๋ณด๋ ๋์ด ๋ง์ด ๋ฌ๋ผ์ก๋ค. ๊ธฐ์กด์๋ ๋ฐฐํฌ๋, ํ์ ๊ด์ ์ ๋ฌธ์ ๋ ๊ฒฝํํด ๋ณธ์ ์ด ์์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์ด ํ๋ก์ ํธ๋ฅผ ๋๋ด๊ณ ๋๋, ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์ ์ด ๋ง์ด ๋ณด์๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ฒ์์ผ๋ก ์๋ฒ๊ฐ ํต์ ์ ํ๋ฉฐ ๋ก์ง์ด ์ฒ๋ฆฌ๋๋ ๋ง์ดํฌ๋ก์๋น์ค(?) ๊ฐ์ ๋ฐฉ์์ ์ฒ์ ์ฌ์ฉํด ๋ณด์๋ค. ํ์ง๋ง ์๋นํ ๋ง์ ๋ฌธ์ ์ ์ด ๋ณด์๋ค.
์ผ๋จ ์๋ฒ๊ฐ ์์กด์ฑ์ด ๋งค์ฐ ์ปค์ง๋ค๋ ๊ฒ์ด์๋ค. ๋ํ API ์๋ฒ๊ฐ ์ด ํฐ ๋์์ ํ์ผ์ ๋ฐ์์ ๋ ๋ค๋ฅธ ์๋ฒ์๊ฒ ์ ๋ฌํ๋ ๊ณผ์ ์ด ๋๋ฌด ๋นํจ์จ์ ์ด์๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ณ์ํด์ ์งํํ๋ฉด ๋ง์ ๋นํจ์จ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ ๋จ๋ฒ์ ์ ์ ์์๋ค. ๋ง์ฝ ์๋ฒ๊ฐ ๋๋๊ฐ ์๋๋ผ ๋ง์ ๋๋ฉ์ธ์ด ์๋ค๋ฉด? ์ด๊ฑด ๋ญ ์์ํ๊ธฐ๋ ์ซ๋ค. ์๋ก ์ปค๋ฅ์ ์ด ์ฝํ๊ณ ์ฅํ์ ๋๋ฒ๊น ๋ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๊ณ ์๋ก์ ip์ฃผ์๋ ์ฌํญ์ ๊ณ ๋ คํด์ผํ๊ณ , ๋ฌธ์ ์ ์ด ๋๋ฌด ๋ง์ด ๋ณด์๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ํ ๋๋ง ํด๋ ํด๋ผ์ฐ๋์ ๋ํ ์ง์์ด ์ ๋ฌดํ๋ค. ํ์ง๋ง ์๋ฒ์ ์ฌ๋ฆฌ๊ณ ํ๋ฉฐ aws๋ ๋ค๋ฅธ ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ํด ์ ์ ์์๋ณด๊ฒ ๋์๋๋ฐ, ์์ ํ ๋ค๋ฅธ ์์ผ๊ฐ ๋ณด์๋ค.
๋ด๊ฐ ์ธ์ฝ๋ฉ ๋ก์ง์ ์ ํํ๊ธฐ ์ํด ๋ณ๋์ ์ฐ๋ ๋ํ์ ๋์ด ์ฒ๋ฆฌํ ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ, ์คํ ์ค์ผ์ผ๋ง์ด๋ ๋ก๋๋ฐธ๋ฐ์ฑ์ด๋, ์ ๋ง ๋ ํ์ํ ํด๊ฒฐ์ฑ ์ด ๋ค์ ์์๋ค.
๋์์ ํ์ผ์ ์๋ฒ ์์ฒด์ ์ ์ฅํ๋๊ฒ ๋ํ ๋ฌธ์ ๊ฐ ๋ง๋ค๊ณ ์๊ฐํ๋ค. ๋ง์ฝ ์ฌ์ฉ์๊ฐ ๊ณ์ํด์ ๋์ด๋๋ค๋ฉด? ์ด ๋ชจ๋ ๊ฒ์ ํ๋์ ํ์ผ ์์คํ ์ ์ ์ฅํ ๊ฒ์ธ๊ฐ?
๋์์์ ๊ฒ์ํ๋ ค๊ณ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด์ ๊น์ง WebFlux์ ์ฅ์ ์ ์๋๋ฃฉํ๊ฒ ์จ๋๊ณ ์ด์ ์์ ์๋ชป๋ ๋์ ์ด๋ผ๋?
์ผ๋จ ๋์ ๋ก์ง ์์ฒด๊ฐ ๋๋ถ๋ถ์ด ๋ธ๋กํน ์์ ์ด๊ธฐ ๋๋ฌธ์, WebFlux์ ๋ ผ๋ธ๋กํน ์ด๋ฒคํธ ๋ฃจํ์ ์ฅ์ ์ ์ ํ์ด๋ฆฌ์ง ๋ชปํ๋ค. ์ค์ ๋ก ๋๋ถ๋ถ์ ์์ ์ด ์ฐ๋ ๋ ํ์ ๋ฐฐ์ ์ด ๋์ด, ์ผ๋ฐ ์๋ธ๋ฆฟ ํฐ์บฃ ๊ธฐ๋ฐ์ ์๋ฒ์ ๋ค๋ฅผ๋ฐ๊ฐ ์์๋ค.
๋ํ Reactor์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ ๋ง ๋ค๋ฅธ ์๊ฐ์ ์ฃผ๊ณ ๋ถ๋ช ํ ์ ์ฉํ ๋ถ๋ถ์ด ์์์ง๋ง, ์ต์ํ์ง ์์ ์ ์ง ๋ณด์๊ฐ ์ด๋ ต๊ณ , ์๋ชป ์ค๊ณํ๋ฉด ์ ํ ๊ทธ ์ฅ์ ์ ๊ฐ์ ธ๊ฐ๊ธฐ ์ด๋ ค์ ๋ค. ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ๋ฌด์กฐ๊ฑด ์ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ์๋๋ผ๋ ๊ฒ๋ ์์๋ค. ๋ถ๋ช ํ ์ฅ๋จ์ ์ด ์์๋ค.
์ด๋ค ์ฝ๋์์๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ ์ฑ์ ์ฌ๋ ค์ค ๋ฐ๋ฉด, ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์๋ค. ๋ ์์ธ์ฒ๋ฆฌ๊ฐ ๋๋ฌด ํ๋ค๊ณ , ์์ํ๊ธฐ ํ๋ค๋ค. ์์ธ์ฒ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ค๋ฅด๊ธฐ๋ ํ๊ณ , ๊ฐ๊ฐ์ ์์ธ ์ฝ๋ฐฑ์ ๋ฌ์์ค์ผํ๊ณ , ์ ์ฒด์ ์ธ ์์ธ ์ฒ๋ฆฌ ํ๋ฆ์ ๋ณด๊ธฐ๊ฐ ์ด๋ ค์ ๋ค.
๊ทธ๋ค์ ๊ฐ์ฅ ์ค์ํ ๋ฌธ์ ๋, R2DBC ์ ์ฑ์๋ ๋ฌธ์ ์๋ค. R2DBC๋ ๋ฆฌ์กํฐ๋ธ ์ง์์์ ์ฌ์ฉํ๋ ๋ ผ๋ธ๋กํน ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๋๊ตฌ์ด๋ค. ๋ ผ๋ธ๋กํน์ด ๊ฐ์ฅ ํฐ ํน์ง์ด๋ค. ํ์ง๋ง, ์ ๋ง ์ฑ์๋๊ฐ ๋๋ฌด ๋ถ์กฑํ๋ค. ํนํ Hibernate๊ฐ์ ์ฐ๋ํ ๊ตฌํ์ฒด๊ฐ ์๋ JPA์๋ ๋ฌ๋ฆฌ, ๊ตฌํ์ฒด๋ค์ ์ง์๋ ํน์ ๊ฐ์ธ์ด ํ๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๊ณ , ์ ์ง๋ณด์๋ ์ ๋์ง ์์๋ค. (์ผ๋ก๋ก, Mysql ๊ตฌํ์ฒด์ ๊ฒฝ์ฐ ์ด๋ค ์ค๊ตญ ์ ์ ๊ฐ ๋ด๋นํ๊ณ ์์๋๋ฐ, git์ ๋ค์ด๊ฐ ๋ณด๋ฉด, ์ฝ๋ก๋๋ก ์ธํด ์ถ์ด ํ๋ค์ด์ ธ์ ์ ์ง๋ณด์๊ฐ ํ๋ค๋ค๊ณ ์ ํ์๋ค.) ์ฌ์ง์ด, ๋ฒ์ ์ ๋ฐ๋ผ์๋ exits๋ฌธ์ ํธ์ถํ๋ฉด ๋ฌด์กฐ๊ฑด์ ์ผ๋ก NumberFormatCasting ๊ด๋ จ ์์ธ๊ฐ ๋ฐ์ํ๋ค. (Integer โ Long) ๊ทธ๋ฅ ํ๋์ ์์ด, ์์ธ์ฒ๋ฆฌ๋ฅผ ํ์ฌ ๋ฌด์ํ๋๋ก ๊ตฌํํ์๋ค.
๋ํ JPA๊ฐ์ ๊ตฌํ์ฒด์์๋ ์ํฐํฐ์ ์ ๋งํ ํ์ ์ ๋ถ์ฌ๋ ๋ค ์๋์ผ๋ก ๋ณํ๋์ด ์คํ๋๋ ํํธ, ๋๋ถ๋ถ ๋ด๊ฐ ์ปจ๋ฒํฐ๋ฅผ ๋ฌ์์ค์ผํ๊ณ , ๊ทธ๋ํ ํ์์ด๋, ManyToOne๊ณผ ๊ฐ์ ์ฐ๊ด๊ด๊ณ ๋งคํ๋ ์กด์ฌํ์ง ์์๋ค. ๊ทธ๋ฅ ๋ง๊ทธ๋๋ก SQL๋ฒ์ญ๊ธฐ ๊ฐ์ ๋๋.
๊ทธ๋์ ๋์ ๋ค์ ํ๋ก์ ํธ ๋ถํฐ๋ ์ ๋งํ๋ฉด ๊ธฐ์กด ์ ํต์ ์ธ ์คํ๋ง์ผ๋ก ์์ ์ ํ ์์ ์ด๋ค. ๋จ ๋ธ๋กํน ์์ ์ด ์ ๊ณ , ๋น ๋ฅธ ์๋ต์๋์ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด์ผํ๋ ํ๋ก์ ํธ๋ผ๋ฉด ๋์ ํ ๋ง ํ๋ค๊ณ ๋๊ผ๋ค. ๋์ , ๊ทธ๋๋ ์ค๋ผํด ๊ฐ์ด R2DBC์ ๋ํ ๊ตฌํ์ฒด๋ฅผ ํ์คํ๊ฒ ์ง์ํด์ฃผ๋ DB๋ฅผ ์ ํํ๋๊ฒ ์ค์ํด ๋ณด์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋์ ๋ก์ง ์ค๊ณ๋ ์์ ํ ํ๋ฆฐ๊ฒ๋์๋ค.
- ์ฌ์ฉ์๊ฐ ๋์ด๋๋, ์ ๋ ๊ฒ ํ๋์ ์๋ฒ์์ ๊ฐฏ์๋ฅผ ์ ํํ๋ฉฐ ์คํํ ๊ฒ์ธ๊ฐ?
- ๋ง์ฝ ๋ฏธ๋์ด ์๋ฒ๊ฐ ์ฌ๋ฌ๋ ์คํ๋๋ฉด, ConcurrentHashMap์ ๊ณต์ ํ์ง ์์ผ๋ฏ๋ก, ์ด๋ป๊ฒ ๋์ํ๊ฒ ๋๋๊ฐ?
- ๊ฐ๊ฐ์ ์ด๋ฒคํธ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ ํ ๊ฒ์ธ๊ฐ?
์ด๋ฐ ์๊ฐ์ ํ๊ณ ๋๋, ๋์ ๋ก์ง์ด ์์ ํ ํ๋ ธ๋ค๋ ๊ฒ์ ์ ์ ์์๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ค๊ณ๋ฅผ ํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
- ์ธ์ฝ๋ฉ ๋ก์ง์ ์ฐ๋ ๋ ํ๋ก ์ ํ ํ๋ ๊ฒ์ด ์๋๋ผ, ๊ณ์ํด์ ๋ฐฐ์ ๋ ์ ์๊ฒ ํ๊ณ ๋์ ์คํ ์ค์ผ์ผ๋ง๊ณผ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํตํด ์ด๋ฅผ ์ ์ดํ๋ค.
- ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋๋ ์ธ์ฝ๋ฉ์ ์งํ์ํฉ์, ๊ฐ๊ฐ์ ์ฒ๋ฆฌ ์๋ฒ์์ ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๋๋ก ํ๊ณ , ์ด๋ฅผ ๊ตฌ๋ ํ ์๋ฒ์์ ์งํ์ํฉ์ ์๋ ค์ฃผ๋ ์์ผ๋ก ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ํ์ผ์ aws S3์ ์ ์ฅํ๋๋ก ํ๊ณ , ์ด ์ด๋ฒคํธ๋ฅผ ํ์ฉํด์ ์ธ์ฝ๋ฉ ์์ ์ ๋น๋๊ธฐ๋ก ํธ๋ฆฌ๊ฑฐํ๋ค.
- ์๋ณธ ํ์ผ๊ณผ ๊ฐ์ ํ์ผ์ ๋ง์ด ์ ๊ทผํ์ง ์์ผ๋ฏ๋ก, ๋ ์ ๋ ดํ ์ ์ฅ์์ ๋ณ๋๋ก ์ ์ฅํ๋ค.
- ๋์์ ๊ฒ์์ ์ํด, ๋์์์ ๋ฎ์ ํ์ง๋ก ์์ถํ ๋ฒ์ ์ ๋ฐ๋ก ๋ง๋ค์ด, ์์ ํ๋ก์ s3์ ์ ์ฅํ๋๋ก ํ๊ณ , ๋ท๋จ์์ ๋์์ ๋ถ์ ์์ ์ด๋, ์๋ง ์์ ๋ฑ์ ์ฒ๋ฆฌํ๋ค.
- S3์ ์ ์ ํ์ผ๋ค์ ํด๋ผ์ฐ๋์ CDN ์๋น์ค๋ฅผ ํตํด ์บ์ฑ์ ์งํํ๋ค.
์ด๋ฌํ ๋ค์ํ ์๊ฐ์ด ๋ค๊ธฐ ์์ํ๋ค. ๊ธฐ์กด์ ๋จ์ํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ์ถ๋ ฅ ๊ธฐ๋ฐ์์๋ ์๊ฐํ์ง ๋ชปํ๋ ๋ค์ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋์ ์์ผ๋ก ๊ณต๋ถ ๋ฐฉํฅ์ ์ ํ๋ค.
- MSA, ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ, ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ณ
- ์ํ์น ์นดํ์นด
- ์๋ผ์คํฑ ์์น
- ์๋ฒ๋ฆฌ์ค(aws lambda)์ ํ์ฉ
ํ์ฌ๋ ์ฑ ์ ์ฌ๊ณ , ์ฌ๋ฌ๊ฐ์ง ๋ฐ๋ชจ๋ฅผ ๋ง๋ค๋ฉฐ ์ด ์๋ก์ด ๋ถ์ผ์ ๋ํด ๋ ๊ณต๋ถํ๊ณ ์๋ค.
์ ํ๋ธ ํด๋ก ํ๋ก์ ํธ์์ ๋์์ ์คํธ๋ฆฌ๋ฐ์ด๋, ์ ์ ํ์ผ์ ๋ค๋ฃจ๋ ๋ฌธ์ ๋ ๋ค๋ค ์ฒ์ ๋ค๋ฃจ๋ ๋ฌธ์ ๋ผ ๋งก๊ธฐ๋ฅผ ๊บผ๋ คํ๋ค.
๋๋ ์ฒ์ ํด๋ณด๋ ๋ฏธ๋์ด ๋๋ฉ์ธ์ ๋งก์ผ๋ฉฐ, ๋ง์ ๊ฒ์ ๋จ์๊ฐ์ ๊ณต๋ถํ๋ค.
- Reactor (Flux, Mono)
- Webflux
- Docker
- Nginx
- ๋ฐฐํฌ, ๋คํธ์ํฌ
- hls ํ๋กํ ์ฝ
- ffmpeg
์ฌ์ค ์ค๊ฐ์ ์ํ๊ธฐ๊ฐ์ ์ ์ธํ๋ฉด 2๋ฌ๋์ ํ๊ต ์์ ๊ณผ ๊ณผ์ ๋ฅผ ๋ณํํ๋ฉฐ, ๊ณต๋ถํ๊ฑฐ๋ผ ์ ๋ง ์ฝ์ง ์์๋ค. ํ์ง๋ง, ์ฒ์ ๋ฐฐํฌ๋ฅผ ํด๋ณด๊ณ ์ฒ์ ํ์ ์ ํด๋ณด๋ฉฐ, ์ ๋ง ๋์์ด ๋ง์ด ๋์๊ณ ๋ ๋์ ์์ผ๋ฅผ ๊ฐ์ง ์ ์์๋ค.
ํนํ ์์ผ๋ก msa๋ ์ด๋ฒคํธ ๋๋ฆฌ๋ธ, ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ๋ฅผ ๊ณต๋ถํ ๋ ๋จ์ํ ํซํ ๊ธฐ์ ์ด์ด์๊ฐ ์๋, ๋ถ๋ช ํ ์ด์ ์ ๋๊ธฐ๋ฅผ ์ป์๊ฑฐ ๊ฐ์ ๋งค์ฐ ๋์์ด ๋์๋ค.