๋ด์ค ํผ๋
- ํํ์ด์ง ์ค์์ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ์คํ ๋ฆฌ๋ค
- ์ฌ์ฉ์ ์ํ ์ ๋ณด ์ ๋ฐ์ดํธ, ์ฌ์ง, ๋น๋์ค, ๋งํฌ, ์ฑ ํ๋ ๋ฑ๋ฑ
1๋จ๊ณ : ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์
- ๋ชจ๋ฐ์ผ ์ฑ์ ์ํ ์์คํ
์ธ์ง, ์น์ ์ํ ์์คํ
์ธ์ง
- ๋ ๋ค ์ง์ํด์ผ ํจ
- ์ค์ํ ๊ธฐ๋ฅ์ผ๋ก ์ด๋ค ๊ฒ์ด ์๋์ง
- ์ฌ์ฉ์๋ ๋ด์ค ํผ๋์ ์๋ก์ด ์คํ ๋ฆฌ๋ฅผ ์ฌ๋ฆด ์ ์์ด์ผ ํจ
- ์น๊ตฌ๋ค์ด ์ฌ๋ฆฌ๋ ์คํ ๋ฆฌ๋ฅผ ๋ณผ ์๋ ์์ด์ผ ํจ
- ๋ด์ค ํผ๋์๋ ์ด๋ค ์์๋ก ์คํ ๋ฆฌ๊ฐ ํ์๋์ด์ผ ํ๋์ง?
- ๋จ์ํ ์๊ฐ ํ๋ฆ ์ญ์์ผ๋ก ํ์๋๋ค๊ณ ๊ฐ์
- ํ ๋ช
์ ์ฌ์ฉ์๋ ์ต๋ ๋ช ๋ช
์ ์น๊ตฌ๋ฅผ ๊ฐ์ง ์ ์๋์ง?
- ์์ : 5000๋ช
- ํธ๋ํฝ ๊ท๋ชจ?
- ๋งค์ผ ์ฒ๋ง ๋ช ์ด ๋ฐฉ๋ฌธํ๋ค๊ณ ๊ฐ์
- ํผ๋์ ์ด๋ฏธ์ง๋ ๋น๋์ค ์คํ ๋ฆฌ๋ ์ฌ๋ผ์ฌ ์ ์๋์ง?
- ์คํ ๋ฆฌ์๋ ์ด๋ฏธ์ง๋ ๋น๋์ค ๋ฑ์ ๋ฏธ๋์ด ํ์ผ ํฌํจ ๊ฐ๋ฅ
2๋จ๊ณ : ๊ฐ๋ต์ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐ
- ์ค๊ณ์์ ํผ๋ ๋ฐํ๊ณผ ๋ด์ค ํผ๋ ์์ฑ ๋ ๊ฐ์ง ๋ถ๋ถ
- ํผ๋ ๋ฐํ : ์ฌ์ฉ์๊ฐ ์คํ ๋ฆฌ๋ฅผ ํฌ์คํ ํ๋ฉด ์บ์์ DB์ ๊ธฐ๋ก, ์น๊ตฌ์ ๋ด์ค ํผ๋์๋ ์ ์ก
- ๋ด์ค ํผ๋ ์์ฑ : ๋ด์ค ํผ๋๋ ๋ชจ๋ ์น๊ตฌ์ ํฌ์คํ ์ ์๊ฐ ํ๋ฆ ์ญ์์ผ๋ก ๋ชจ์์ ๋ง๋ ๋ค๊ณ ๊ฐ์
๋ด์ค ํผ๋ API
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๋จ
- HTTP ํ๋กํ ์ฝ ๊ธฐ๋ฐ
- ์ํ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ, ๋ด์ค ํผ๋๋ฅผ ๊ฐ์ ธ์ค๊ธฐ, ์น๊ตฌ ์ถ๊ฐ ๋ฑ์ ๋ค์ํ ์์ ์ํ
- ํผ๋ ๋ฐํ API
- HTTP POST ํํ
- POST /v1/me/feed
- ์ธ์ : ๋ฐ๋ (ํฌ์คํ ๋ด์ฉ), Authorization ํค๋ (API ํธ์ถ์ ์ธ์ฆํ๊ธฐ ์ํด ์ฌ์ฉ)
- ๋ด์ค ์ฝ๊ธฐ API
- ๋ด์ค ํผ๋๋ฅผ ๊ฐ์ ธ์ค๋ API
- GET /v1/me/feed
- ์ธ์ : Authorization ํค๋ (API ํธ์ถ์ ์ธ์ฆํ๊ธฐ ์ํด ์ฌ์ฉ)
ํผ๋ ๋ฐํ
- ์ฌ์ฉ์ : ๋ชจ๋ฐ์ผ ์ฑ์ด๋ ๋ธ๋ผ์ฐ์ ์์ ์ ํฌ์คํ
์ ์ฌ๋ฆฌ๋ ์ฃผ์ฒด
- POST /v1/me/feed API๋ฅผ ์ฌ์ฉ
- ๋ก๋๋ฐธ๋ฐ์
- ํธ๋ํฝ์ ์น ์๋ฒ๋ค๋ก ๋ถ์ฐ
- ์น ์๋ฒ
- HTTP ์์ฒญ์ ๋ด๋ถ ์๋น์ค๋ก ์ค๊ณํ๋ ์ญํ ์ ๋ด๋น
- ํฌ์คํ
์ ์ฅ ์๋น์ค
- ์ ํฌ์คํ ์ DB์ ์บ์์ ์ ์ฅ
- ํฌ์คํ
์ ์ก ์๋น์ค
- ์ ํฌ์คํ ์ ์น๊ตฌ์ ๋ด์ค ํผ๋์ ํธ์
- ๋ด์ค ํผ๋ ๋ฐ์ดํฐ๋ ์ผ์์ ๋ณด๊ดํ์ฌ ๋น ๋ฅด๊ฒ ์ฝ์ด๊ฐ ์ ์๋๋ก ํจ
- ์๋ฆผ ์๋น์ค
- ์น๊ตฌ๋ค์๊ฒ ์ ํฌ์คํ ์ด ์ฌ๋ผ์์์ ์๋ฆผ
- ํธ์ ์๋ฆผ์ ๋ณด๋
๋ด์ค ํผ๋ ์์ฑ
- ์ฌ์ฉ์
- ๋ด์ค ํผ๋๋ฅผ ์ฝ๋ ์ฃผ์ฒด
- GET /v1/me/feed API๋ฅผ ์ด์ฉ
- ๋ก๋ ๋ฐธ๋ฐ์
- ํธ๋ํฝ์ ์น ์๋ฒ๋ค๋ก ๋ถ์ฐ
- ์น ์๋ฒ
- ํธ๋ํฝ์ ๋ด์ค ํผ๋ ์๋น์ค๋ก ๋ณด๋
- ๋ด์ค ํผ๋ ์๋น์ค
- ์บ์์์ ๋ด์ค ํผ๋๋ฅผ ๊ฐ์ ธ์ค๋ ์๋น์ค
- ๋ด์ค ํผ๋ ์บ์
- ๋ด์ค ํผ๋๋ฅผ ๋ ๋๋ง ํ ๋ ํ์ํ ํผ๋ ID๋ฅผ ๋ณด๊ด
3๋จ๊ณ : ์์ธ ์ค๊ณ
ํผ๋ ๋ฐํ ํ๋ฆ ์ค๊ณ
- ์น ์๋ฒ
- ํด๋ผ์ด์ธํธ์ ํต์ ํ ๋ฟ ์๋๋ผ ์ธ์ฆ, ์ฒ๋ฆฌ์จ ์ ํ ๋ฑ์ ๊ธฐ๋ฅ๋ ์ํ
- ์ฌ๋ฐ๋ฅธ ์ธ์ฆ ํ ํฐ์ Authorization ํค๋์ ๋ฃ๊ณ API๋ฅผ ํธ์ถํ๋ ์ฌ์ฉ์๋ง ํฌ์คํ
- ์คํธ๊ณผ ์ ํดํ ์ฝํ ์ธ ๋ฅผ ๋ง์
- ํน์ ๊ธฐ๊ฐ ๋์ ํ ์ฌ์ฉ์๊ฐ ์ฌ๋ฆด ์ ์๋ ํฌ์คํ ์ ์์ ์ ํ
- ํฌ์คํ
์ ์ก(ํฌ์์) ์๋น์ค
- ์ด๋ค ์ฌ์ฉ์์ ์ ํฌ์คํ ์ ๊ทธ ์ฌ์ฉ์์ ์น๊ตฌ ๊ด๊ณ์ ์๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ ๊ณผ์
- ๋ ๊ฐ์ง ๋ชจ๋ธ
- ์ฐ๊ธฐ ์์ ์ ํฌ์์ํ๋ ๋ชจ๋ธ
- ์ฝ๋ ์์ ์ ํฌ์์ ํ๋ ๋ชจ๋ธ
- ์ฐ๊ธฐ ์์ ์ ํฌ์์ํ๋ ๋ชจ๋ธ
- ์๋ก์ด ํฌ์คํ ์ ๊ธฐ๋กํ๋ ์์ ์ ๋ด์ค ํผ๋๋ฅผ ๊ฐฑ์
- ํฌ์คํ ์๋ฃ ์ ํด๋น ์ฌ์ฉ์์ ์บ์์ ํด๋น ํฌ์คํ ์ ๊ธฐ๋ก
- ๋ด์ค ํผ๋๊ฐ ์ค์๊ฐ ๊ฐฑ์ , ์น๊ตฌ ๋ชฉ๋ก ์ฌ์ฉ์์๊ฒ ์ฆ์ ์ ์ก๋๋ ์ฅ์
- ์ ํฌ์คํ ์ด ๊ธฐ๋ก๋๋ ์๊ฐ์ ๋ด์ค ํผ๋๊ฐ ์ด๋ฏธ ๊ฐฑ์ ๋๋ฏ๋ก ๋ด์ค ํผ๋๋ฅผ ์ฝ๋ ๋ฐ ๋๋ ์๊ฐ์ด ์งง์์ง๋ ์ฅ์
- ์น๊ตฌ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ๋ชจ๋์ ๋ด์ค ํผ๋๋ฅผ ๊ฐฑ์ ํ๋๋ฐ ๋ง์ธ ์๊ฐ์ด ์์๋ ์ ์๋ ๋จ์ (ํซํค)
- ์๋น์ค๋ฅผ ์์ฃผ ์ด์ฉํ์ง ์๋ ์ฌ์ฉ์์ ํผ๋๊น์ง ๊ฐฑ์ ํด์ผ ํ๋ฏ๋ก ์ปดํจํ ์์ ๋ญ๋น
- ์ฝ๊ธฐ ์์ ์ ํฌ์์ํ๋ ๋ชจ๋ธ
- ํผ๋๋ฅผ ์ฝ์ด์ผ ํ๋ ์์ ์ ๋ด์ค ํผ๋๋ฆด ๊ฐฑ์ (์์ฒญ ๊ธฐ๋ฐ ๋ชจ๋ธ)
- ๋นํ์ฑํ๋ ์ฌ์ฉ์๋ ์๋น์ค์ ๊ฑฐ์ ๋ก๊ทธ์ธํ์ง ์๋ ์ฌ์ฉ์์ ๊ฒฝ์ฐ์ ์ด ๋ชจ๋ธ์ด ์ ๋ฆฌ (์ฅ์ )
- ํซํค ๋ฌธ์ ๋ ์๊ธฐ์ง ์๋ ์ฅ์
- ๋ด์ค ํผ๋๋ฅผ ์ฝ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ์์๋ ์ ์๋ ๋จ์
- ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๊ฒฐํฉํ์ฌ ์ฅ์ ์ ์ทจํ๊ณ ๋จ์ ์ ๋ฒ๋ฆฌ๋ ์ ๋ต
- ๋๋ถ๋ถ์ ์ฌ์ฉ์์ ๋ํด์๋ ํธ์ ๋ชจ๋ธ ์ฌ์ฉ
- ์น๊ตฌ๋ ํ๋ก์ด๊ฐ ์์ฃผ ๋ง์ ์ฌ์ฉ์์ ๊ฒฝ์ฐ์ ํ๋ก์ด๋ก ํ์ฌ๊ธ ํด๋น ์ฌ์ฉ์์ ํฌ์คํ ์ ํ์ํ ๋ ๊ฐ์ ธ๊ฐ๋๋ก ํ๋ ํ ๋ชจ๋ธ์ ์ฌ์ฉ (์์คํ ๊ณผ๋ถํ ๋ฐฉ์ง)
- ์์ ํด์๋ฅผ ํตํด ์์ฒญ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ์ฌ ํซํค ๋ฌธ์ ๊ฐ์
- ํฌ์์ ์๋น์ค
- ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์น๊ตฌ ID ๋ชฉ๋ก์ ๊ฐ์ ธ์ด
- ์ฌ์ฉ์ ์ ๋ณด ์บ์์์ ์น๊ตฌ๋ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ฌ์ฉ์ ์ค์ ์ ๋ฐ๋ผ ์ผ๋ถ ์น๊ตฌ๋ฅผ ๊ฑธ๋ฌ๋
- ์น๊ตฌ ๋ชฉ๋ก๊ณผ ์ ์คํ ๋ฆฌ์ ํฌ์คํ ID๋ฅผ ๋ฉ์์ง ํ์ ๋ฃ์
- ํฌ์์ ์์ ์๋ฒ๊ฐ ํผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์ค ํผ๋ ์บ์์ ๋ฃ์
- ๋ด์ค ํผ๋ ์บ์๋ <ํฌ์คํ ID, ์ฌ์ฉ์ ID>์ ์์์์ ๋ณด๊ดํ๋ ๋งคํ ํ ์ด๋ธ
- ์บ์๋ ํฌ๊ธฐ์ ์ ํ์ ๋๋ฉฐ ํด๋น ๊ฐ์ ์กฐ์ ์ด ๊ฐ๋ฅํ๋๋ก ํจ
- ์ฌ์ฉ์๋ ๋ณดํต ์ต์ ์คํ ๋ฆฌ๋ง ๋ณด๊ธฐ ๋๋ฌธ์ ์บ์ ๋ฏธ์ค๊ฐ ์ผ์ด๋ ํ๋ฅ ์ ๋ฎ์
ํผ๋ ์ฝ๊ธฐ ํ๋ฆ ์์ธ ์ค๊ณ
- ์ฌ์ฉ์๊ฐ ๋ด์ค ํผ๋๋ฅผ ์ฝ์ผ๋ ค๋ ์์ฒญ์ ๋ณด๋
- ๋ก๋๋ฐธ๋ฐ์๊ฐ ์์ฒญ์ ์น ์๋ฒ ๊ฐ์ด๋ฐ ํ๋๋ก ๋ณด๋
- ์น ์๋ฒ๋ ๋ด์ค ํผ๋ ์๋น์ค๋ฅผ ํธ์ถ
- ๋ด์ค ํผ๋ ์๋น์ค๋ ๋ด์ค ํผ๋ ์บ์์์ ํฌ์คํ ID ๋ชฉ๋ก์ ๊ฐ์ ธ์ด
- ์ฌ์ฉ์ ์บ์์ ํฌ์คํ ์บ์๋ฅผ ํตํด ์์ ํ ๋ด์ค ํผ๋๋ฅผ ๋ง๋ฆ
- ์์ฑ๋ ๋ด์ค ํผ๋๋ฅผ JSON ํํ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋
์บ์ ๊ตฌ์กฐ
- ์บ์๋ ๋ด์ค ํผ๋ ์์คํ ์ ํต์ฌ ์ปดํฌ๋ํธ
- ๋ด์ค ํผ๋
- ๋ด์ค ํผ๋์ ID๋ฅผ ๋ณด๊ด
- ์ฝํ
์ธ
- ํฌ์คํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ด
- ์ธ๊ธฐ ์ฝํ ์ธ ๋ ๋ฐ๋ก ๋ณด๊ด
- ์์
๊ทธ๋ํ
- ์ฌ์ฉ์ ๊ฐ ๊ด๊ณ ์ ๋ณด๋ฅผ ๋ณด๊ด
- ํ๋
- ํฌ์คํ ์ ๋ํ ์ฌ์ฉ์์ ํ์์ ๊ดํ ์ ๋ณด๋ฅผ ๋ณด๊ด
- ํฌ์คํ ์ ๋ํ ์ข์์๋ ๋ต๊ธ ๋ฑ๋ฑ์ด ์ด์ ํด๋น
- ํ์
- ์ข์์ ํ์, ์๋ต ์, ํ๋ก์ด ์, ํ๋ก์ ์ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ณด๊ด
4๋จ๊ณ : ๋ง๋ฌด๋ฆฌ
- ์ถ๊ฐ๋ก ๋ค๋ฃจ๋ฉด ์ข์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ท๋ชจ ํ์ฅ ์ฃผ์
- ์์ง์ ๊ท๋ชจ ํ์ฅ vs ์ํ์ ๊ท๋ชจ ํ์ฅ
- SQL vs NoSQL
- ์ฃผ-๋ถ(master-slave) ๋ค์คํ
- ๋ณต์ ๋ณธ(replica)์ ๋ํ ์ฝ๊ธฐ ์ฐ์ฐ
- ์ผ๊ด์ฑ ๋ชจ๋ธ(consistency model)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ(sharding)
- ์ด ์ธ์๋ ๋
ผ์ํด ๋ณด๋ฉด ์ข์ ๋งํ ์ฃผ์
- ์น ๊ณ์ธต(web tier)์ ๋ฌด์ํ๋ก ์ด์ํ๊ธฐ
- ๊ฐ๋ฅํ ํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์บ์ ํ ๋ฐฉ๋ฒ
- ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ง์ํ ๋ฐฉ๋ฒ
- ๋ฉ์์ง ํ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ ์ฌ์ด์ ๊ฒฐํฉ๋ ๋ฎ์ถ๊ธฐ
- ํต์ฌ ๋ฉํธ๋ฆญ์ ๋ํ ๋ชจ๋ํฐ๋ง
๋ฐ์ํ