โข
๋ด์ค ํผ๋
โฆ
์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋๋ ์คํ ๋ฆฌ๋ค
โฆ
์ฌ์ฉ์ ์ํ ์ ๋ณด, ์ฌ์ง, ๋น๋์ค, ๋งํฌ, ์ฑ ํ๋, ํ๋ก์, ํ์ด์ง, ์ข์์๋ฅผ ํฌํจ
๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์
โข
์ค์ ๊ธฐ๋ฅ
โฆ
์๋ก์ด ์คํ ๋ฆฌ๋ฅผ ์ฌ๋ฆฌ๊ณ , ๋ค๋ฅธ ์ฌ๋์ ์คํ ๋ฆฌ๋ฅผ ๋ณธ๋ค
โข
์คํ ๋ฆฌ ์ ๋ ฌ
โฆ
์ต์ ์
โข
์ฌ์ฉ์๊ฐ ๊ฐ์ง ์ ์๋ ์น๊ตฌ๋ ์ต๋ 5000
โข
ํธ๋ํฝ ๊ท๋ชจ๋ ๋งค์ผ ์ฒ๋ง๋ช
(10M DAU)
โข
์คํ ๋ฆฌ์๋ ์ด๋ฏธ์ง๋ ๋น๋์ค ๋ฑ์ ๋ฏธ๋์ด ํ์ผ ํฌํจ ๊ฐ๋ฅ
๊ฐ๋ต์ ์ค๊ณ์
ํผ๋ ๋ฐํ
โข
์ฌ์ฉ์๊ฐ ์คํ ๋ฆฌ๋ฅผ ํฌ์คํ
ํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ์บ์์ DB์ ๊ธฐ๋ก
โข
์ ํฌ์คํ
์ ์น๊ตฌ์ ๋ด์ค ํผ๋์ ์ ์ก
โข
POST /v1/feed
โข
์ธ์: body, Auth ํค๋
โข
ํฌ์คํ
์ ์ฅ
โฆ
์ ํฌ์คํ
์ DB ์ ์บ์์ ์ ์ฅํ๋ค.
โข
ํฌ์คํ
์ ์ก
โฆ
์ ํฌ์คํ
์ ์น๊ตฌ์ ๋ด์ค ํผ๋์ ํธ์ํ๋ค. ์ด ๋ฐ์ดํฐ๋ ์บ์์ ๋ณด๊ดํ์ฌ ๋น ๋ฅด๊ฒ ์ฝ์ ์ ์๋๋ก
โข
์๋ฆผ
โฆ
์น๊ตฌ๋ค์๊ฒ ์ ํฌ์คํ
์ ์๋ฆฐ๋ค.
ํผ๋ ์์ฑ
โข
๋ด์ค ํผ๋๋ ๋ชจ๋ ์น๊ตฌ์ ํฌ์คํ
์ ์ต์ ์์ผ๋ก ๋ชจ์์ ๋ง๋ฆ
โข
GET /v1/feed
โข
์ธ์: Auth ํค๋
โข
๋ด์ค ํผ๋ ์๋น์ค: ์บ์์์ ๋ด์ค ํผ๋๋ฅผ ๊ฐ์ ธ์จ๋ค.
โข
๋ด์ค ํผ๋ ์บ์: ๋ด์ค ํผ๋๋ฅผ ๋ ๋๋งํ ๋ ํ์ํ ํผ๋ ID ๋ฅผ ๋ณด๊ด
ํผ๋ ๋ฐํ ์์ธ ์ค๊ณ
โข
์น ์๋ฒ
โฆ
์ธ์ฆ๊ณผ ํฌ์คํ
์ ์ ํ
โข
ํฌ์คํ
์ ์ก(fanout) ์๋น์ค
โฆ
์ด๋ค ์ฌ์ฉ์์ ์ ํฌ์คํ
์ ๊ทธ ์ฌ์ฉ์์ ์น๊ตฌ ๋ชจ๋์๊ฒ ์ ๋ฌํ๋ ๊ณผ์
์ฐ๊ธฐ ์์ ํฌ์์(push ๋ชจ๋ธ)
โข
์๋ก์ด ํฌ์คํ
์ ๊ธฐ๋กํ๋ ์์ ์ ๋ด์ค ํผ๋ ๊ฐฑ์ , ์ฆ ํฌ์คํ
์ด ์๋ฃ๋๋ฉด ํด๋น ์ฌ์ฉ์์ ์บ์์ ํด๋น ํฌ์คํ
๊ธฐ๋ก
โข
์ฅ์
โฆ
๋ด์ค ํผ๋๊ฐ ์ค์๊ฐ์ผ๋ก ๊ฐฑ์
โฆ
์ ํฌ์คํ
์ด ๊ธฐ๋ก๋๋ ์๊ฐ ๋ด์ค ํผ๋๊ฐ ์ด๋ฏธ ๊ฐฑ์ ๋๋ฏ๋ก ๋ด์ค ํผ๋๋ฅผ ์ฝ๋ ๋ฐ ๋๋ ์๊ฐ์ด ์งง์์ง๋ค.
โข
๋จ์
โฆ
์น๊ตฌ๊ฐ ๋ง์ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ง์ ์๊ฐ์ด ์์๋ ์ ์๋ hotkey ๋ฌธ์ (์น๊ตฌ ๋ชฉ๋ก ์กฐํ, ์กฐํ๋ ์น๊ตฌ ๋ชจ๋ ๊ฐฑ์ )
โฆ
์๋น์ค๋ฅผ ์์ฃผ ์ด์ฉํ์ง ์๋ ์ฌ์ฉ์์ ํผ๋๊น์ง ๊ฐฑ์
์ฝ๊ธฐ ์์ ํฌ์์(pull ๋ชจ๋ธ)
โข
ํผ๋๋ฅผ ์ฝ๋ ์์ ์ ๋ด์ค ํผ๋ ๊ฐฑ์
โข
์ฅ์
โฆ
ํ์ฑํ๋ ์ฌ์ฉ์์๊ฒ๋ง ์์ ์๋ชจ๊ฐ ๊ฐ๋ฅ
โฆ
hotkey ๋ฌธ์ ๋ฐฉ์ง
โข
๋จ์
โฆ
๋ด์ค ํผ๋๋ฅผ ์ฝ์ ๋ ๋ง์ ์๊ฐ์ด ์์๋จ
์ค๊ณ ๊ฒฐ๋ก
โข
์กฐํ๊ฐ ๋ง์ด ๋ฐ์ํ๋ฏ๋ก ๋๋ถ๋ถ์ ์ฌ์ฉ์์ ๋ํด์๋ ํธ์ ๋ชจ๋ธ ์ฌ์ฉ
โข
์น๊ตฌ๋ ํ๋ก์๊ฐ ์์ฃผ ๋ง์ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ํ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์์คํ
๊ณผ๋ถํ ๋ฐฉ์ง
โข
์์ ํด์๋ฅผ ํตํด ์์ฒญ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ์ฌ ํซํค ๋ฌธ์ ๋ฅผ ์ค์ธ๋ค.
1.
๊ทธ๋ํ DB ์์ ์น๊ตฌ ID ๋ชฉ๋ก ์กฐํ, ๊ทธ๋ํ DB ๋ ์น๊ตฌ ๊ด๊ณ๋ ์น๊ตฌ ์ถ์ฒ ๊ด๋ฆฌ ์ ํฉ
2.
์น๊ตฌ ID ๋ชฉ๋ก์ผ๋ก ์ฌ์ฉ์ ์ ๋ณด ์บ์์์ ์น๊ตฌ ์ ๋ณด ์กฐํ
a.
์น๊ตฌ ์ ๋ณด์์ mute ํ๋์ง ํ์ธ
b.
์ผ๋ถ ์ฌ์ฉ์์๊ฒ๋ง ๋ณด์ด๊ธฐ๋ก ์ค์ ํ๋์ง ํ์ธ
3.
์น๊ตฌ ๋ชฉ๋ก๊ณผ ์ ์คํ ๋ฆฌ ํฌ์คํ
ID ๋ฅผ ๋ฉ์์ง ํ์ ๋ฃ๋๋ค.
4.
์์
์๋ฒ๊ฐ ๋ฉ์์ง ํ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด ๋ด์ค ํผ๋ ์บ์์ ๋ฃ๋๋ค. ๋ด์ค ํผ๋ ์บ์๋ <ํฌ์คํ
ID, ์น๊ตฌ ID> ํํ์ ๋งต
ํผ๋ ์ฝ๊ธฐ ์์ธ ์ค๊ณ
โข
์ด๋ฏธ์ง๋ ๋น๋์ค์ ๊ฐ์ ๋ฏธ๋์ด ํ์ผ์ CDN ์ ์ ์ฅ
1.
๋ด์ค ํผ๋ ์บ์์์ ํฌ์คํ
ID ๋ชฉ๋ก ์กฐํ
2.
๋ด์ค ํผ๋์ ํ์ํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฌ์ฉ์ ์บ์์ ํฌ์คํ
์บ์์์ ๊ฐ์ ธ์ ๋ด์ค ํผ๋ ๋ชฉ๋ก ๋ฐํ
์บ์ ๊ตฌ์กฐ
โข
๋ด์ค ํผ๋ ์์คํ
ํต์ฌ ์ปดํฌ๋ํธ
โข
์บ์๋ฅผ ๋ค์ฏ ๊ณ์ธต์ผ๋ก ๋๋
โข
๋ด์ค ํผ๋: ๋ด์ค ํผ๋์ ID ๋ณด๊ด
โข
์ปจํ
์ธ : ํฌ์คํ
๋ฐ์ดํฐ ๋ณด๊ด, ์ธ๊ธฐ ์ปจํ
์ธ ๋ ๋ฐ๋ก ๋ณด๊ด
โข
์์
๊ทธ๋ํ: ์ฌ์ฉ์ ๊ฐ ๊ด๊ณ ์ ๋ณด ๋ณด๊ด
โข
ํ๋: ํฌ์คํ
์ ๋ํ ์ฌ์ฉ์ ํ์ ์ ๋ณด ๋ณด๊ด(์ข์์, ๋ต๊ธ ๋ฑ)
โข
ํ์: ์ข์์ ์, ํ๋ก์ ํ๋ก์ ์ ๋ฑ ์ ๋ณด ๋ณด๊ด
๋ง๋ฌด๋ฆฌ
์ค๊ณ๋ฅผ ์งํํ๊ณ ๊ธฐ์ ์ ์ ํํ ๋๋ ๊ทธ ๋ฐฐ๊ฒฝ์ ์ด๋ค ํธ๋ ์ด๋ ์คํ๊ฐ ์๋์ง ์ ์ดํดํ๊ณ ์ค๋ช
ํ ์ ์์ด์ผ ํ๋ค.
๋
ผ์ํด ๋ณด๋ฉด ์ข์ ๊ฒ๋ค
โข
์๋ฒ ๊ท๋ชจ ํ์ฅ, SQL vs NoSQL, DB ๋ค์คํ, ์ผ๊ด์ฑ ๋ชจ๋ธ, DB ์ค๋ฉ
โข
๊ฐ๋ฅํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์บ์ํ ๋ฐฉ๋ฒ
โข
๋ฉ์์ง ํ๋ก ์ปดํฌ๋ํธ ์ฌ์ด ๊ฒฐํฉ๋ ๋ฎ์ถ๊ธฐ