americasnail
Students
570
Reviews
22
Rating
4.2
2025.06 ~ ํ์ฌ:
๋ฏธ๊ตญ ์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ AI Coding Agent ์คํํธ์ ์ฐฝ์ (ex. Claude Code, Codex)
์ค๋ ๋ 3.3K ์์คํ ๋์์ธ, ์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ, ํ ํฌ, AI ๊ธ ๊ณ์ ์ด์์ค (rich_I_2024)
2024.05 ~ 2025.05:
๋ฏธ๊ตญ ์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ AI ํํ ํฌ ์คํํธ์ , ์ํํธ์จ์ด ์์ง๋์ด
2023.08 ~ 2024.04:
๋ฏธ๊ตญ ๋น ํ ํฌ(OpenAI, Meta, Apple, etc) ์์ง๋์ด ํ ๋ก์ฐ์ญ ํ์คํ ์ํํธ์จ์ด ์์ง๋์ด ํ ๋ก์ฐ
~2022.10 @๊ตญ๋ด ๊ธฐ์ ์ฌ์ง(๊ฒ์ํฌํธ/ํํ ํฌ, AI)
Courses
Reviews
carrykim
ยท
AI Era Silicon Valley Internship & US Big Tech System Design & Open Source Practical Contribution Complete Course That Won't Be ReplacedAI Era Silicon Valley Internship & US Big Tech System Design & Open Source Practical Contribution Complete Course That Won't Be Replacedhankyulkim
ยท
High-Performance Real-time Distributed System RabbitMQ + Kafka + Redis Practical ProjectHigh-Performance Real-time Distributed System RabbitMQ + Kafka + Redis Practical Project- High-Performance Real-time Distributed System RabbitMQ + Kafka + Redis Practical Project
armyso95062341
ยท
High-Performance Real-time Distributed System RabbitMQ + Kafka + Redis Practical ProjectHigh-Performance Real-time Distributed System RabbitMQ + Kafka + Redis Practical Project- High-Performance Real-time Distributed System RabbitMQ + Kafka + Redis Practical Project
Posts
Q&A
14๊ฐ. ์ํ DVD ๋์ฌ ์์คํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ค๊ณ์์ Inventory ํ ์ด๋ธ ์ง๋ฌธ์์ต๋๋ค.
์๋ ํ์ธ์. 3831568๋,์ฝ์ง ์์ ์๊ฐ๊ณผ ์ฌ๊ณ ๋ก ์ง๋ฌธํด์ฃผ์ ๋ถ๋ถ ๋๋จํ์ ๊ฒ ๊ฐ์ต๋๋ค.๋๋ฌด ์ข์ ์ง๋ฌธ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์ ๊ฐ ๋ฐฉ๊ธ ์บ๋๋ค ๋ฒค์ฟ ๋ฒ์์ ์ค๋ ๋ฐ๋์ ๋ฆ๊ฒ ๋ต์ ํ๊ฒ ๋์์ต๋๋ค.๋จผ์ ๋ถ๋ฆฌํ๋ ๊ฒ ์ข๋ค๊ณ ๋ง ๋ง์๋๋ฆฐ ๋ถ๋ถ ์ค๋ช ๋ถ์กฑ์ ๋ํด ๋์ํ๋ฉด์ ๊ฐ์ ํ ๋ถ๋ถ์ผ๋ก๋ฉ๋ชจ๋ฅผ ํด๋๊ฒ ์ต๋๋ค. ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค.์ง๋ฌธํด์ฃผ์ ๋ถ๋ถ์ ๋ํด ์๊ฒฌ์ ๋๋ ค๋ณด์๋ฉด, Inventory ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. DVD ๊ฐ ํ ํ์ดํ์ ์ฌ๊ณ ๊ฐ 10๋ง๊ฑด์ด๋ , 10๊ฑด์ด๋ , Items ํ ์ด๋ธ์ ๊ทธ ํ์ดํ ํ๋๋น ๋ฑ ํ ํ์ ๋๋ค.์ฌ๊ณ ๊ฐ ์ด๋น ์๋ฐฑ๋ฒ ์ฐจ๊ฐ๋๊ฑฐ๋ ๋ณต๊ตฌ๋๋ค๋ฉด ๊ทธ ํ ํ์ WRITE lock ์ด ๊ณ์ ๊ฑธ๋ฆฌ๊ณ ๋์์ ๊ด๋ฆฌ์๊ฐ์ด ์ํ ์ค๋ช ์ข ์์ ํ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด, ๊ทธ ํ์ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ ์ ๋ฉํ๋ฐ์ดํฐ ํ ์ด๋ธ Movies, Books, Games ๋ฑ๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋๊ณ Inventory ํ ์ด๋ธ์ movie_id (FK)store_id / location_id (์ต์ )status (โavailableโ, โrentedโ, โlostโ ๋ฑ)available_copies (๋๋ ๊ฐ๋ณ copy๋ฅผ ํ ํ์ฉ ๊ด๋ฆฌ)์ด๋ ๊ฒ ํ๋ฉด์ฌ๊ณ ์ฐจ๊ฐ โ Inventory ํ๋ง UPDATE (ํซ์คํ์ ์ฌ์ ํ ์์ง๋ง ๋ฉํ๋ฐ์ดํฐ ํ์ ์ ๊ฑด๋๋ฆผ)๊ด๋ฆฌ์๊ฐ ์ํ ์ค๋ช ์์ โ Movies ํ๋ง UPDATE (์ฌ๊ณ ํธ๋ํฝ๊ณผ ์์ ๋ถ๋ฆฌ)๋ฐ๋ผ์, ๋ถ๋ฆฌํ๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.๋๋ฒ์งธ๋์ ํ๋ณ ์ฌ๊ณ ๊ด๋ฆฌ ์ ์ฑ ์ธ๋ฐ ์ด๊ธฐ์๋ ๋ชจ๋ ์์ดํ ์ด ๊ทธ๋ฅ ์๋๋ง ์๋ค๋ฉด OK ๋ ์ ์์ต๋๋ค.์๋ฅผ ๋ค์ด, Inventory { item_id, available_count } ์ด๋ ๊ฒ ๊ตฌ์ฑ๋๋ ๊ฒ์ ๋๋ค.ํ์ง๋ง ๋์ค์ ์๊ตฌ์ฌํญ์ด ์๊ธฐ๊ฒ ๋๋ฉด ํ์ฅ์ด ํ์ํฉ๋๋ค.์ ํ๋ณ๋ก ์๊ตฌ์ฌํญ์ ์๋์ ๊ฐ์ ๊ฒ ์ ๋๋ค.DVD/๋ธ๋ฃจ๋ ์ด โ ๋ง๋ฃ์ผ ์์์ํ โ ์ ํต๊ธฐํ ํ์์ฝ์ํธ ํฐ์ผ โ ์ข์ ๋ฒํธ, ๊ตฌ์ญ ํ์์ ์์ฑ โ ๋ง๋ฃ์ผ + ๋์ ๋์ฌ ์ ์ ํ ํ์NFT ๋ ํ โ ์์ ๊ถ ์ด์ ๋ก์ง ํ์๋ค์ํ ์ ํ๊ณผ ํ์ฅ์ด ํ์ํ ๊ฒ์ ๋๋ค.๊ทธ๋์ ์๋์ ๊ฐ์ด 1๋ฒ ์ด๊ธฐ๋ถํฐ 3๋ฒ์ผ๋ก ์ ์ ์ ๊ทธ๋ ์ด๋ ํ๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆด ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.JSONB / JSON ์ปฌ๋ผ์ผ๋ก ์ ์ฐ ์์ฑ ๋ณด๊ด (PostgreSQL, DynamoDB ๋ฑ) โ ์ด์ค๋ฐ์ ์ ์ผ ๋ง์ด ์์์ง ๋ถํ (Vertical Partitioning)๊ณตํต: InventoryCommonDVD์ฉ: InventoryDVD (expires_at ๋ฑ)Food์ฉ: InventoryFood (expiry_date, batch_no) โ JOIN์ ๊ท์ฐฎ์ง๋ง ํ์ ์์ ์ฑ ์ต๊ณ ์ํ ๋ถํ + Polymorphic Association (์ ๊ฐ ์ ์ผ ์ถ์ฒํ๋ ์ต์ข ์งํํ) Inventory { id, item_id, item_type, available_count, reserved_count, โฆ }๋ณ๋ ํ์ฅ ํ ์ด๋ธ๋ค โ item_type์ด โdvdโ๋ฉด InventoryDVD ํ ์ด๋ธ ์กฐ์ธ โ item_type์ด โticketโ๋ฉด InventoryTicket ํ ์ด๋ธ ์กฐ์ธ (Uber๋ ๊ฒฐ์ ์๋จ, Netflix๋ ์ฝํ ์ธ ๋ณ ๊ถํ ์ด๋ ๊ฒ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.)์ด๊ธฐ์ JSONB๋ก ํ ๋ค์, ํน์ ์์ดํ ์ ํ์ด ๋๋ฌด ๋ณต์กํด์ง๋ฉด ๊ทธ๋ 3๋ฒ์ผ๋ก ๋ถ๋ฆฌํฉ๋๋ค.๊ทธ๋ฆฌ๊ณ ๋ง์ํ์ ํธ๋ํฝ์ด ์ ๋ง ๋ง์์ง๋ฉด available_count ์ฐจ๊ฐ์ ๊ฒฐ๊ตญ Redis / DynamoDB ๊ฐ์ ๋ถ์ฐ ์นด์ดํฐ๋ก ์ฎ๊ธฐ๊ณ , DB๋ ์ด๋ฒคํธ ์์ฑ์ด๋ ์ฌ๊ฐ ํจํด์ผ๋ก ์ต์ข ์ผ๊ด์ฑ๋ง ๋ง์ถฅ๋๋ค. (๋ทํ๋ฆญ์ค DVD ์ฌ๊ณ , ์๋ง์กด ์ฌ๊ณ ๋ชจ๋ ์ด๋ ๊ฒ ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค.)๊ฐ์ฌํฉ๋๋ค.์ข์ ํ๋ฃจ ๋์ธ์!
- 0
- 2
- 40
Q&A
Matching Service์ MQ ํ์์ฑ, Cassandra์ ํ์์ฑ, Cassandara - RDB ๋๊ธฐํ
์๋ ํ์ธ์. ํ์ฌํ๋,๋จผ์ ์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ์ข์ ์ง๋ฌธ์ ํด์ฃผ์ ์ ๊ธฐ์๋ค์ Matching Service์ MQ์ /swipe์ matching ์๋ต๊ฐ ๊ฐ์์์๋ REST API๋ ์ง์ฐ์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก MQ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๋ง์ํ์ จ์ต๋๋ค. ์ด๋ API ๋ช ์ธ์ ์๋ matching ๊ฐ์ ํด์์ด ํท๊ฐ๋ฆฝ๋๋ค. matching์ swipe ์์ ์์ ์์ ์ด ์๋์ ๋งค์นญ๋์๋์ง ์ ์ ์๋ ๊ฐ์ด๋ผ๊ณ ์๊ฐ๋๋๋ฐ, ๊ทธ๋ฌ๋ฉด ๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒ ์๋๊ฐ ์๊ฐ์ด ๋ญ๋๋ค. ์ฆ Cassandra์์ inverse swipe์ด ์กด์ฌํ๋์ง๋ฅผ ํ์ธํ ๋ค์์ผ API ์๋ต์ ๋ณด๋ผ ์ ์๋ ๊ฒ ์๋๊ฐ์? ๊ฐ์์์๋ /swipe๋ ๋น ๋ฅด๊ฒ โ์ ์โ๋ง ์๋ตํ๊ณ , ๋งค์นญ ํ์ ์ MQ ๊ธฐ๋ฐ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์์ต๋๋ค. ์ข ๋ ์ธ๋ถ์ ์ผ๋ก ๋ง์ ๋๋ฆฌ๋ฉด, /swipe๋ 20โ40ms ๋ด์ โ์์ฒญ์ ์ ์ํ๋ค(accepted)โ๊ณ ๋ง ๋๋ ค์ฃผ๊ณ , ์ค์ ๋งค์นญ ํ์ ์ MQ(Kafka/SQS)๋ก ํ๋ ค Matching Service๊ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌํฉ๋๋ค. ํ์ง๋ง ์ ๊ตณ์ด ๋น๋๊ธฐ๋ฅผ ํ์๋๋์ธ๋ฐ, inverse swipe ๋ฅผ ๋๊ธฐ๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด Region ๊ฐ์ ์ง์ฐ ๋๋ hot partition ์ด ์ธ๊ธฐ์๋ ์ฌ์ฉ์์๊ฒ ๋ฐ์ํ ์ ์๋ ๋ถ๋ถ ๊ทธ๋ฆฌ๊ณ ์ค์์ดํ๋ ์ด๋น ์์ญ๋ง๊ฑด์ ๋ฐ์ดํฐ ์ฐ๊ธฐ๊ฐ ๋ฐ์ํ๋ ์ ์ ๊ณ ๋ คํด์ ๋ณ๋ชฉ, ์ฆ ์์ญ๋ง ๊ฑด์ ์ฐ๊ธฐ์ ๋ถํ์ ์ทจ์ฝํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ด์์ ์์ ๋ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ์์ต๋๋ค. ๋ฐ๋ผ์, /swipe ์๋ต์ 20โ40ms ๋ด์ accepted๋ง ๋ณด์ฅํ๊ณ , ์ค์ ๋งค์นญ ์ฌ๋ถ๋ Kafka/SQS๋ก ์ ๋ฌ๋ ์ด๋ฒคํธ๋ฅผ Matching Service๊ฐ ์ฒ๋ฆฌํด WebSocket/ํธ์๋ก ์ต์ข ํต์งํฉ๋๋ค.Cassandra์ ํ์์ฑRDB ์กฐํ๋ง์ผ๋ก inverse swipe ์ฌ๋ถ๋ฅผ ํ์ ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด Cassandra๋ ์บ์ฑ ์ฉ๋๋ก ์ฌ์ฉํ ๊ฒ์ด๋ผ๊ณ ๋ณด์์ผ ํ๋์? ์๋ ์ค๊ณ์์ Cassandra๊ฐ ์์ฐ์ค๋ฝ๊ฒ ๋์ ๋ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.Cassandra ์ ๊ฒฝ์ฐ๋ inverse swipe ์ฌ๋ถ๋ฅผ ์ฌ์ค์ ๋์๊ฒ ์จ ์ข์์ ๋ฆฌ์คํธ ์ฆ, ์ธ์ ๋ฆฌ์คํธ์ ๊ตฌ๊ฐ์ ๋งค์ฃผ ์์ฃผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Cassandra ๋ ๋ถํ๊ฐ ์ผ์ด๋๋ swipe ๋ฅผ ์ธ๊ฒ ๋ฐ์์ ํํฐ์ ํค = ์ฌ์ฉ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต๊ทผ ๋ฒ์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ณตํฉ๋๋ค. ๋ฌผ๋ก RDB ๋ก๋ ๋ถ๊ฐ๋ฅํ์ง ์์ง๋ง, ๋๊ท๋ชจ์์ ์ค๋ฉ๊ณผ ์ธ๋ฑ์ค ๋๋ Race condition ๊ณผ ๊ฐ์ ๋น์ฉ์ด ์ปค์ ธ ์ด ๋น์ฉ๊ณผ ์ง์ฐ์ด ๊ธ์ฆํ ์ ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ฐ์ดํฐ ์ ๊ทผ์ ๋จ์ผ ํํฐ์ ์ ์ต๊ทผ ๋ฒ์๊ฐ ๋๊ธฐ ๋๋ฌธ์ Cassandra ์ ์ข ๋ ์ ํฉํ๋ค๊ณ ํ ์ ์์ต๋๋ค. ์ข์ ์ง๋ฌธ์ ํด์ฃผ์ จ์ต๋๋ค. Cassandra - RDB ๋๊ธฐํ ์ฌ๋ถswipe ๊ธฐ๋ก์ RDB์ Cassandra์๋ ๋ชจ๋ ์ ์ฅํ ๋, ์ผ์์ ์ค๋ฅ ๋ฑ์ผ๋ก ํ์ชฝ์๋ง ์ ์ฅ๋ ์๋ ์์ ๊ฒ ๊ฐ์๋ฐ, ์ด๋ฐ ์ํฉ์ ๋๋นํด RDB์ Cassandra ๊ฐ ๋๊ธฐํ๊ฐ ํ์ํ์ง ๊ถ๊ธํฉ๋๋ค.ํ์ชฝ๋ง ์ ์ฅ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ํฉ์ ๋๋ถ๋ถ Consumer ์ ์ง์ฐ ๋๋ ์ผ์์ ์ธ ์คํจ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์๋๋ก ๋ณต๊ตฌ ๋ ์ ์์ต๋๋ค. ๋ณ๋์ ์๋ฐฉํฅ ๋๊ธฐํ ํธ๋์ญ์ ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค. ์คํ๋ ค ์ฅ์ ๊ฐ ์ผ์ด๋๋ ๋ฒ์๊ฐ ๋์ด๋๋ ๊ฒ์ด๋ผ ๊ถ์ฅ๋์ง ์์ต๋๋ค. ํ๋ฅญํ ์ง๋ฌธ์ ํด์ฃผ์ จ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ์ข์ ํ๋ฃจ๋์ธ์!
- 0
- 2
- 43
Q&A
Imgur ์ด๋ฏธ์ง ํธ์คํ ์๋น์ค ์ง๋ฌธ
์๋ ํ์ธ์. ์ฅ์คํ๋,๋จผ์ ์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌ์ ๋ง์ ๋๋ฆฝ๋๋ค.์์ฃผ ์ข์ ์ง๋ฌธ์ ํด์ฃผ์ ์ ๊ธฐ๋ถ์ด ์ข์์ง๋ ํ๋ฃจ์ ๋๋ค. PreSigned URL ์ ๋ฐ๊ธ ํ ํ ํด๋ผ์ด์ธํธ์์ ์ง์ direct ๋ก blob storage ์ฆ, AWS S3 ๋ฅผ ์์๋ก ๋ค์ด ํด๋น blob storage ๋ก ์ ๋ก๋ ๋ฉ๋๋ค. ๊ทธ ๊ณผ์ ์์ ์ฒญํฌ์ ์งํ์ํฉ์ ํ์งํ๊ณ ์ด ์งํ์ํฉ์ key-value storage ์ฆ nosql ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฐ์ดํธ ํ๋ ์์คํ ๊ตฌ์กฐ๊ฐ ๊ถ๊ธํ์ ๊ฒ์ผ๋ก ์ดํดํ์์ต๋๋ค. ์ฌ๊ธฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ direct ๋ก AWS S3 ์ pre-signed url ๋ก ์ ๋ก๋๋ฅผ ํ๊ฒ ๋๋๋ฐ ์ด ๊ณผ์ ์์ Multipart upload api ๋ฅผ ์ฌ์ฉํ์ฌ์ผ ์ฒญํฌ๊ฐ ๋ถํ ๋์ด s3 ์ ์ ๋ก๋ ๋๊ฒ ๋ฉ๋๋ค. ๊ทธ ํ์ Key-value storage ์๋ ์๋์ ๊ฐ์ด ์ ์ฅ์ ํฉ๋๋ค. { "id": "ul_xxx", "userId": "u1", "key": "uploads/2025/10/img.png", "uploadId": "XYZ", "partSize": 8388608, "status": "INITIATED", "totalBytes": 123456789, // ์๋ฉด ์ ์ฅ "bytesUploaded": 0, "partsDone": [], // [{partNumber, etag, size}] "expiresAt": "...", "lastHeartbeatAt": "..." }๊ทธ๋ฆฌ๊ณ ๋์ ํด๋ผ์ด์ธํธ๋ ํ์ผ์ ์ฒญํฌ๋ก ๋ถํ ํด์ s3 ์ ์ง์ ์ ๋ก๋๋ฅผ ํ๊ฒ ๋๊ณ ์ ์ก๋ ๋ฐ์ดํธ๋ฅผ ์์คํ ์ ๋ชฉ์ ์ ๋ฐ๋ผ WS(์น์์ผ)/SSE/HTTP ๋ก ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ํฉ๋๋ค. ๊ฐ ํํธ๊ฐ ์ ๋ก๋ ๋๋ฉด ์๋ตํค๋์ ETag ๋ฅผ ์ฝ์ด์ "partsDone": [], // [{partNumber, etag, size}] ์ ์ ๋ฐ์ดํธํด์ bytesUploaded๋ฅผ ๊ฐฑ์ ํ์ฌ ๊ทผ์ฌ % ๊ณ์ฐ ํ๋ ๋ฐฉ์์ผ๋ก ์์คํ ์ ์ค๊ณํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ s3 ๋ฒํท์ Event Notification (SQS, SNS, Lambda) ์ ์์ ํด์ status ๋ฅผ ์๋ฃ ์ฒ๋ฆฌํ๊ณ ํ์์์ ์ ํ ์ ์์ต๋๋ค. ํ์์์ ์ ์์๋ก ์ธ๋ค์ผ, ๋ฆฌ์ฌ์ด์ฆ ๋ฑ์ด ์์ต๋๋ค. ํ์ง๋ง, ํด๋ง polling ๋ฐฉ์์ ํด๋ง์ ๋น์ฉ,์ง์ฐ๋ง ๋๋ฆฌ๊ณ ์ ํ๋๋ ๋ฎ์์ ๊ถ์ฅ๋์ง ์์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋คํธ์ํฌ ๋๊น ์ uploadId๋ก ListParts ์กฐํํด์ ๋ฏธ์๋ฃ ์ฒญํฌ ๋ถํฐ ์ฌ์๋ ํ ์ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ์ข์ ํ๋ฃจ ๋์ธ์!
- 0
- 2
- 45
Q&A
์ฟ ํฐ ๋ฌธ์
์๋ ํ์ธ์ nameunskadms ๋, ์๋ก์ด ์ฟ ํฐ์ ๋ฐ๊ธํด๋๋ ธ์ต๋๋ค. https://inf.run/1D24g๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 47
Q&A
Redis ๋๋ค ๊ฐ ์ถ๊ฐ ์ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
์๋ ํ์ธ์ ๊ฐํ ํ ๋,์ข์ ์ง๋ฌธ์ ํด์ฃผ์ จ์ต๋๋ค.Redis๋ ๋ด๋ถ์ ์ผ๋ก ๊ฐ ํค์ ๋ํ ๋ฉํ๋ฐ์ดํฐ(์: ๋ฐ์ดํฐ ํ์ , ๋ง๋ฃ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์์น ๋ฑ)๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ด ๋ฉํ๋ฐ์ดํฐ๋ Redis ๋ด๋ถ์ in-memory ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ ์ฅ๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋ณ๋๋ก Map์ด๋ ๋์ ๋๋ฆฌ ํํ๋ก ์ธ๋ถ์์ ๊ด๋ฆฌํด์ค ํ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Redis๋ ํด์ ํ ์ด๋ธ ๊ธฐ๋ฐ์ dict ๊ตฌ์กฐ๋ฅผ ํตํด ํค-๊ฐ์ ์ ์ฅํ๊ณ ํ์ํ ์ ์๋๋ก ์ค๊ณ๋์ด ์์ด์ O(1) ์๊ฐ ๋ณต์ก๋๋ก ํค ํ์์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด dict ์์ฒด๊ฐ Redis ๋ด๋ถ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๊ตฌ์กฐ์ด๋ฉฐ, Redis๊ฐ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋น ๋ฅด๊ฒ ํค๋ฅผ ์ฐพ์ ์ ์๊ฒ ํด์ค๋๋ค. ์ฆ, ์ง๋ฌธํ์ โ๋ฉํ๋ฐ์ดํฐ๋ฅผ programmaticallyํ๊ฒ Map์ด๋ ๋์ ๋๋ฆฌ์ ์ ์ฅํ๋ ์๋ฏธ๋โ๋ ์ง๋ฌธ์ ์๋์ค์ ๊ฐ๊น๊ณ , Redis๊ฐ ์ด๋ฏธ ๋ด๋ถ์ ์ผ๋ก ์ด๋ฐ ๋ฉํ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ๊ด๋ฆฌํ ํ์๋ ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค
- 0
- 1
- 44
Q&A
์๋ฃ ๋ค์ด๋ก๋ ํญ๋ชฉ์ด ๋น์ด์์ด์
์๋ ํ์ธ์ inth ๋ ๋จผ์ ์๋ฃ ๋๋ฝ์ ๋ํด ์ฃ์กํ๋ค๋ ๋ง์ ๋๋ฆฌ๋ฉฐ,๋ฏธ๊ตญ ์๋ถ ๊ธฐ์ค ์ด๋ฒ์ฃผ ๋ด๋ก ์๋ฃ ๋๋ฝ๋ ๋ถ๋ถ์ ๋ํด์ ๋ณต๊ตฌ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 46
Q&A
Blob Storage์์ ํ์ผ ์ ๋ก๋์ ๋ํ ๋์์ฑ์ ์ด๋ป๊ฒ ์ ์ดํ ์ ์์๊น์?
์๋ ํ์ธ์. ์ด์ ํ๋, ๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค. ์ข์ ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.Blob Storage ๋๋ AWS S3์ฒ๋ผ ๊ฐ์ฒด ์ ์ฅ์์ ์ฉ๋์ด ํฐ ํ์ผ์ ์ ๋ก๋ํ ๋, ๋์ผํ ํ์ผ์ด ๋์์ ์ฌ๋ฌ ๋ฒ ์ ๋ก๋๋๋ ๋ฌธ์ ๋ ์ค์ ๋ก ๋ง์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ด ๋ฐ๋ก Pre-Signed URL ๊ธฐ๋ฐ ์ ๋ก๋์ ๋๋ค.Pre-Signed URL + ์กฐ๊ฑด๋ถ ์์ฒญ ์กฐํฉ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๋ฒ์์ ์ ๋ก๋ ์ ์ ํ์ผ์ ํด์(SHA-256 ๋ฑ)๋ฅผ ๊ณ์ฐํฉ๋๋ค.์ด ํด์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก S3 ๋๋ Blob Storage์ ์ ์ฅํ ํ์ผ์ ์ด๋ฆ(Key)์ ์ ํฉ๋๋ค.์: uploads/1a2b3c4d5e...์ด๋ฏธ ๋์ผํ ํด์์ ํ์ผ์ด ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค.์กด์ฌํ ๊ฒฝ์ฐ โ ์ ๋ก๋ ์๋ต (์ค๋ณต ๋ฐฉ์ง)์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ โ Presigned URL์ ๋ฐ๊ธํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํด๋ผ์ด์ธํธ๋ ํด๋น URL๋ก ์ง์ ์ ๋ก๋ํฉ๋๋ค.์ด๋ If-None-Match: ํค๋๋ฅผ ์ฌ์ฉํ๋ฉด, ๋์ผํ ํค์ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ ๊ฒฝ์ฐ ์ ๋ก๋๊ฐ ๊ฑฐ๋ถ(HTTP 412)๋์ด ์ค๋ณต ์ ๋ก๋๊ฐ ์๋ ๋ฐฉ์ง๋ฉ๋๋ค. ๋์ฉ๋ ํ์ผ์ด๋ผ๋ฉด Multipart Upload + ๊ฐ ํํธ๋ณ Pre-signed URL ์กฐํฉ์ผ๋ก ๋ณ๋ ฌ ์ ๋ก๋๋ ๊ฐ๋ฅํฉ๋๋ค.Presigned URL์ ์งง์ ์ ํจ์๊ฐ, ์ต์ ๊ถํ ์ค์ ์ผ๋ก ๋ณด์๋ ์์ ํ๊ฒ ์ ์งํ ์ ์์ด์. ๊ฒฐ๋ก ์ ์ผ๋ก, ํด์ ๊ธฐ๋ฐ ํ์ผ๋ช ์ง์ + Pre-signed URL + ์กฐ๊ฑด๋ถ ์ ๋ก๋ ์กฐํฉ์ Blob Storage ํ๊ฒฝ์์ ๋์ ์ ๋ก๋ ์ถฉ๋ ๋ฐฉ์ง์ ์ค๋ณต ์ ๋ก๋ ์ต์ํ์ ํจ๊ณผ์ ์ธ ๋ฐฉ์์ ๋๋ค.
- 0
- 2
- 67
Q&A
๊ด๊ณํ DB์์ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ์ถ๊ฐ์ ๋ํ ๋์ฒ ๋ฐฉ๋ฒ
์ข์ ์ง๋ฌธ์ ๋๋ค. ๋ต๋ณ์ด ๋ฆ์ด์ก๋ค์. ์์ฆ ๋น ํ ํฌ ํ ๊ณณ๊ณผ ์ด์ง ์ธํฐ๋ทฐ๊ฐ ์๊ธฐ๋ ํ๊ณ ์ด์ฌ๋ ํ๋๋ผ ๋ฆ์ด์ง ์ ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ๋ง์ ๋ถ๋ค์ด ๊ด๊ณํ DB๋ ์คํค๋ง ๋ณ๊ฒฝ์ด ์ด๋ ต๋ค๊ณ ์๊ณ ๊ณ์์ง๋ง, ์ค์ ๋ก ๋ํ ์๋น์ค์์๋ ์คํค๋ง ๋ณ๊ฒฝ์ ํํ๊ณ ์์ฐ์ค๋ฌ์ด ๊ณผ์ ์ ๋๋ค. ์ค์ํ ๊ฑด ๋ฌด์์ ๋ชจ๋ ํ๋๋ฅผ ์ฒ์๋ถํฐ ๋ค ์์ธกํด์ ์ค๊ณํ๋ ค๊ณ ํ๊ธฐ๋ณด๋ค, ๋ณํ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋ ๊ตฌ์กฐ์ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ถ๋ ๊ฑฐ์์. ์๋น์ค๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๊ณ์ํด์ ๋ณํฉ๋๋ค. ์ ์ ํ ์ด๋ธ์ age๊ฐ ์๋กญ๊ฒ ํ์ํด์ก๋ค๋ฉด, ๊ทธ๋ฅ ๋ค์์ฒ๋ผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋คALTER TABLE user ADD COLUMN age INT;์์ฆ ๋๋ถ๋ถ์ RDBMS ๋ ์ด๋ฐ ๋จ์ํ ์ปฌ๋ผ ์ถ๊ฐ ์์ ์ ๋ ผ๋ธ๋กํน non-blocking ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ์ค์๊ฐ ์๋น์ค ์ด์ ์ค์๋ ๋ฌธ์ ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.๋ํ, MVP ๋จ๊ณ์์ ๋ชจ๋ ํ๋๋ฅผ ์์ธกํด ๋ฃ์ผ๋ ค๋ค ๋ณด๋ฉด, ๊ณผํ ์คํค๋ง ์ค๊ณ๋ก ์ด์ด์ง๊ณ ,์ด๋ ์คํ๋ ค ์๋น์ค ์๋์ ์ ์ง๋ณด์์ฑ์ ๋จ์ด๋จ๋ฆฝ๋๋ค.๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๊ฑด ์๋ฒฝํ ์์ธก์ด ์๋๋ผ, ๋ณํ์ ๋์ ๊ฐ๋ฅํ ์ ์ฐํ ์ค๊ณ๋ฅผ ํ๋ ๊ฒ ์ ๋๋ค.์ค๋ฌด์์๋ ํต์ฌ ๋๋ฉ์ธ์ ์ง์คํด ์๊ณ ๋ช ํํ ์คํค๋ง๋ก ์ถ๋ฐํ๊ณ , ๋ณํ์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ํ์ฅํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
- 0
- 2
- 73
Q&A
AP ์์คํ ์ด ์ ์์๊ฑฐ๋์ ์ ์ฉ๋ ์ ์๋ ์ด์
์๋ ํ์ธ์ ํ์ฌํ๋, ์๊ฐ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ, ์ข์ ํฌ์ธํธ๋ฅผ ์ง์ด์ฃผ์ จ์ต๋๋ค.์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋๊น ์๋ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด ์ ์์๊ฑฐ๋ ์ฌ์ดํธ๋ ์ ์ธ๊ณ์ ํฉ์ด์ง ์๋ง์ ๊ณ ๊ฐ์๊ฒ ๋น ๋ฅธ ํ์ด์ง ์๋ต์ ๋ณด์ฅํด์ผ ํฉ๋๋ค. ๋คํธ์ํฌ ์ง์ฐ์ด๋ ์ผ๋ถ ์๋ฒ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ โ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์ฒญ์ ๊ณ์ ๋ฐ์๋ค์ด๋โ AP ๊ณ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์๋ฅผ ๋ค์ด DynamoDB ๊ฐ์ ์์คํ ์ ๊ธ๋ก๋ฒ ์ผํ๋ชฐ์ ์๊ตฌ์ฌํญ๊ณผ ์ ๋ง์ต๋๋ค. ์๋ํ๋ฉด, ์ฆ์ ์๋ฒฝํ ์ผ๊ด์ฑ์ด ์๋์ด๋ ๋๋ ์์ญ์ด ๋ง์์ ๋ฌผ๋ก ๊ฒฐ์ ๋ ์ฃผ๋ฌธ ํ์ ๊ฐ์ ๋ถ๋ถ์ ๊ฐํ ์ผ๊ด์ฑ์ด ํ์ํ์ง๋ง, ์ํ ์์ธ ์กฐํ๋ ์ฅ๋ฐ๊ตฌ๋์ฒ๋ผ โ์ฝ๊ฐ์ ์ง์ฐโ์ด ์ฌ์ฉ์์๊ฒ ํฐ ๋ถํธ์ ์ฃผ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์์ปจ๋ ์ฌ๊ณ ์๋์ด ์ค์ ๋ณด๋ค ๋ช ์ด ๋ฆ๊ฒ ์ ๋ฐ์ดํธ๋ผ๋, ๊ณ ๊ฐ ๊ฒฝํ์๋ ํฌ๊ฒ ์ํฅ์ ์ฃผ์ง ์์ฃ . ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ด๋ฐ ์์ญ์ AP ๋ชจ๋ธ์ โ์ต์ข ์ผ๊ด์ฑโ์ ๋ฐ์๋ค์ด๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๊ธฐํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง์ถฐ ๊ฐ ์ ์์ต๋๋ค.์ค์ํ ํธ๋์ญ์ ์ ๋ณด๊ฐํด์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ ์ DynamoDB์๋ ํธ๋์ญ์ ๊ธฐ๋ฅ์ด ์์ด์, ๊ฒฐ์ ๋ ์ฃผ๋ฌธ ํ์ ๊ณผ ๊ฐ์ด โ์ ๋ ๋์น ์ ์๋โ ์์ ์ CP์ฒ๋ผ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณํ ์ ์์ต๋๋ค. ์ฆ, ์ ์ฒด ์๋น์ค๋ AP๋ก ์ด์ํ๋ฉด์๋, ๋ฏผ๊ฐํ ๋๋ฉ์ธ์์๋ ํธ๋์ญ์ ์ ๊ฑธ์ด ๊ฐํ ์ผ๊ด์ฑ์ ํ๋ณดํ๋ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค. ์ข์ ํ๋ฃจ ๋์ธ์!
- 0
- 2
- 81
Q&A
์ฑํ ์ ์์ํ DB๋ก RDB๋ฅผ ์ ํํ ์ด์ ๋ ๊ถ๊ธํฉ๋๋ค
์๋ ํ์ธ์. ๋ชฉ๋ ๊ฐ๋ฐ์๋์ข์ ์ง๋ฌธ์ ํด์ฃผ์ จ์ต๋๋ค.์ฑํ ๋ฐ์ดํฐ๋ฅผ ์์ํํ๋ ๋ฐ RDB๋ฅผ ์ ํํ ์ด์ ๋, ์ฑํ ์์คํ ์์ ๋ฉ์์ง์ ์ฌ์ฉ์, ํ์์คํฌํ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ช ํํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋๋ค. RDB๋ ์ด๋ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ๋ก ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ณ , ๋ฉ์์ง ์ ์ก ์์๋ ์ฌ์ฉ์๊ฐ์ ๊ด๊ณ๋ฅผ ์ ํํ๊ฒ ๋ณด์ฅํ๋ ๋ฐ ์ ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด, ๋ฉ์์ง ID, ๋ฐ์ ์, ์์ ์, ์ ์ก ์๊ฐ์ ํ๋์ ๋ ์ฝ๋๋ก ์ ์ฅํ๋ฉด์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.๋ํ, RDB๋ ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ฒฉ๋ฆฌ์ฑ, ์ง์์ฑ) ์์ฑ์ ์ง์ํด ๋ฉ์์ง ์ ์ก ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๋ฐ์ดํฐ๊ฐ ์์๋์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋์์ ์ฝ์ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์์ ์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ ์ ์์ต๋๋ค.์ฟผ๋ฆฌ ํจ์จ์ฑ๋ ์ค์ํ๋ฐ, RDB๋ ์กฐ์ธ(JOIN)์ ํตํด ์ฌ์ฉ์, ์ฑํ ๋ฐฉ, ๋ฉ์์ง ๊ฐ ๊ด๊ณ๋ฅผ ํจ์จ์ ์ผ๋ก ์กฐํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๊ทธ๋ฃน์ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์๊ฐ์์ผ๋ก ๊ฐ์ ธ์ค๊ฑฐ๋ ํน์ ์ฌ์ฉ์๊ฐ ๋ฐ์ ๋ฉ์์ง๋ง ํํฐ๋งํ๋ ์์ ์ด ์ฉ์ดํฉ๋๋ค.์ค์ ์ฌ๋ก๋ฅผ ๋ณด๋ฉด, WhatsApp์ ์ด๊ธฐ ์ํคํ ์ฒ์์ MySQL ๊ฐ์ RDB๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ, Slack๋ MySQL์ ์ฌ์ฉํด ๋ฐ์ดํฐ ์ ์ฅ์ ๊ด๋ฆฌํ์ต๋๋ค์ฐธ๊ณ ๋งํฌ: (https://slack.engineering/scaling-datastores-at-slack-with-vitess/)์ง๋ฌธ์์ ์ฑํ ์ ๊ฐ๊ฒฐํฉ ํธ๋์ญ์ ์ด ๋ถํ์ํด ๋ณด์ธ๋ค๊ณ ์ธ๊ธํด์ฃผ์ จ๋๋ฐ, ์ด๋ ๋ถ๋ถ์ ์ผ๋ก ๊ณต๊ฐํ ์ ์์ต๋๋ค. NoSQL์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ด ๋ฐ์ด๋ ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์ ๊ฐ์ ์ด ์์ต๋๋ค. ํ์ง๋ง ์ฑํ ์์คํ ์์๋ ๋จ์ํ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๊ฒ๋ฟ ์๋๋ผ, ์ฝ์ ์ํ ์ ๋ฐ์ดํธ, ๊ทธ๋ฃน ์ฑํ ๋ฉค๋ฒ ๊ด๋ฆฌ ๋ฑ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ์ค์ํ ์์ ์ด ์์ต๋๋ค.RDB๋ ์ด๋ฐ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ ํตํด ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ง๋ง, NoSQL์ ๊ธฐ๋ณธ์ ์ผ๋ก eventual consistency(์ต์ข ์ผ๊ด์ฑ)๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ค์๊ฐ์ฑ์ด ์ค์ํ ์ฑํ ์์ ์ผ์์ ์ธ ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ์์ง๊ฐ ํ ์ฌ์ฉ์์๊ฒ๋ ํ์๋์์ง๋ง ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ๋ ์์ง ๋ฐ์๋์ง ์์ ์ํฉ์ด ์๊ธธ ์ ์์ต๋๋ค.๋ํ, RDB๋ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํตํด ๋ณต์กํ ์ฟผ๋ฆฌ์ ๋ฐ์ดํฐ ๊ด๊ณ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ด, ์ฑํ ์ฑ์ ์ด๊ธฐ ์ค๊ณ์ ์ ์ง๋ณด์์์ ์ ๋ฆฌํฉ๋๋ค. NoSQL์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ๋น๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ ๊ฐํ์ง๋ง, ์ฑํ ๋ฐ์ดํฐ์ ํน์ฑ๊ณผ ์ด๊ธฐ ์ค๊ณ์ ๋จ์ํจ์ ๊ณ ๋ คํ ๋ RDB๊ฐ ๋ ์ ํฉํ ์ ์์ต๋๋ค.์ค์ ์ฌ๋ก์์, WhatsApp์ ์ด๊ธฐ์๋ RDB๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ, ์ดํ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด์ Mnesia ๊ฐ์ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋์ ํ์ง๋ง, ์ด๋ RDB์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํ ๋ณด์กฐ์ ์ธ ์ ํ์ด์์ต๋๋ค์๋ ์ด๋ฏธ์ง์ ๋งํฌ๋ฅผ ํตํด ํด๋น ๋ด์ฉ์ ์ฐธ๊ณ ํ์ค ์ ์์ต๋๋ค!(์ฌ์ง)https://www.cometchat.com/blog/whatsapps-architecture-and-system-design์ข์ ํ๋ฃจ ๋์ธ์!
- 0
- 2
- 166





