ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ํ๋ก์ ์๋ฅผ ์ฆ๊ฐํ๊ฑฐ๋ ์ค์ผ๋ ๋์์ฑ ๋ฌธ์ ์ ๋ํด ๊ณ ๋ฏผํ๋ ๋ด์ฉ์ ๋๋ค. ํ์ต๊ณผ์ ์์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค.
1. ๋์์ฑ ๋ฌธ์
ํ์ฌ ํ๋ก์ฐ/์ธํ๋ก์ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ก์ง์ ์๋์ ๊ฐ์ต๋๋ค. ํ๋ก์/์ธํ๋ก์ฐ์ ํ๊ฒ๋๋ฉด ํ์ ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์๋ ํ๋ก์ ์ปฌ๋ผ์ ๊ฐ์ด 1 ์ฆ๊ฐํ๊ฑฐ๋ ๊ฐ์ํ๋ ๋ก์ง์ธ๋ฐ์, ์ด ๋ถ๋ถ์์ ๋์์ฑ ์ด์๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ฌ๊ธฐ์ ์ ํ์ ํ ์ด๋ธ์ด ํ๋ก์ ์นด์ดํธ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง์ ๋ํด ์๋ฌธ์ด ์๊ธธ ์ ์์ต๋๋ค. ์ด๋ ์กฐํ์ ํธ์์ฑ์ ์ํด ์ด๋ ๊ฒ ์ค๊ณํ์ต๋๋ค. ํ ํ์์ ๋ช๋ช ์ ํ๋ก์/ํ๋ก์ ์๋ฅผ ์๊ธฐ ์ํด ์๋ ์กฐ์ธ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ๊ฐฏ์๋ฅผ ์ธ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์นด์ดํธ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค์ผ ํ๋๋ฐ, ์ด๋ ๊ฒ ๋งค๋ฒ ์กฐ์ธ/์นด์ดํธ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ ๊ฒ์ ๋ฐ์ดํฐ๊ฐ ๋ง์์ก์๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ๋ด์ ์ค ์ ์๋ค๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ๋ค์ด ํ ๋ช ์ ํ์์ด 10๋ง๋ช ์ ํ๋ก์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ํ์-ํ๋ก์ ํ ์ด๋ธ๋ก ์กฐ์ธํด์ 10๋ง๊ฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์์ผ ํ ๊น์? ์กฐ์ธ์ ํ์ง ์๋๋ค๋ฉด 10๋ง๊ฐ๋ฅผ ์ธ๋ ์นด์ดํธ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค์ผ ํ ๊น์? ๋ ๋ฐฉ๋ฒ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง์ ๋ถ๋ด์ด ๊ฐ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋ํธ ํ ์ด๋ธ์์ ํ๋ก์ ์๋ฅผ ๊ฐ์ง๊ณ ์๋๋ก ์ค๊ณํ์ต๋๋ค.
์ค์ ์ธ์คํ๊ทธ๋จ์ API๋ฅผ ๋ณด๋๋ผ๋ ๋น์ทํ๊ฒ ์ค๊ณ๋์ด ์์ต๋๋ค. ๋ฉ์, ํธ๋ ๋์ ๊ฐ์ด ์ ๋ช ์ธ๋ค์ ์ ์ฒ๋ง, ์ต ๋จ์์ ํ๋ก์๊ฐ ์๋๋ฐ ์ด๋ฅผ join์ด๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฐพ์์ค๋ ๊ฒ์ด ๋นํจ์จ์ ์ด๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค.
๋ค์ ๋ฌธ์ ๋ก ๋์์์ ์ด์๊ฐ ๋ฐ์ํ๋ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค. ํ ์ฌ์ฉ์(J)์ ํ์ฌ ํ๋ก์ ์๋ 10๋ช
์ด๊ณ ์ฌ์ฉ์ A, B๊ฐ J๋ฅผ ๋์์ ํ๋ก์ ํ๋ ์ํฉ์ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. A๊ฐ J๋ฅผ ํ๋ก์ํด์ 11๋ช
์ผ๋ก ์
๋ฐ์ดํธํ๊ณ B๊ฐ ์ฌ์ฉ์๋ฅผ ํ๋ก์ํ๋ฉด 12๋ช
์ด ๋์ด์ผ ํ ๊ฒ ๊ฐ์ง๋ง ๊ฒฐ๊ณผ๋ 11๋ช
์
๋๋ค. ์ด๋ ํธ๋์ญ์
B๊ฐ ์ฌ์ฉ์์ ํ๋ก์ ์๋ฅผ ์ฝ์์๋์ ๊ฐ(11)์ ๊ธฐ์ค์ผ๋ก ์
๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๋จ๊ณ๋ณ๋ก ์์ฝํด๋ณด๋ฉด ์๋์ ๊ฐ์๋ฐ์, A๊ฐ J๋ฅผ ํ๋ก์ฐ ํ๋๋ผ๋ B๊ฐ J์ ํ๋ก์ ์๋ฅผ ์ฝ์์๋์ ๊ฐ์ 10์ด๊ธฐ ๋๋ฌธ์ A๊ฐ ์ ๋ฐ์ดํธ(10->11)ํ ํ B๊ฐ ์ ๋ฐ์ดํธ(10->11) ํด๋ 11์ด ๋๋ ๊ฒ์ ๋๋ค.
1. A๊ฐ ์ฌ์ฉ์์ ํ๋ก์ ์(10๋ช ) READ
2. B๊ฐ ์ฌ์ฉ์์ ํ๋ก์ ์(10๋ช ) READ. -> B๊ฐ ํ๋ก์ ์๋ฅผ ์ฝ์์ ๋๋ 10๋ช
3. A๊ฐ ์ฌ์ฉ์์ ํ๋ก์ ์ ์ ๋ฐ์ดํธ (11๋ช )
4. B๊ฐ ์ฌ์ฉ์์ ํ๋ก์ ์ ์ ๋ฐ์ดํธ (11๋ช ) -> 2๋ฒ์์ 10๋ช ์ผ๋ก ์ฝ์๊ธฐ ๋๋ฌธ
2. ์ค์ ์๋น์ค ๊ด์ฐฐํ๊ธฐ
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊นํ๋ธ์ ์ธ์คํ๊ทธ๋จ์ ์ฐธ๊ณ ํ์๋๋ฐ, ์ฐ์ ๊นํ๋ธ๋ถํฐ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊นํ๋ธ์์๋ ํ๋ก์/์ธํ๋ก์ ํ ๋ ์ ๊น์ ๋๋ ์ด๊ฐ ์์ต๋๋ค. ์ฝ 0.5์ด~1์ด ์ ๋ ๋๋ ๊ฒ ๊ฐ์๋๋ฐ ์์ธํ ๋ณด๋ฉด Follow ํ๊ณ ์ ๊น์ ๋๊ธฐ์๊ฐ์ด ์์ ํ ์ฐํ ํ์์ผ๋ก ๋ฐ๋์๋ค๊ฐ Unfollow๊ฐ ๋ํ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ค์ ๋ก ๋ฝ์ ์ก๊ณ ์ ๋ฐ์ดํธ ํ๋์ง๋ ์ ์ ์์ต๋๋ค. ๋ฝ์ ์ ์ก๋๋ฐ ๋จ์ํ ๋ก๋ฉ๋ฐ๋ฅผ ์ถ๊ฐํ์ ์๋ ์๊ณ ํน์ ์ ๊ฐ ๋ชจ๋ฅด๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ์ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ฌ ์ ์์ค์์ ๊ด์ฐฐํ ํ ๋๋ฆ์ ๊ฐ์ค์ ์ธ์ฐ๊ณ ์ถ์ธก์ ํ ๊ฒ ๋ฟ์ ๋๋ค. ์ด ๋ถ๋ถ์ ๋ํด์๋ '์ ๋ ๊ฒ๋ ์๊ฐํ ์๋ ์๊ตฌ๋' ํ๊ณ ์ฝ์ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ค์ ๊ฑธ๋ฆฐ ์๊ฐ์ ๋ณด๋ ์ผ์ถ 0.5 ~ 0.6์ผ๋ก ์ฒด๊ฐ์์ผ๋ก๋ ์ฝ 1์ด ์ ๋ ๊ฑธ๋ฆฌ๋ ๊ฒ ๊ฐ์์ต๋๋ค. **๋ณธ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ฆฌ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์กด์ฌํ๊ณ , ๊ทธ ๊ณณ์ผ๋ก ์ ์กํ ๊ฒ์ผ๋ก ์ถ์ธก๋๋๋ฐ ๊ทธ๋์ ๊ฝค ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธ๊ฐ ๋๋๊ฒ ๊ฐ์์ต๋๋ค.
์ด๋ฒ์ ์ธ์คํ๊ทธ๋จ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ธ์คํ๊ทธ๋จ ๋ํ ํ๋ก์/์ธํ๋ก์ฐ๋ฅผ ํ๋ ์๊ฐ ๊ฝค ์ค๋์๊ฐ ๋๊ธฐ์๊ฐ์ด ์์ต๋๋ค. ๊นํ๋ธ ๋ณด๋ค ์กฐ๊ธ ๋ ๊ธธ์๋ ๊ฒ ๊ฐ์๋ฐ์ ๋ก๋ฉ๋ฐ๊ฐ ๋ํ๋๋ฉด์ ์ฝ 1~1.5 ์ด๋ฅผ ๊ธฐ๋ค๋ฆฐ ํ ์ธํ๋ก์ฐ๋ก ๋ฐ๋๋ ๊ฒ ๊ฐ์์ต๋๋ค. ์ธ์คํ๊ทธ๋จ์ด ๊นํ๋ธ๋ณด๋ค ์กฐ๊ธ ๋ ์ค๋ ๊ฑธ๋ฆฐ ์ด์ ๋ ์๋ง ์ฌ์ฉ์ ์ ๋๋ฌธ์ผ ๊ฒ ๊ฐ์๋ฐ์, ๊นํ๋ธ๋ ๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ํ ์๋น์ค์ง๋ง ์ธ์คํ๊ทธ๋จ์ ์ ์ธ๊ณ ์ฌ๋์ ๋์์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฆ, ์ฌ์ฉ์ ์๊ฐ ์๋์ ์ผ๋ก ์ฐจ์ด๋์ ๊ทธ๋ฐ๊ฒ ๊ฐ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋คํธ์ํฌ ํญ์ ๋ณด๋ ์ฝ 1์ด ์ ๋์ ์๊ฐ์ด ๊ฑธ๋ฆฐ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ ์ฒด๊ฐ์์ผ๋ก๋ 1์ด ~ 1.5์ด์ ๋ ๊ฑธ๋ ธ์ต๋๋ค.
์ฌ๋ด์ผ๋ก GIF๋ก ๋ง๋๋ ๊ณผ์ ์์ ๋๊น ํ์์ด ๋ฐ์ํด ์คํดํ ์ ์๋๋ฐ์, ํ์ฌ ์ปดํจํฐ ์ฌ์์ ๋งฅํ๋ก 2020 ๋ชจ๋ธ, ๋จ 64G / ํ๋ 1TB๋ก ๋์ ์ฌ์์ด ์๋๋๋ค. ์๋ณธ์ ๋ณด๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์๋ ํ์ผ์ ๋ค์ด ๋ฐ์ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊นํ๋ธ์ ์ธ์คํ๊ทธ๋จ์ ์ ํํ ๋ด๋ถ ๋ก์ง์ ์ ์ ์์ง๋ง ๋๋ต์ ์ผ๋ก ๊นํ๋ธ๋ ์ฝ 0.5 ~ 1์ด, ์ธ์คํ๊ทธ๋จ์ 1~1.5์ด ์ ๋์ ๋ก๋ฉ์ด ์์ ํ ํ๋ก์ฐ/์ธํ๋ก์ฐ๊ฐ ๋๋ ๊ฒ ๊ฐ์์ต๋๋ค. ์ด ๊ธฐ๊ฐ๋์ ํด๋น ๋ถ๋ถ์ ๋ํด ๋ฝ์ ๊ฑธ๊ณ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง๋ค๊ณ ์ถ์ธกํ๋๋ฐ, ๋ง์ฝ ์ถ์ธก์ด ๋ง๋ค๋ฉด ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง๊ธฐ ๋ณด๋ค๋ ์ ํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ด๋ ๊ฒ ๊ตฌํํ์ง ์์์๊น ํ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
ํ ์ง์ฐ์๊ฐ(latency)์ ๋ํ ์ฝ์ด๋ณด์๋๋ฐ ๋ฏธ๊ตญ ๋๋ถ-์๋ถ๋ ์ฝ 215ms๋ฐ์ ๊ฑธ๋ฆฌ์ง ์๋๋ฐ ์ ๋ ๊ฒ ์ฝ 1์ด ์ ๋์ ๋๋ ์ด๊ฐ ์๋ค๋ ๋ง์ ์๋๋ณด๋ค๋ ์ ํ์ฑ์ ๋ ์ค์์ํด์ ๋ด๋ถ์ ์ด๋ค ์์ ์ด ์๋ค๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์ ๋๋ค. **๋ฌผ๋ก ๋ฐ์ดํฐ๊ฐ ์์ฒญ๋๊ฒ ๋ง์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋๋์ด ๋์๊ณ , ๊ฐ ๋ฆฌ์ ๋ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋๊ธฐํ๋ ํ๊ฒ ์ง๋ง ํ์ฌ ์ ์์ค์ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ๋ง ์๊ฐํด๋ณด์์ต๋๋ค.
์ฌ๋ด์ผ๋ก ๊ธ๋ก๋ฒ ์๋น์ค๋ค์ด ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๋๋ฌด ๊ถ๊ธํ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํด์ธ์ ์๋ค๋ฉด ์ด๋ป๊ฒ ์ ๋ ๊ฒ ๋น ๋ฅด๊ฒ(?) ๋ฝ์ ์ก๊ณ ํธ๋ ๊ฒ์ด ๊ฐ๋ฅํ์๊น? ๋ฐ์ดํฐ๊ฐ ์์ฒ์ต, ์กฐ ๋จ์ ์ผํ ๋ฐ ์ ๋ ๊ฒ ๋น ๋ฅด๊ฒ ๊ฐ๋ฅํ ๊น? ๋ง์ฝ์ ๋ณธ์ฌ๋ ๋ ํ๋ฆฌ์นด๋ ๋ฐ์ดํฐ ์ ํฉ์ด ํ๋ฆฌ๋ฉด ์ด๋ป๊ฒ ์ด๋ฅผ ๋ง์ถ๊น? ์ ๊ฐ์ ๊ถ๊ธ์ฆ์ด ๋ค์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํด์ธ์ ์๋ค๋ฉด ์ด๋ป๊ฒ ์ ๋ ๊ฒ ๋น ๋ฅด๊ฒ ๋ฝ์ ์ก๊ณ ํธ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊น?
- ๋ฐ์ดํฐ๊ฐ ์์ฒ์ต, ์กฐ ๋จ์ ์ผํ ๋ฐ ์ ๋ ๊ฒ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ ๋ฐ์ดํธ ํ๋๊ฒ ๊ฐ๋ฅํ ๊น?
- ๋ณธ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ํ๋ฆฌ์นด ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํฉ์ฑ์ด ๋ค๋ฅด๋ฉด ์ด๋ป๊ฒ ์ฑํฌ๋ฅผ ๋ง์ถ๊น?
๊ธ๋ก๋ฒ ๊ธฐ์ ๋ค์ ๋ณธ์ฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ํ๋ฆฌ์นด๋ฅผ ์ฌ๋ฌ๊ฐ์ ๋ฆฌ์ ์ ๋๊ณ ์์ํ ๊ณ , ํ๋์ ๋ฆฌ์ ์๋ ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ํ๋ฆฌ์นด๊ฐ ์กด์ฌํ ๊ฒ ๊ฐ์๋ฐ, ์ฌํผ ์ค์ ์ด๋ฐ์ง๋ ๋ชจ๋ฅด๊ฒ ๊ณ ๋๋ค ํ๋๋ผ๋ ์ด๋ ๊ฒ ๋ณต์กํ ์ค๊ณ์ ๊ตฌํ์ ํ์ฌ ์ ์์ค์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ "์ด๋ ์ง ์์๊น?" ํ๊ณ ์ด์ฌํ ์์์ ๋๋๋ฅผ ํผ์ณ๋ดค์ต๋๋ค.
3. ํด๊ฒฐ
๋ค์ ๋ฌธ์ ๋ก ๋์์ ์ ๊ฐ ์๊ฐํ๋ ๋ฐฉ๋ฒ์ ์๋ ๋ค ๊ฐ์ง์ธ๋ฐ, ์ ๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ํ์์ ์์ธ์กฐํํ ๋๋ง๋ค count ์ฟผ๋ฆฌ๋ ์กฐ์ธ์ด ๋ฐ์ํ๋ ๊ฒ์ ์ํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ ๋๊ด์ /๋น๊ด์ ๋ฝ์ ๊ฑธ๋ ค๋ฉด ์ํฐํฐ์ @Version ์ปฌ๋ผ์ด ๋ค์ด๊ฐ๋๋ฐ ์ํฐํฐ๋ฅผ ๊ฐ๋ฅํ ์์ํ๊ฒ ์ ์ง์ํค๊ณ ์ถ์์ผ๋ฉฐ, RDB์ ๋ฝ์ ๊ฑฐ๋ ๊ฒ์ ์กฐํ ๋ณ๋ชฉ์ ์ด ์๊ธธ๊ฒ ๊ฐ์ ๊บผ๋ ค์ก์ต๋๋ค.
1. ํ๋ก์ ์๋ฅผ ์ ๋ฐ์ดํธํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ ๋์ค๋ก ๋ฝ์ ์ก๋๋ค.
2. ํ๋ก์ ์๋ฅผ ์กฐ์ธ์ผ๋ก ์ฐพ์ ํ ๊ฐ์๋ฅผ ์ผ๋ค.
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ count์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค ๊ฐ์๋ฅผ ์ฐพ๋๋ค.
4. ๋๊ด์ /๋น๊ด์ ๋ฝ์ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ ๋ ๋์ค๋ฅผ ํตํด ํ๋ก์ ์ ๋ฐ์ดํธ ์ ๋ฝ์ ์ก์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ์, RedissonClient๋ฅผ ์ฌ์ฉํ์ต๋๋ค. RedissonClient๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Redisson์ ์คํ ๋ฝ์ด ์๋ pubsub ๋ฐฉ์์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ ๋์ค์ ๋ถ๋ด์ ๋ ์ฃผ๋๋ฐ, ์ด๋ ๋ฝ์ด ํด์ ๋ ๋๋ง๋ค subscriber์๊ฒ ์๋ฆผ์ ์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์คํ๋ฝ๊ณผ ๋ฌ๋ฆฌ ์ผ์ผ์ด ๋ ๋์ค์ ์์ฒญ์ ๋ณด๋ด ๋ฝ์ ํ๋๊ฐ๋ฅ์ฌ๋ถ๋ฅผ ์ฒดํฌํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ๋น๊ต์ ์ ์ต๋๋ค.
์ฆ, ์คํ๋ฝ์ฒ๋ผ while๋ฌธ์ ๋๋ฉด์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฉ์์ง๊ฐ ์ค๋ ์๊ฐ ์๋ฆผ์ ๋ฐ๊ณ ๋ค์ ์์ ์ ์งํํ๊ธฐ ๋๋ฌธ์ ๋ ๋์ค์ ๋ถํ๋ฅผ ๋ ์ฃผ๋ ๊ฒ์ ๋๋ค. RedissonClient๋ Lua ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋ฝ์ ๊ตฌํํ๊ณ ์๋๋ฐ์, ์คํฌ๋ฆฝํธ๊น์ง ๊ฐ๊ธฐ ์ํด์๋ ์๋์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ์ต์ข ์ ๊ธ์ ์์์ฑ์ ๋ณด์ฅํฉ๋๋ค.
Lua ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋จํ ์ดํด๋ณด๋ฉด, ์ฒ์ ๋ค์ด์์ if๋ฌธ ๋ด๋ถ์์ ๋ฝ์ด ์๋์ง(KEYS[1])์ ๋ํด ๋จผ์ ์ดํด๋ณธ ํ ๋ฝ์ด ์๋ค๋ฉด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๋ฉด ๋ฝ์ ๊ฒ๋๋ค. ๋ฝ์ ๊ฑธ๋ hincrby๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด๋ ํด์์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ฌ์ง์ ์ ๊ธ์ ์ํ ๊ฐ์ ์ํ ๊ฒ์ ๋๋ค. hincrby ๋ช ๋ น์ด ํธ์ถ ํ ๋ฝ์ด ํ์ฑ๋ฉ๋๋ค.
KEYS[1] | ๋ฝ์ ์ด๋ฆ |
ARGV[1] | ๋ฝ์ ์ก๋ ์๊ฐ |
ARGV[2] | ๋ฝ์ ๊ณ ์ ID. ํ๋์ Redisson ํด๋ผ์ด์ธํธ ํ๋์ UUID,UUID ๊ณ ์ ํ ํด๋ผ์ด์ธํธ๋ฅผ ๋ํ๋ ๋๋ค. ๋ฐ๋ผ์ UUID์ ์ค๋ ๋ id์ ์ํด ์ ๊ธ์ ๊ณ ์ ์๋ณ์ ๊ตฌ์ฑํ๋ฉฐ ํด๋ผ์ด์ธํธ์ ์ค๋ ๋๋ฅผ ์ ๊ธ์ผ๋ก ์ดํดํ๋ ๊ฒ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. |
์ด๋ ์๋์ผ๋ก ์ ๊ธ์ ๋ง๋ฃ ์๊ฐ์ ์ค์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ์ ๊ธ ์๊ฐ์ 30์ด์ ๋๋ค. ๋ง๋ฃ ์๊ฐ์ ์ค์ ํ์ง ์์ผ๋ฉด ๋ถํ์ํ๊ฒ ๋ฝ์ ์ก๊ณ ์๋๋ฐ, ์๋ฅผ๋ค์ด ์์ ์๊ฐ์ 1์ด์ธ๋ฐ ๋ฝ์ ํด์ ํ์ง ์์ผ๋ฉด ๋ค์ ์๋ ์ค๋ ๋๋ ๋ถํ์ํ๊ฒ 30์ด๊ฐ ๋๊ธฐํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ์๊ฐ์ ๋ฐ๋์ ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฌํผ ์ดํ unlock unlockAsync๋ฅผ ํธ์ถํ๊ณ ์ค๋ ๋ ID๋ฅผ ์ ๋ฌํ ํ ๋ฝ์ ํด์ ํฉ๋๋ค.
RedissonClient๋ ์์ ๊ฐ์ด RDB๊ฐ ์๋ ๋งค๊ฐ๋ณ์์ ๋ ๋์ค๋ฅผ ์ด์ฉํด ๋ฝ์ ๊ฑธ๊ธฐ ๋๋ฌธ์ RDB์ ๋ถ๋ด์ด ๊ฐ์ง ์์ ์ด๋ฅผ ์ฑํํ๊ฒ ๋์์ต๋๋ค. ๋ฌผ๋ก ์ง๊ธ์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ ์๋๋ ์ด ๋ฐฉ์์ด ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ง๋ง ๋ง์ฝ ์ฌ์ฉ์๊ฐ ๋ง์์ง๋ค๋ฉด ์ด ๋ฐฉ์์ด ์ ์ฉํ ์ง์ ๋ํด์๋ ์์งํ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด ๋ถ๋ถ์ ๋ํด์๋ ์กฐ๊ธ ๋ ๊ณ ๋ คํด๋ด์ผํ ๊ฒ๊ฐ์ต๋๋ค.
4. Conclusion
์๊ฐ์ง๋ ๋ชปํ๋ ๋ถ๋ถ์์ ๋์์ฑ ๋ฌธ์ ๊ฐ ํฐ์ ธ์ ๋นํฉํ๋๋ฐ์, ์กฐํ์ ํธ์์ฑ์ ์ํด ํ์ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์์ต๋๋ค. ๋ฝ์ํตํด ์ด ๋ฌธ์ ๋ฅผ ํ์๋ ์ด์ ๋ ์กฐํ ํธ์์ฑ์ด ์ฃผ๋ ์ด์ ์ ํฌ๊ธฐํ ์ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ ํ์์ ์กฐํํ๋ ํ์๊ฐ ๊ทธ๋ ๊ฒ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์์ ๋ฝ์ ์ก์๋ ํฐ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จํ๋๋ฐ์, ๋ง์ฝ ํ์์ด ์์ฃผ ์กฐํ/์ ๋ฐ์ดํธ๋๋ ์ํฉ์ด์๋ค๋ฉด ๋ฝ๋ณด๋ค๋ ์ฐจ๋ผ๋ฆฌ count ์ฟผ๋ฆฌ๋ฅผ ๋งค๋ฒ ๋ ๋ฆฌ์ง ์์์๊น ํ๋ ์๊ฐ๋ ๋ค์์ต๋๋ค. ๋ง์ด ์กฐ๊ธ ๊ธธ์ด์ก๋๋ฐ ์กฐํ์ ํธ์์ฑ์ ์ป๊ธฐ ์ํด ์ ๋ฐ์ดํธ๊ฐ ๋น๋ฒํ์ง ์์ ํ๋ก์/ํ๋ก์ฐ ๊ธฐ๋ฅ์ ๋ฝ์ ํตํด ํด๊ฒฐํ๋ ์ํฉ์ด์์ต๋๋ค.
'๐ฅDEV > Java || Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๋ฉ์ธ ๋ก์ง์ด ํญ์ ์ข์๊น? (0) | 2022.09.19 |
---|---|
[์ดํํฐ๋ธ์๋ฐ] Item 16. (0) | 2022.08.21 |
ํ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ก ํ์ ์ํฐํฐ ๊ด๋ฆฌํ๊ธฐ (0) | 2022.07.31 |
๊ฐ์ ๊ฒ์ฆํ๋ ์์น๋ ์ด๋๊ฐ ์ข์๊น? (0) | 2022.07.30 |
@Component์ @Configuration์ ์ฐจ์ด (0) | 2022.07.24 |
๋๊ธ