-
๋ถ์ฐ ์์คํ ๋์์ธML engineer/System designs 2023. 1. 19. 01:17๋ฐ์ํ
๐ 3 mins read
์๊ฒ๋ ํฌ๊ฒ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ผ๋ฉด ์ธ์ ๊ฐ๋ ์์คํ ๋์์ธ์ ๊ฐ ์์๋ค์ ํ๋ฒ์ฏค์ ์ ํ ์ผ์ด ์๊น๋๋ค.
ํ์๋ ๋ฐฐ์ฐ๋ ๋ด์ฉ์ด๊ฑฐ๋, ์ฑ์ฉ ๋ฉด์ ์ ์ค๋นํ๋ฉด์ ๋ณธ ๋ด์ฉ์ด๊ฑฐ๋, ์ง์ ๊ฐ ์์๋ฅผ ํธ๋ค๋ง ํด์ผํ๋ ์ ์ฅ์ผ ์ ๋ ์๊ฒ ์ฃ .
์ด๋ค ๊ฒฝ์ฐ๋ , ๋ฏธ๋ฆฌ ๋ค์์ ํฐ ์์๋ค์ ๋จธ๋ฆฌ์์ ์ ๋ฆฌ๊ฐ ๋์ด์๋ค๋ฉด, ์ ๋ฒ scalableํ ์์คํ ์ ์์คํ ์ ๋์์ธ ํ๋๋ฐ์ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก CS ๋ฐฐ๊ฒฝ ์ง์์ด ์๋ค๋ฉด, Karan Pratap Singh๋์ ์์คํ ๋์์ธ ํ๋ผ์ด๋จธ๋ ํ๋ฒ ๋ณด์๋ฉด ์ข์ต๋๋ค.
# ๊ธฐ๋ณธ ์์
๊ธฐ๋ณธ ์์๋ผ๊ณ ๊ตณ์ด ๋ถ๋ฅด๋ ์ด์ ๋, ํฅํ์ ์์คํ ๋์์ธ์ ํ ๋ ๋ค์ ์์๋ค์ ํ๋ฒ ์์ง ํ๊ณ ๋๋ฉด, ์์คํ ๊ฐ ์์์ ๊ตฌ์ฒด์ ์ธ ์ค๊ณ๋ ๊ธฐ๋ฅ ๋ช ์ธ๋ฅผ ๋ชจ๋ฅด๋๋ผ๋ ์ ์ฒด ์์คํ ์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ค๊ณํ๋๋ฐ ์ถฉ๋ถ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฌผ๋ก ์ค๋ฌด ๊ฐ๋ฐ ๋ ๋ฒจ์์ ๊ตฌํํ๋ ์๋น์ค๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ถ๋ช ์ฌ๊ธฐ์ ์ธ๊ธ๋๋ ๊ธฐ๋ณธ ์์๋ค ์ด์ธ์๋ ์ฑ๊ฒจ์ผํ ๋ํ ์ผ์ด ๋ง๊ฒ ์ฃ .
๋ฌด์๋ณด๋ค๋, ์๋ง์กด ์น์๋น์ค(AWS)๋ฅผ ๋น๋กฏํด, Azure, GCP๋ฑ์ ์ฌ์ค ํด๋ผ์ฐ๋ ์๋น์ค์์ ์ ๋ถ ์ ๊ณตํ๋ ์์๋ค์ด๊ธฐ ๋๋ฌธ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด ๋ณดํธํ๋ ํ ์์ (2023๋ )์ ๊ฐ๋ฐ์๋ค์ด ์์ ๋๋งํ ๋ด์ฉ์ ๋๋ค.
๊ฐ ์์์ ์ธ๋ถ ๋ด์ฉ์ ์ฐจ์ฐจ ํฌ์คํ ํด๋ณด๋๋ก ํ๊ณ ๊ฐ๋จํ๊ฒ ์์กด์ฑ์ด ๋ฎ์ ์์ผ๋ก(๋์์ธ์ bottom up ์์ผ๋ก) ๋์ดํด๋ดค์ต๋๋ค.
1. Domain Name System (DNS)
๋ค์ํ ์ธํฐ๋ท ํ๋กํ ์ฝ์ ํตํด ์ฐ๊ฒฐ๋ ๊ณ์ธต / ๋ถ์ฐํ๋ ๋ค์ด๋ฐ ์์คํ ์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง๋ฅผ ์ ์ ์์ต๋๋ค.
์์นญ tier-0 load balancer ๋ผ๊ณ ๋ ํฉ๋๋ค.2. Load Balancers
์ฌ๊ธฐ์์ load balancer์ ๋์์ธ์ ์ดํดํ๊ณ , ์ ์ ๋๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ด๋ป๊ฒ ๋ถ์ฐ ์์ผ ์์คํ ๋ถํ๋ฅผ ์ค์ด๊ณ ์ค๋ฅ์ ๊ฐ๊ฑดํ ์์คํ ์ ๊ตฌ์ถํ๋์ง ์ ์ ์์ต๋๋ค. ์๋น์ค availability ๋ณด์ฅ์ ์ํด, ์๋ฒ ์ค๋ฅ ๋์, ์๋ฒ ์ถ๊ฐ/์ญ์ ๋ฑ์ scale out๋ฑ, ํด๋ฌ์คํฐ ๊ตฌ์ถ์ ๋ฐ๋์ ํ์ํ ์กด์ฌ์ฃ .
3. Databases
๊ฐ์ข ๋ฐ์ดํฐ์ ์ ์ฅ, ์ญ์ , ์ ๋ฐ์ดํธ ๋ฑ์ ๊ด์ฅํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ๋ถ์ฐํ๊ฒฝ์์ ๊ด๋ฆฌ ๋๋์ง๋ฅผ ์ ์ ์์ต๋๋ค.
์ ์ ํ๋ฒ consistency model์ ๋ํ ๊ธ์ ์ ์ ์ ์ด ์๋๋ฐ ์ด์ ๋ฐ์ ํ ๊ด๊ณ์ธ ์์์ ๋๋ค. ๋ ํ๋ฆฌ์ผ์ด์ , ํํฐ์ ๋ ๋ฑ์ ์์ฃผ๋ก ํ๋ฒ ๋ค๋ค ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.4. Key-value Store
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ ํ์ธ๋ฐ, noSQL์ด๋ผ๊ณ ๋ ๋ถ๋ฅด์ฃ . ๊ด๊ณํ(RDBMS) DB์๋ ๋ฌ๋ฆฌ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ชฉ์ ์ด ์ ํด์ ธ ์๋ ํธ์ธ๋ฐ, RDBMS์ ์ด๋ค ๊ฐ๋ ์ด ๋ค๋ฅธ์ง, ์ด๋ป๊ฒ scalability๋ฅผ ํ๋ณดํ๋์ง, ์ด๋ค ๋ชฉ์ ์ผ๋ก ์ฃผ๋ก ์ฐ์ด๋์ง๋ฅผ ์์ ๋ณด๊ฒ ์ต๋๋ค.
5. Content Delivery Network (CDN)
์น์์์ ๋น๋์ค, ์ด๋ฏธ์ง, ์ค๋์ค๋ฑ์ ์ฉ๋์ด ํฐ ์ปจํ ์ธ ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌ ํด์ผ ์ฌ์ฉ์(end user)์๊ฒ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฌ๋ ์ง, ์ฌ์ฉ์ ๊ฒฝํ์ด ์ด๋ป๊ฒ ๊ฐ์ ๋๊ณ ๋ฐ์ดํฐ ์ผํฐ์ ๋ถํ๋ฅผ ์ค์ฌ์ฃผ๋์ง๋ฅผ ์ ์ ์์ต๋๋ค.
6. Sequencer
์ด๊ฒ ์ ๊ธฐ๋ณธ์์๋๊ณ ์๊ฐํ์ค ์ ๋ ์์ง๋ง, ๋ถ์ฐ ํ๊ฒฝ์์ unique ID๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ ์๋์ง, consistency๋ฅผ ์ด๋ป๊ฒ ์ ์งํ๋์ง ๋ค์ํ ๋ฐฉ๋ฒ๋ก ์ ๋ค๋ค๋ณด๋ ค๊ณ ํฉ๋๋ค. (๊ฐ๋จํ, unique ID generator ๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.)
7. Service Monitoring
์์คํ ์ ๊ตฌ์ถํ์ผ๋ฉด ๋ชจ๋ํฐ๋ง์ ํด์ผ๊ฒ ์ฃ ? ๋์ฑ์ด ๋ถ์ฐ ์์คํ ์ด๋ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ ์ปค์ ธ์ ์๋น์ค์ ๊ธ๊ฒฉํ ๋ณํ๋ฅผ ์ผ์ผํค๊ธฐ ์ ์ ์กฐ๊ธฐ์ ํ์งํ์ฌ ๋์ํด์ค์ผํฉ๋๋ค. ๋ฌธ์ ์ ์ ํ์ ๋ฐ๋ผ์ ๋ฐ์ํ์ง ์๋๋ผ๋, ๋ฌธ์ ๊ฐ ๋ฐ์ ํ ์ ์๋ ์กฐ์ง์ ๋ฏธ๋ฆฌ ํ์ ํ๋๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
8. Distributed Caching
์บ์ฑ์ ์๋น์ค ์๋ต ์๋๋ฅผ ๊ฐ์ ํ๋๋ฐ์ ๊ธฐ๋ณธ ์์์ธ๋ฐ, ๋ถ์ฐํ๊ฒฝ์์ ์บ์ฑ์ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
9. Distributed Messaging Queue
๊ธฐ๋ณธ ์๋ฃ ๊ตฌ์กฐ์ค์ ํ๋์ง๋ง, ๋ฉ์ธ์ง ํ๊ฐ ํ๋์ ์๋ฒ์ ์์ง ์๊ณ ์ฌ๋ฌ๋์ ์๋ฒ์ ๊ฑธ์ณ ๋ถ์ฐ๋์ด์๋ค๋ฉด ์ด๋ป๊ฒ ์๋ํด์ผํ๋์ง, ์ด๋ค์์ผ๋ก producer, consumer๊ฐ์ ์ํธ์์ฉ์ด ์ผ์ด๋๋์ง์ ๋ํด ์ด์ผ๊ธฐ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
10. Publish-Subscribe System
Pub-sub ํจํด์ ํน์ํ ๊ฒฝ์ฐ์๋ง ์ฐ์ผ๊ฒ ๊ฐ์ง๋ง, ์๊ฐ๋ณด๋ค ๋น๋๊ธฐ ์ปค๋ฎค๋์ผ์ด์ ์ด ํ์ํ๊ณณ์์ ํํ ์ฐ์ด๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. Serverless, ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ณ(MSA: ์์ ๋๋ฌด ๋จ์ฉํ๋ ๊ฒฝํฅ์ด ์๋๋ฐ ์ด๊ฒ๋ ๋์ค์ ์๊ฐ ๋ ๋ ๋ฐ๋ก ์ด์ผ๊ธฐ ํด๋ณผ๊ฒ์.) ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๊ด์ ์์ ๋ง์ด ์ฐ์ ๋๋ค.
11. Rate Limiter
์ฐ๋กํ๋ง(throttling)์ด๋ผ๊ณ ๋ ํ์ฃ . ํน์ ์๋น์ค์ ์์ฒญ์ด ๋๋ฌด ๋ง์ด ๋ค์ด์ฌ ๊ฒฝ์ฐ ์ฌ์ ์ ์ ์ํด๋ ํ๊ณ๋ด์์ ๋์ํ ์ ์๋๋ก ํด์ฃผ๋ ์์์ ๋๋ค. ์ฃผ๋ก ์๋น์ค๋ฅผ ๋ฐฉ์ดํ๋ ๋ ์ด์ด๋ก์จ ์์คํ ๋ถํ๋ฅผ ์ผ์ ์์ค ์ด๋ด๋ก ์ ์งํ๋๋ฐ ์ฐ์ ๋๋ค.
12. Blob Store
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ key-value store ๋ฐ์์ ๊ฐ์ด ๋ค๋ฃฐ๊น ํ๋ค๊ฐ ๋ฐ๋ก ๋บ ์์์ ๋๋ค. ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ(๋ฉํฐ๋ฏธ๋์ด, ๋ฐ์ด๋๋ฆฌ) ๋ค๋ฃฌ๋ค๋ ๊ด์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋น๊ตํด๋ณด์๋ฉด ์ข์ ๋ด์ฉ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
13. Distributed Search
์ด์ ๋ ์์คํ ๋น๋ฉ ๋ธ๋ก์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ์ ๋จ๋ ์์ฉ์๋น์ค๋ผ๊ณ ๋ ๋ถ๋ฅผ ์ ์๊ฒ ๋๋ฐ์, ์ฌ์ฉ์๋ก ๋ถํฐ ๋ฐ์ ์ฟผ๋ฆฌ(query: ์์ด๋ก ํด๋ฆฌ๊ฐ ์ค์ ๋ฐ์์ ๋ ๊ฐ๊น์ง๋ง ์ด์งธ์ ์ง ํํ์์ ์ฟผ๋ฆฌ๋ผ๊ณ ์ฝ์ผ๋ฉด ํ๊ตญ์ฌ๋์ด๋ผ๊ณ ํ ์ ๋๋ก ์ฟผ๋ฆฌ๊ฐ ์ต์ํ๋ค์)์ ๋ํด ์ฐ๊ด์ฑ์ด ๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ํด์ฃผ๋ ์์์ฃ . ํฌ๊ฒ ํฌ๋กค๋ง(crawl), ์์ธ(index), ๊ฒ์(search)๋ก ๋๋ ์ ๋ค๋ค๋ณผ๊ฒ์.
14. Distributed Logging
๊ธฐ๋ฅ๋ง์ ๋ณธ๋ค๋ฉด, ๋ค๋์ I/O ์์ฒญ์ ์ฒ๋ฆฌํด์ผํ๋ ๋งํผ ์๋น์ค ์๋ต ์ง์ฐ์ ํฌ๊ฒ ํ๋ชซ ์ฐจ์งํ๋ ์์์ด๊ธฐ๋ ํ๋ฐ์, ์ค์ ๋ก๋ ์๋น์ค ์๋ต ์๋์ ์ํฅ์ ๋ฏธ์น์ง ์๊ฒ๋ ๋์์ธ ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ป๊ฒ ์๋ต ์ง์ฐ์ ์ผ์ผํค์ง ์๊ณ ํจ๊ณผ์ ์ผ๋ก ๋ถ์ฐ ํ๊ฒฝ์์ ๋ก๊น ์ ํ ์ ์๋์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
15. Distributed Task Scheduling
๋ถ์ฐ ํ๊ฒฝ์์๋ ๋ณต์กํ๊ฒ ๋ง์ฃ . ๋จ์ํ ์์ฒญ์ด ์ค๊ฐ๋๊ฒ๋ง ํด๋, ์๋ ๊ทธ๋ฅ unique ID๋ฅผ ๋ณด์ฅํ๋๊ฒ๋ง ํด๋ ๊ฐ๋จํ์ง ์์๋ฐ task scheduling ๊น์ง ํ๋ ค๋ฉด ๋๋ฌด ๋ณต์กํด์ง๋๋ค. ์ฃผ๋ก offload๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌํ๊ณ ๋น๋๊ธฐ์ ์ผ๋ก task๊ฐ ์๋ฃ๋๋๋ก ํ๋ ์ ๋ต์ ์ทจํฉ๋๋ค.
16. Sharded Counters
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ ์ ์์ง๋ง, ๋ก๊ทธ์๋ ๋ค๋ฅด๊ฒ, ์๋ฅผ๋ค์ด SNS์์ ์ข์์ ๋ฒํผ ๊ฐ์ ์์๋ค์ ๋ถ์ฐํ๊ฒฝ์์ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ์นด์ดํ ์ ํด์ค์ผํฉ๋๋ค. ์ด๋ฅผ ์ด๋ป๊ฒ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋์ง ์์ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด์ ๋ ๊ฐ๋ ์ ์์งํ๋ค๋ฉด, ์ธ๋ถ ๋ด์ฉ์ ๊ธฐ์ตํ์ง ๋ชปํ๊ฒ ๋๋๋ผ๋, ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์์คํ ๋์์ธ ํ๋๋ฐ์ ๋ฌด๋ฆฌ๊ฐ ์์ง ์์๊น ์ถ์ต๋๋ค. (
์ด๊ฒ๋ ๋ง์๊ฑฐ ๊ฐ์๋ฐ ์ด๊ฑธ ์ธ์ ๋ค ์ปค๋ฒํ์ง...)ํ๋ค๋ชปํด ์ฑ์ฉ ๋ฉด์ ์์ "~ ํ๋ ์์คํ ์ ์ค๊ณํด๋ณด์ธ์" ๋ผ๊ณ ํ์๋ ์๋ง์ถ์ด ์ฒ๋ผ ๋๋ธ "์๋ฐ๋ก ์ฌ๊ธฐ์ ์ด๋ ๊ฒ ์ด๋ฐ ํด๋์ค ๋ง๋ค์ด์... ์ฌ๊ธฐ์ ์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด C๋ก ๊ตฌํํ๋ฉด..." ์ด๋ฐ ๋ฐ๋ณด ๊ฐ์ ์๋ฆฌ๋ ํ์ง ์์ ์ ์์ต๋๋ค. (
์๋ฐ๋ C๋ฅผ ๋นํํ๋๊ฒ ์๋๋๋ค..)๋ฐ์ํ'ML engineer > System designs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
IaaS / PaaS / SaaS (0) 2023.09.22 Domain Name System (DNS) ๊ฐ์ (0) 2023.01.22 Consistency Model์ ์ข ๋ฅ (0) 2023.01.02