Design Distributed Mail Service
์๊ตฌ์ฌํญ
๊ธฐ๋ฅ
์ด๋ฉ์ผ ๋ฐ์ก/์์
๋ชจ๋ ์ด๋ฉ์ผ ์กฐํ
์ฝ์ ์ฌ๋ถ ํํฐ๋ง
๊ฒ์ ๊ธฐ๋ฅ
์คํธ ๋ฐ ๋ฐ์ด๋ฌ์ค ๋ฐฉ์ง ๊ธฐ๋ฅ
์ฒจ๋ถ ํ์ผ ์ง์
SMTP / POP / IMAP ๋ฑ ํ๋กํ ์ฝ ์ง์
๊ท๋ชจ
์ฌ์ฉ์ ์: 10์ต ๋ช
ํ๋ฃจ ํ๊ท ์ ์ก ์ด๋ฉ์ผ ๊ฑด์: 10๊ฑด
ํ๋ฃจ ํ๊ท ์์ ์ด๋ฉ์ผ ๊ฑด์: 40๊ฑด
์ด๋ฉ์ผ ํ๋์ ํ๊ท ๋ฉํ๋ฐ์ดํฐ ํฌ๊ธฐ: 50KB
์ฒจ๋ถ ํ์ผ ํ๊ท ํฌ๊ธฐ: 500KB
์ฒจ๋ถ ํ์ผ ํฌํจ ๋น์จ: 20%
์ถ์
์ด๋ฉ์ผ ์ ์ก QPS = 10์ต ๋ช * ํ๊ท 10๊ฑด / 24์๊ฐ / 3600์ด = 115,740
1๋ ๋ฉํ๋ฐ์ดํฐ ์ฉ๋ = 10์ต ๋ช * ํ๊ท 40๊ฑด * 365์ผ * 50KB = 730TB
1๋ ์ฒจ๋ถ ํ์ผ ์ฉ๋ = 10์ต ๋ช * ํ๊ท 40๊ฑด * 365์ผ * 500KB * 20% = 1,460PB
๋ฐฐ๊ฒฝ ์ง์
์ด๋ฉ์ผ ํ๋กํ ์ฝ
์ด๋ฉ์ผ์ ์ฃผ๊ณ ๋ฐ๋ ํ๋กํ ์ฝ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
SMTP(Simple Mail Transfer Protocol): ์ด๋ฉ์ผ์ ํ ์๋ฒ์์ ๋ค๋ฅธ ์๋ฒ๋ก ๋ณด๋ด๋ ํ์ค ํ๋กํ ์ฝ
POP(Post Office Protocol): ์ด๋ฉ์ผ ํด๋ผ์ด์ธํธ๊ฐ ์๊ฒฉ ๋ฉ์ผ ์๋ฒ์์ ์ด๋ฉ์ผ์ ์์ ํ๊ณ ๋ค์ด๋ก๋ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ์ค ํ๋กํ ์ฝ
๋จ๋ง๋ก ๋ค์ด๋ก๋ ๋ ์ด๋ฉ์ผ์ ์๋ฒ์์ ์ญ์ ๋์ด, ํ ๋ ๋จ๋ง์์๋ง ์์ ๊ฐ๋ฅ
์ด๋ฉ์ผ์ ์ผ๋ถ๋ง ์ฝ์ ์ ์์ด, ์ฉ๋์ด ํฐ ์ฒจ๋ถ ํ์ผ์ด ์ฒจ๋ถ ๋ ๊ฒฝ์ฐ ๋ง์ ์๊ฐ์ด ์์๋จ
IMAP(Internet Message Access Protocol): ์ด๋ฉ์ผ ํด๋ผ์ด์ธํธ๊ฐ ์๊ฒฉ ๋ฉ์ผ ์๋ฒ์์ ์ด๋ฉ์ผ์ ์์ ํ๊ณ ๋ค์ด๋ก๋ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ์ค ํ๋กํ ์ฝ
POP์ ๋ฌ๋ฆฌ ๋ฉ์ผ ์๋ฒ์์ ์ง์์ง์ง ์์ ์ฌ๋ฌ ๋์ ๋จ๋ง์์ ๋ฉ์ผ์ ์ฝ์ ์ ์์
๋ฉ์์ง๋ฅผ ์ด๊ธฐ ์ ์ ํค๋๋ง ๋ค์ด ๋ฐ๊ณ , ์ ์ฒด ๋ฉ์์ง๋ฅผ ์ฝ์ ๋๋ง ๋ค์ด๋ก๋
๊ฐ์ธ ์ด๋ฉ์ผ ๊ณ์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ
HTTPS(HyperText Transfer Protocol Secure): ๋ฉ์ผ ์ ์ก ํ๋กํ ์ฝ์ ์๋๋ฉฐ, ์น ๊ธฐ๋ฐ ๋ฉ์ผ ์์คํ ์ ์์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ
์ ํต์ ๋ฉ์ผ ์๋ฒ ๋์
์ ํต์ ๋ฉ์ผ ์๋ฒ์ ์ํคํ ์ฒ๋ ๊ฐ๋จํ์ผ๋ฉฐ, ๋ฉ์ผ์ ์ ์กํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฝํ ์ ์๋ค.
A๊ฐ ์์๋ฃฉ ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ํ B์๊ฒ ์ ์ก
ํด๋น ์ด๋ฉ์ผ์ ์์๋ฃฉ SMTP ๋ฉ์ผ ์๋ฒ๋ก ์ ์ก(SMTP ํ๋กํ ์ฝ ์ฌ์ฉ)
์์๋ฃฉ ์๋ฒ๋ DNS ์ง์๋ฅผ ํตํด ์์ ์ฌ SMTP ์๋ฒ ์ฃผ์ ์กฐํ
์์๋ธ ์ฃผ์์ ํด๋น SMTP ๋ฉ์ผ ์๋ฒ๋ก ์ด๋ฉ์ผ ์ ์ก(SMTP ํ๋กํ ์ฝ ์ฌ์ฉ)
์์ ํ ์ง๋ฉ์ผ ์๋ฒ๋ ์ด๋ฉ์ผ์ ์ ์ฅ
B๊ฐ ๋ก๊ทธ์ธํ ์ง๋ฉ์ผ ํด๋ผ์ด์ธํธ์์ IMAP/POP ์๋ฒ์ ์ด๋ฉ์ผ ํ์ธ ์์ฒญ
IMAP/POP ์๋ฒ๋ ์ ์ฅ๋ ์ด๋ฉ์ผ์ ์กฐํ ํ ํด๋ผ์ด์ธํธ๋ก ์ ์ก
์ด๋ฉ์ผ ์ ์ฅ๋ ์์คํ ์ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ฉํ๋ ๊ฐ๋จํ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ก๋ค.
home
user1
Maildir
new
cur
tmp
...
user2
Maildir
new
cur
tmp
...
...
ํ์ง๋ง ์ด ๊ตฌ์กฐ๋ ์ ์ญ์ต ๊ฐ์ ์ด๋ฉ์ผ์ ๊ฒ์ํ๊ณ ๋ฐฑ์ ํ๋ ๋ชฉ์ ์ผ๋ก ํ์ฉํ๊ธฐ์ ๋์คํฌ I/O๊ฐ ๋ณ๋ชฉ์ด ๋์ด ๋ถ์ ์ ํ๋ค. ๋๋ฌธ์ ๋ง์ ์ฌ์ฉ์์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ์ฌ๋ ๋ถ์ฐ ๋ฉ์ผ ์๋ฒ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
์ด๋ฉ์ผ API
์น ๋ฉ์ผ ํต์ ์๋ ์ผ๋ฐ์ ์ผ๋ก HTTP ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋๋ฉฐ, ํต์ฌ API๋ ๋ค์๊ณผ ๊ฐ๋ค.
POST /message
: To, Tc, Bcc ํค๋์ ๋ช ์๋ ์์ ์์๊ฒ ๋ฉ์์ง ์ ์กGET /folders
: ์ฃผ์ด์ง ์ด๋ฉ์ผ ๊ณ์ ์ ์กด์ฌํ๋ ๋ชจ๋ ํด๋ ๋ชฉ๋ก ๋ฐํGET /folders/{:folder_id}/message
: ์ฃผ์ด์ง ํด๋ ์๋ ๋ชจ๋ ๋ฉ์์ง ๋ฐํGET /message/{:message_id}
: ์ฃผ์ด์ง ํน์ ๋ฉ์์ง์ ๋ํ ๋ชจ๋ ์ ๋ณด ๋ฐํ
๋ถ์ฐ ๋ฉ์ผ ์๋ฒ ์ํคํ
์ฒ
์ปดํฌ๋ํธ
์ฌ๋ฌ ์๋ฒ ์ฌ์ด์ ๋ฐ์ดํฐ ๋๊ธฐํ์, ์์ ์ ๋ฉ์ผ ์๋ฒ์ ์ด๋ฉ์ผ ์คํธ ๊ตฌ๋ถ ๋ฑ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋ ๋ถ์ฐ ๋ฉ์ผ ์๋ฒ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ค.
์น๋ฉ์ผ
/ \
https ์น์์ผ
/ \
์น ์๋ฒ ์ค์๊ฐ ์๋ฒ
\ /
\ /
\ /
์ ์ฅ์ ๊ณ์ธต
์น๋ฉ์ผ: ์ฌ์ฉ์๊ฐ ๋ฉ์ผ์ ๋ฐ๊ณ ๋ณด๋ด๋ ์ธํฐํ์ด์ค
์น ์๋ฒ: ์ฌ์ฉ์๊ฐ ์ด์ฉํ๋ ์์ฒญ/์๋ต ์๋น์ค๋ก, ์ฌ์ฉ์ ์ธ์ฆ, ๋ฉ์ผ ์ ์ก, ๋ฉ์ผ ์์ ๋ฑ์ ๋ชจ๋ ์ด๋ฉ์ผ API๋ฅผ ์ฒ๋ฆฌ
์ค์๊ฐ ์๋ฒ: ์๋ก์ด ์ด๋ฉ์ผ ๋ด์ญ์ ํด๋ผ์ด์ธํธ์ ์ค์๊ฐ์ผ๋ก ์ ๋ฌ
์ ์ฅ์ ๊ณ์ธต
๋ฉํ๋ฐ์ดํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค: ์ด๋ฉ์ผ ์ ๋ชฉ / ๋ณธ๋ฌธ / ๋ฐ์ ์ธ / ์์ ์ธ ๋ฑ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
์ฒจ๋ถ ํ์ผ ์ ์ฅ์: ๋์ฉ๋ ํ์ผ์ ์ ์ฅํ๋ ๋ฐ ์ ํฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ(์๋ง์กด S3)
๋ถ์ฐ ์บ์: ์ต๊ทผ ์์ ์ด๋ฉ์ผ์ ์์ฃผ ์ฝ์ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑ(๋ ๋์ค)
๊ฒ์ ์ ์ฅ์: ๊ณ ์ ํ ์คํธ ๊ฒ์์ ์ง์ํ๋ ์ญ ์ธ๋ฑ์ค๋ฅผ ์๋ฃ๊ตฌ์กฐ๋ก ํ ์ ์ฅ์ ์ฌ์ฉ
์ด๋ฉ์ผ ์ ์ก ์ ์ฐจ
์ฌ์ฉ์๊ฐ ์น ๋ฉ์ผ ํ๊ฒฝ์์ ๋ฉ์ผ ์์ฑ ํ ์ ์ก
์น ์๋ฒ์ ์ ๋ฌ ๋ฐ๊ธฐ ์ ๋ก๋๋ฐธ๋ฐ์์์ ์ฒ๋ฆฌ์จ ์ ํ์ ๋ฐ๋ผ ์์ฒญ์ ์น ์๋ฒ์ ์ ๋ฌ
์ ๋ฌ ๋ฐ์ ๋ฉ์ผ์ ๋ํด ์๋ ๋์ ์ํ
ํฌ๊ธฐ ๋ฐ ํ๋ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์ด๋ฉ์ผ ๊ฒ์ฆ
์คํธ ์ฌ๋ถ์ ๋ฐ์ด๋ฌ์ค ๊ฐ์ผ ์ฌ๋ถ ๊ฒ์ฌ
๋ฉ์ผ์ ์ธ๋ถ ์ ์ก ํ๋ก ์ ๋ฌ
์ฒจ๋ถํ์ผ์ด ํฐ ๊ฒฝ์ฐ์ ๊ฐ์ฒด ์ ์ฅ์์ ๋ฐ๋ก ์ ์ฅ ํ ์ฐธ์กฐ ์ ๋ณด๋ง ํ์ ์ ๋ฌ
๋ฉ์์ง ํ์์ ์ธ๋ถ ์ ์ก SMTP ์๋ฒ๋ก ์ ๋ฌ
์ธ๋ถ ์ ์ก SMTP ์๋ฒ์์๋ ์ด๋ฉ์ผ ๊ฒ์ฆ
์์ ์์ ๋ฉ์ผ ์๋ฒ๋ก ๋ฉ์ผ ์ ์ก
์คํจ ์ ์ง์์ ๋ฐฑ์คํ์ ๊ฐ์ ์ ๋ต์ผ๋ก ๋ฉ์ผ ์ ์ก ์ฌ์๋
์ด๋ฉ์ผ ์์ ์ ์ฐจ
์ ์ก๋ ์ด๋ฉ์ผ์ด ๋ก๋๋ฐธ๋ฐ์์ ๋์ฐฉ
์ฌ๋ฌ SMTP ์๋ฒ๋ก ์ด๋ฉ์ผ ์ ๋ฌ
์์ ์ด๋ฉ์ผ ํ๋ก ์ ๋ฌ
์ฒจ๋ถํ์ผ์ด ํฐ ๊ฒฝ์ฐ์ ๊ฐ์ฒด ์ ์ฅ์์ ๋ฐ๋ก ์ ์ฅ ํ ์ฐธ์กฐ ์ ๋ณด๋ง ํ์ ์ ๋ฌ
๋ฉ์ผ ์ฒ๋ฆฌ ์๋ฒ๋ก ๋ณด๋ธ ํ ๋ฉ์ผ ๊ฒ์ฆ
๊ฒ์ฆ๋ ์ด๋ฉ์ผ์ ๋ฉ์ผ ์ ์ฅ์ / ์บ์ / ๊ฐ์ฒด ์ ์ฅ์ ๋ฑ์ ๋ณด๊ด
์์ ์๊ฐ ์จ๋ผ์ธ ์ํ์ธ ๊ฒฝ์ฐ ์ด๋ฉ์ผ์ ์ค์๊ฐ ์๋ฒ์ธ ์น ์์ผ ์๋ฒ๋ก ์ ๋ฌ
์์ ์๊ฐ ์คํ๋ผ์ธ ์ํ์ธ ๊ฒฝ์ฐ ์ด๋ฉ์ผ์ ์ ์ฅ์ ๊ณ์ธต์ ์ ์ฅ
์์ธ ์ค๊ณ
๋ฉํ๋ฐ์ดํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค
์ด๋ฉ์ผ ๋ฉํ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ ํน์ฑ์ ๊ฐ์ง๋ค.
์ด๋ฉ์ผ ํค๋๋ ์ผ๋ฐ์ ์ผ๋ก ์๊ณ ๋น๋ฒํ๊ฒ ์ด์ฉ
๋ณธ๋ฌธ์ ํฌ๊ธฐ๋ ์์ ๊ฒ ๋ถํฐ ํฐ ๊ฒ๊น์ง ๋ค์
๋ณธ๋ฌธ์ ์ฝ๊ธฐ๋ ์ผ๋ฐ์ ์ผ๋ก ํ ๋ฒ๋ง ์ด๋ฃจ์ด์ง
์ด๋ฉ์ผ์ ๋ํ ๊ถํ ์ฒ๋ฆฌ ํ์(ํน์ ์ฌ์ฉ์๋ง ์ฝ์ ์ ์๋๋ก)
๋ณดํต ์ต๊ทผ์ ์ด๋ฉ์ผ๋ง ์์ฃผ ์ฝ์
๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ๋ฉด ์ ๋จ
์ด๋ฌํ ๋ฐ์ดํฐ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ ์๊ตฌ ์ฌํญ์ผ๋ก ์ ๋ฆฌํ ์ ์๋ค.
๋จ์ผ ์ปฌ๋ผ์ ํฌ๊ธฐ๊ฐ ํด ์ ์์
๋์คํฌ I/O ์ต์ํ๋๋๋ก ์ค๊ณ
๊ฐ์ฉ์ฑ์ด ๋๊ณ ์ฅ์ ๊ฐ๋ด๊ฐ ๊ฐ๋ฅํด์ผ ํจ
์ฆ๋ถ ๋ฐฑ์ ์ด ๊ฐ๋ฅํด์ผ ํจ
๊ฐ๋ ฅํ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ณด์ฅ
์ด๋ฌํ ํน์ฑ์ ๊ณ ๋ คํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฅ๋จ์ ์ ๋น๊ตํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
RDBMS
ํค๋์ ๋ณธ๋ฌธ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๊ฐ๋จํ ์ง์๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅ
ํฐ ์ด๋ฉ์ผ์ BLOB์ผ๋ก ์ ์ฅํ๊ฒ ๋๋๋ฐ, ๊ทธ ๊ฒฝ์ฐ ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ์ด์ง
๋ถ์ฐ ๊ฐ์ฒด ์ ์ฅ์
์ด๋ฉ์ผ์ ์์ ๋ฐ์ดํฐ ๊ทธ๋๋ก ๊ฐ์ฒด ์ ์ฅ์์ ๋ณด๊ดํ์ฌ ๋ฐ์ดํฐ ๋ฐฑ์ ์ ์ฉ์ด
์ฝ์ ํ์ / ํค์๋ ๊ฒ์ ๋ฑ ๊ธฐ๋ฅ ๊ตฌํ์ด ์ด๋ ค์
NoSQL
์ง๋ฉ์ผ์ด ํด๋น ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ์์ผ๋, ๊ตฌํ ๋ฐฉ๋ฒ ์ ์ ์์(์คํ ์์ค X)
๊ธฐ๋ฅ์ ์๋ฒฝํ๊ฒ ์ง์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ค๊ณ ๋ณผ ์ ์๊ณ , ์ค์ ๋ก ๋ํ ์ด๋ฉ์ผ ์๋น์ค ์ ์ฒด๋ ๋ ์์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ตฌ์ถํ๊ณ ์๋ค.
๊ฒ์
์ด๋ฉ์ผ ๊ฒ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ ํน์ฑ์ ๊ฐ์ง๋ค.
๊ฒ์ ๊ธฐ๋ฅ ์ ๊ณต์ ์ํด ์ด๋ฉ์ผ์ด ์ ์ก/์์ /์ญ์ ๋ ๋ ๋ง๋ค ์ธ๋ฑ์ฑ ์์ ์ํ ํ์
๋ฐ๋ฉด์ ๊ฒ์์ ์ฌ์ฉ์๊ฐ ๊ฒ์์ ํ ๋๋ง ์คํ๋๋๋ฐ, ์ด๋ ๋น๋ฒํ์ง ์์
์ฐ๊ธฐ ์ฐ์ฐ์ด ์ฝ๊ธฐ ์ฐ์ฐ๋ณด๋ค ๋ ๋ง์ด ๋ฐ์ํ๊ฒ ๋จ
๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ง์ถคํ ๊ฒ์ ์๋ฃจ์ ๊ณผ ์๋ผ์คํฑ์์น๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์์ด ์กด์ฌํ๋ค.
์๋ผ์คํฑ์์น
์ฒ๋ฆฌ ๋ฐฉ๋ฒ
๊ฒ์์ ์๋ผ์คํฑ์์น๋ฅผ ์ด์ฉํ์ฌ ๋๊ธฐ์ ์ผ๋ก ์ํ
์ ์ก/์์ /์ญ์ ๋ ๋น๋๊ธฐ์ ํธ์ถํ์ฌ ์๋ผ์คํฑ ํด๋ฌ์คํฐ์ ๋ฐ์
ํน์ง
์๋ผ์คํฑ์ ๊ฒ์์ ์ต์ ํ๋์ด ์์ด, ๊ฒ์ ์๋๊ฐ ๋น ๋ฆ
๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์๋ผ์คํฑ ํด๋ฌ์คํฐ์ ์ฃผ ์ด๋ฉ์ผ์ ์ฅ์์ ๋ฐ์ดํฐ ๋๊ธฐํ๊ฐ ๊น๋ค๋ก์
๋ง์ถคํ ๊ฒ์ ์๋ฃจ์
ํน์ง
์ธ๋ฑ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค๋์ ์ฐ๊ธฐ ์ฐ์ฐ์ ๋ํ ํด๊ฒฐ์ฑ ํ์
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?