Design Nearby Friends Service
์๋น์ค ์ด์ฉ์ ๊ฐ์ด๋ฐ ๋ณธ์ธ ์์น ์ ๋ณด ์ ๊ทผ ๊ถํ์ ํ๋ฝํ ์ฌ์ฉ์์ ํํด ์๋ก ๊ทผ์ ํ ์์น์ ์๋ ์น๊ตฌ๋ฅผ ์ฐพ์์ฃผ๋ ์๋น์ค
๊ทผ์ ์ฑ ์๋น์ค์ ๋น์ทํ๋ค๊ณ ์๊ฐํ ์๋ ์์ง๋ง, ํต์ฌ ๋๋ฉ์ธ์ธ "์์น"๊ฐ ์ ์ ์ธ ๋ ธ๋์์ ๋์ ์ธ ์ฌ์ฉ์๋ก ๋ณ๊ฒฝ๋์๋ค๋ ์ ์์ ํฐ ์ฐจ์ด๊ฐ ์๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ฌ์ฉ์์ ์์น ์ ๋ณด๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ทผ์ ํ ์น๊ตฌ๋ฅผ ์ฐพ์์ฃผ๋ ์๋น์ค๊ฐ ํ์ํ๋ค.
์๊ตฌ ์ฌํญ
์ฃผ๋ณ ์น๊ตฌ ์กฐํ ์, ๊ฑฐ๋ฆฌ / ๊ฐฑ์ ๋ ์๊ฐ ์ ๋ณด๋ฅผ ํจ๊ป ์ ๊ณต
5km ์ด๋ด ์น๊ตฌ ๋ชฉ๋ก ์กฐํ(์์น๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ)
์น๊ตฌ ๋ชฉ๋ก์ 30์ด๋ง๋ค ํ ๋ฒ์ฉ ๊ฐฑ์
์ฌ์ฉ์ ์ด๋ ์ด๋ ฅ ๋ณด๊ด
๋ ์ฌ์ฉ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ ์ง์ ๊ฑฐ๋ฆฌ๋ก ๊ณ์ฐ
10๋ถ ์ด์ ๋นํ์ฑ ์ ๋ฐ๊ฒฝ ์กฐํ ์ ์ ์ธ
ํ๊ท ์ ์ผ๋ก ํ ์ฌ์ฉ์๋ 400๋ช ์ ์น๊ตฌ๋ฅผ ๊ฐ์ง
๋ํ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ์๋์ ์ฌํญ๋ค์ ์ถ๊ฐ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ๋ค.
๋ฎ์ ์ง์ฐ์๊ฐ: ์ฃผ๋ณ ์น๊ตฌ๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์์ด์ผ ํจ
์์ ์ฑ: ์ ๋ฐ์ ์ผ๋ก ์์ ์ ์ผ๋ก ์ ๊ณตํ๋, ์ฝ๊ฐ์ ๋ฐ์ดํฐ ์ ์ค์ ํ์ฉ
๊ฒฐ๊ณผ์ ์ผ๊ด์ฑ: ์์น ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๊ฐํ ์ผ๊ด์ฑ์ ์๊ตฌํ์ง ์์
๊ฐ๋ต์ ๊ท๋ชจ ์ถ์
1์ต๋ช ์ด์์ ํ์ฑ ์ฌ์ฉ์, ๋์ ์ ์ ์ฌ์ฉ์ 10%, ํ๊ท ์ ์ผ๋ก 400๋ช ์ ์น๊ตฌ๋ฅผ ๊ฐ์ง๋ค๊ณ ๊ฐ์ ํ์ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท๋ชจ๋ฅผ ๊ฐ์ ํ ์ ์๋ค.
๋์ ์ ์ ์ฌ์ฉ์: 1์ต * 10% = 1์ฒ๋ง๋ช
QPS: 1์ฒ๋ง / 30์ด = 333,333QPS
๊ฐ๋ต์ ์ค๊ณ
๋จ๋ง๊ธฐ๋ผ๋ฆฌ P2P ํต์ ์ ์๊ฐํด๋ณผ ์๋ ์์ง๋ง, ๊ฐ ๋ชจ๋ฐ์ผ ๋จ๋ง์ ์ฐ๊ฒฐ ์ํ๊ฐ ์ข์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ , ์ด๋ก ์ธํด ์๋ฒ๋ฅผ ํตํ ์ค๊ณ๊ฐ ํ์ํ๋ค. ๋ฐฑ์๋ ์๋ฒ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ์๋์ ์ปดํฌ๋ํธ๋ค๋ก ๊ตฌ์ฑํด๋ณผ ์ ์๋ค.
๋ก๋๋ฐธ๋ฐ์: ์ ์ ํธ๋ํฝ์ ์๋์ผ๋ก ์๋ง์ ์๋ฒ๋ก ๋ถ๋ฐฐ
API ์๋ฒ: ํต์์ ์ธ ์์ฒญ/์๋ต ํธ๋ํฝ ์ฒ๋ฆฌ
์น์์ผ ์๋ฒ: ์น๊ตฌ ์์น ์ ๋ณด ๋ณ๊ฒฝ์ ์ค์๊ฐ ์ฒ๋ฆฌํ๋ ์ ์ํ ์๋ฒ ํด๋ฌ์คํฐ
๋ ๋์ค ์์น ์ ๋ณด ์บ์: ํ์ฑ ์ํ ์ฌ์ฉ์์ ์ต๊ทผ ์์น ์ ๋ณด ์บ์ฑ
์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค: ์ฌ์ฉ์ ๋ฐ ์น๊ตฌ ๊ด๊ณ ์ ๋ณด ์ ์ฅ
์์น ์ด๋ ์ด๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค: ์ฌ์ฉ์์ ์์น ๋ณ๋ ์ด๋ ฅ ์ ์ฅ
๋ ๋์ค Pub/Sub ์๋ฒ: ์์น ์ ๋ณด๊ฐ ๊ฐฑ์ (Pub)๋๋ฉด, ํด๋น ์ฌ์ฉ์์ ์น๊ตฌ ์ฑ๋์ ๋ฉ์์ง ์ ๋ฌ(Sub)
๊ฐ ์ปดํฌ๋ํธ๋ค๋ก ์ฃผ๊ธฐ์ ์์น ๊ฐฑ์ ์ ์ฒ๋ฆฌํ๋ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ชจ๋ฐ์ผ ํด๋ผ์ด์ธํธ๊ฐ ์์น๊ฐ ๋ณ๊ฒฝ๋ ์ฌ์ค์ ๋ก๋๋ฐธ๋ฐ์์ ์ ์ก
๋ก๋๋ฐธ๋ฐ์๋ ์์น ๋ณ๊ฒฝ ๋ด์ญ์ ์น์์ผ ์๋ฒ๋ก ์ ๋ฌ(3~5๋ฒ ๊ณผ์ ๋ณ๋ ฌ๋ก ์ํ)
์น์์ผ ์๋ฒ๋ ํด๋น ์ด๋ฒคํธ๋ฅผ ์์น ์ด๋ ์ด๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ
์น์์ผ ์๋ฒ๋ ์ ์์น๋ฅผ ์์น ์ ๋ณด ์บ์์ ๋ณด๊ด(TTL๋ ๊ฐฑ์ ) + ์ฌ์ฉ์์ ์์น ์ ๋ณด ์ ์ฅ
์น์์ผ ์๋ฒ๋ ๋ ๋์ค Pub/Sub ์๋ฒ์ ํด๋น ์ฌ์ฉ์ ์ฑ๋์ ์ ์์น๋ฅผ ๋ฐํ
๋ ๋์ค Pub/Sub ์ฑ๋์ ๋ฐํ๋ ์๋ก์ด ์์น ๋ณ๊ฒฝ ์ด๋ฒคํธ๋ ๋ชจ๋ ๊ตฌ๋ ์(์ฌ์ฉ์์ ํ์ฑ ์น๊ตฌ๋ค)์๊ฒ ๋ธ๋ก๋์บ์คํธ
๋ฉ์์ง๋ฅผ ๋ฐ์ ์น์์ผ ์๋ฒ๋ ์ ์์น๋ฅผ ๋ณด๋ธ ์ฌ์ฉ์์ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ฌ์ฉ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์๋ก ๊ณ์ฐ
๋ฐ์ดํฐ ๋ชจ๋ธ
๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ ์ค๊ณ์ ๊ทธ ๋ชฉ์ ์ ๋ง๊ฒ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ Redis์ ๊ฐ์ ์บ์ ์์คํ ์ ์ ์ฅํ ์ ์๋ค.
์ฌ์ฉ์ ์ ๋ณด
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ
๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผํ๊ธฐ ๋๋ฌธ์ ์ค๋ฉ ํ์
ํ์ฌ ์์น ์ ๋ณด
Redis ์บ์์ ์ ์ฅ
์ฌ์ฉ์ id - {์๋, ๊ฒฝ๋, ์๊ฐ} ์์ผ๋ก ์ ์ฅ
Redis์ TTL ํ์ฉ(ํ์ฑ ์ํ๊ฐ ์๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ์ญ์ )
์ฌ์ฉ์๊ฐ ๋์ด๋๋ ๊ฒฝ์ฐ ์ค๋ฉ์ ํตํด ํ์ฅ ๊ฐ๋ฅ
์์น ์ด๋ ์ด๋ ฅ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ
๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผํ๊ธฐ ๋๋ฌธ์ ์ค๋ฉ ํ์
์์ธ ์ค๊ณ
ํด๋ผ์ด์ธํธ ์ด๊ธฐํ
๋ชจ๋ฐ์ผ ํด๋ผ์ด์ธํธ๊ฐ ๊ธฐ๋๋๋ฉด ์น์์ผ ํด๋ฌ์คํฐ ๋ด ์๋ฒ ์ค ํ๋์ ์ง์์ฑ ์น์์ผ ์ฐ๊ฒฐ์ ๋งบ๊ฒ๋๋ค. ์น์์ผ ์ฐ๊ฒฐ์ด ์ด๊ธฐํ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ํด๋น ๋จ๋ง์ ์์น ์ ๋ณด๋ฅผ ์ ์กํ๊ฒ๋๊ณ , ๊ทธ ์ ๋ณด๋ฅผ ๋ฐ์ ์น์์ผ ์ฐ๊ฒฐ ํธ๋ค๋ฌ๋ ๋ค์ ์์ ์ ์ํํ๋ค.
์์น ์ ๋ณด ์บ์์ ๋ณด๊ด๋ ํด๋น ์ฌ์ฉ์์ ์์น ๊ฐฑ์
ํด๋น ์์น ์ ๋ณด๋ ๊ณ์ฐ ๊ณผ์ ์ ์ด์ฉ๋๋ฏ๋ก, ์ฐ๊ฒฐ ํธ๋ค๋ฌ ๋ด ๋ณ์์ ์ ์ฅ
์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ํด๋น ์ฌ์ฉ์์ ๋ชจ๋ ์น๊ตฌ ์ ๋ณด ์กฐํ
์์น ์ ๋ณด ์บ์์ ์ ์ฅ๋ ๋ชจ๋ ์น๊ตฌ์ ์์น๋ฅผ ํ ๋ฒ์ ์กฐํ(๋ง๋ฃ๋ ๋ฐ์ดํฐ๋ TTL์ ์ํด ์๋ ์ญ์ )
๋ชจ๋ ์น๊ตฌ์ ์์น ์ ๋ณด๋ฅผ ๋ฐ์ ํ, ํด๋น ์ฌ์ฉ์์ ์น๊ตฌ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ฐํ
๋ํ ์น์์ผ ์๋ฒ๋ ๊ฐ ์น๊ตฌ์ ๋ ๋์ค Pub/Sub ์ฑ๋์ ๊ตฌ๋ ํ์ฌ, ์ฌ์ฉ์์ ํ์ฌ ์์น๋ฅผ ์ ์ฉ ์ฑ๋์ ํตํด ๋ชจ๋ ์น๊ตฌ์๊ฒ ์ ๋ฌ
๋ ๋์ค Pub/Sub ์๋ฒ
์น๊ตฌ์ ์์น ์ ๋ณด๊ฐ ๊ฐฑ์ ๋๋ฉด ๋ ๋์ค Pub/Sub์ ํตํด ํด๋น ์ฌ์ฉ์์ ์น๊ตฌ ์ฑ๋์ ๋ฉ์์ง๋ฅผ ๋ฐํํ๊ฒ ๋๋ค.
์ฃผ๋ณ ์น๊ตฌ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ฑ๋ ํ๋์ฉ ๋ถ์ฌ
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์๊ฐ ์๋น์ค ์์(์ด๊ธฐํ) ์์ ์น๊ตฌ ์ํ์ ๊ด๊ณ ์์ด ๋ชจ๋ ์น๊ตฌ์ ์ฑ๋๊ณผ ๊ตฌ๋ ๊ด๊ณ ์ค์
ํ์ฑํ ์ฌ๋ถ์ ๋ฐ๋ผ ๊ตฌ๋ ์ถ๊ฐ ๋ฐ ์ค๋จ์ ์์ ์ ํ ํ์๊ฐ ์์
๋ชจ๋ ์น๊ตฌ์ ๋ํด ์ฑ๋์ ์์ฑํ๊ณ ๋ฉ์์ง๋ฅผ ์ ์กํ๋๋ผ๋, ์๋์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ด์ด ์ ์(์ํคํ ์ฒ ๋จ์ํ)
ํ์ง๋ง Pub/Sub ๊ตฌ๋ ์์๊ฒ ์ ์กํด์ผํ๋ ๋ฉ์์ง๊ฐ ๋ง์์ง ๊ฒฝ์ฐ CPU ๋ถํ๊ฐ ์ฆ๊ฐํ ์ ์์
๋ฉ๋ชจ๋ฆฌ๋ ํฐ ๋ฌธ์ ๊ฐ ์์ง๋ง, CPU ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์ ํด์๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ ์๋ฅผ ์ฌ๋ฌ ์๋ฒ๋ก ๋ถ์ฐ์ํค๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?