DB Scaling Alternatives.md - 100-hours-a-week/KTB4-17th-wiki GitHub Wiki
Write DB μ¬μμ κ³ μ νκ³ Read DBλ₯Ό μμ 1λ + νΌν¬ μ μΆκ°νλ ꡬ쑰. μ€λ¨ μκ°μ΄λ 리μ€λ© λΆλ΄ μμ΄ Read DBλ₯Ό νμ₯κ³Ό μΆμν μ μλ€. λ€λ§ νμ¬ λΆνλ λ¨μΌ μΈμ€ν΄μ€ μ©λμ μκ°νμ λ μ΄κΈ°λΆν° λΆλ¦¬ν κ·Όκ±°κ° μμ΄ μ½κΈ° λΆνκ° μκ³μΉμ κ·Όμ νλ©΄ RDS 리λ λ νλ¦¬μΉ΄λ‘ νμ μμ μ μ μ©νλ€.
μ΄κΈ° μ€κ³μμλ μ΄ λ°©μμ μ±νμΌλ‘ λμμΌλ, λ¨μΌ RDSλ‘ μΆ©λΆνλ€λ λΆν ν μ€νΈ κ²°κ³Όμ λ°λΌ "νμ μμ μ μ μ©νλ ν보"λ‘ μ‘°μ νλ€.
ββββββββββββββββ
β Backend β
ββββββββ¬ββββββββ
β
ββββββββββββββ΄βββββββββββββ
β β
Write Read
β β
βΌ ββββββββββ΄βββββββββ
ββββββββββββββββ βΌ βΌ
β Write DB β 볡μ ββββββββββββββββ ββββββββββββββββ
β μμ κ³ μ β ββββββΆ β Read DB 1 β β Read DB 2 β
ββββββββββββββββ β μμ β β νΌν¬ λλ§ β
β ββββββββββββββββ ββββββββ²ββββββββ
βββββββββββββββββββββ 볡μ ββββββββββββββ
- μ¬μ©μκ° Write μμ²μ 보λΈλ€.
- Write DBκ° λ°μ΄ν°λ₯Ό λ³κ²½νλ€.
- Write DBκ° λ³κ²½ λ΄μ©μ λ‘κ·Έμ κΈ°λ‘νλ€.
- Write DBκ° Read DBμ λ°μμ κΈ°λ€λ¦¬μ§ μκ³ ν΄λΌμ΄μΈνΈμ μ±κ³΅ μλ΅μ 보λΈλ€.
- Read DBκ° λ‘κ·Έλ₯Ό κ°μ Έμ Relay Logμ μ μ₯νλ€.
- Replicaμ μ€λ λκ° Relay Logλ₯Ό μμλλ‘ λ°μνλ€.
- μΌμ μκ°μ΄ μ§λλ©΄ Write DBμ Read DBμ μνκ° κ°μμ§λ€.
리μ€λ© μΆμκ° μ΄λ ΅κ³ μ ν μ μ°κΈ° μ€λ¨ νμ. μ°κΈ° λΆνκ° λ§μμ κ³ λ €νμΌλ λ€μ΄ νμ μμ΄ μ΄μμ΄ λΆκ°λ₯ν΄ μ±ννμ§ μμλ€.
Read/Write DBλ₯Ό λΆλ¦¬ν λ€ Write DBλ§ μ€λ©ν΄ μ°κΈ° I/Oλ₯Ό μ¬λ¬ λ Έλλ‘ λΆμ°νλ ꡬ쑰. νΌν¬/λΉνΌν¬ νΈλν½ μ°¨μ΄κ° μ½ 9λ°°λΌ νΌν¬μ λ§μΆ° νμ₯λ μνλ₯Ό μ μ§νλ©΄ λλΉκ° ν¬κ³ λΉνΌν¬μ μΆμνλ €λ©΄ 리μ€λ©μ΄ νμνλ° μ΄ κ³Όμ μμ λ°μ΄ν° μ¬λ°°μΉμ μ°κΈ° μ€λ¨μ΄ λ°μν΄ μ±ννμ§ μμλ€.
μ€λ μΆμκ° μ΄λ €μ΄ μ΄μ
- μ€λ© ν€ μ¬λ°°μΉκ° νμνλ€. μΌκ΄λ ν΄μ±μΌλ‘ μ΄λ λ²μλ₯Ό μ€μΌ μλ μμ΄λ λ°μ΄ν° μ¬λ°°μΉ μ체λ₯Ό μμ¨ μλ μλ€.
- 무μ€λ¨ μΆμκ° μ΄λ ΅λ€. μ ν μ€ μ°κΈ° μμ²μ μν λ³λ νμ μ¬μ²λ¦¬κ° νμνλ€.
- λ§μ΄κ·Έλ μ΄μ μ€ μ°κΈ°λ₯Ό λκΈ°νν΄μΌ νλ€. μ°κΈ° DBλ λ³κ²½μ΄ κ³μ λ°μν΄ λκΈ°ν μ§μ°μ΄ μμ ν μ¬λΌμ§λ μμ μ 보μ₯νκΈ° μ΄λ ΅κ³ , μ΅μ’ μ ν μμ μλ μ ν©μ±μ μν΄ μ§§κ²λΌλ μ°κΈ°λ₯Ό μ€λ¨ν΄μΌ νλ€.
- μ κ±°ν μ€λλ₯Ό μ μ νκ³ μΆμ μμ μ μ€λΉνλ€.
- μ κ±°ν μ€λκ° λ΄λΉνλ ν€ λ²μλ₯Ό μ΄λ μ€λλ‘ μ΄μ ν μ§ κ²°μ νλ€.
- κΈ°μ‘΄ λ°μ΄ν°λ₯Ό μλ‘μ΄ λ΄λΉ μ€λλ‘ λ³΅μ¬νλ€.
- λ³΅μ¬ μ€ λ€μ΄μ¨ μΆκ° μ°κΈ°λ₯Ό μ λ΄λΉ μ€λμ λκΈ°ννκ³ λ°μ΄ν°λ₯Ό κ²μ¦νλ€.
- μ κ±° λμ μ€λμ μ°κΈ°λ₯Ό μΌμ μ€λ¨νλ€. (μμ²μ νμ 보κ΄νλ λ±μ μ²λ¦¬ νμ)
- νΈλν½μ μ λ΄λΉ μ€λλ‘ μ ννλ€.
- μ νμ νμΈν ν κΈ°μ‘΄ μ€λλ₯Ό μ κ±°νλ€.
μ°Έκ³ μλ£
- [MongoDB 곡μ λ¬Έμ β μ€λ ν΄λ¬μ€ν°μμ μ€λ μ κ±°](https://www.mongodb.com/ko-kr/docs/manual/tutorial/remove-shards-from-cluster/)
:μλΉμ€ νΉμ±μ νΌν¬ μμ μ΄ λͺ νν΄ μμ μλ μ€μΌμΌλ§μ λΉμ© λΉν¨μ¨μ΄λ€.
λΆνμ λ°λΌ λ€μ΄νμ μμ΄ μ©λμ΄ μλ μ‘°μ λλ κ΄λ¦¬ν μλΉμ€ λΆν λ°μ μμ μ νΉμ ν μ μλ κ²½μ°μ μ ν©νλ€. κ·Έλ¬λ μ°λ¦¬ μλΉμ€λ νΌν¬κ° μ€ν 8~10μλ‘ λͺ νν΄ μλ μ€μΌμΌλ§μ μ΄μ μ΄ ν¬μ§ μκ³ λΉμ©μ΄ λΉμΈλ€. λΆνκ° λ°μνμ§ μλ μμ μλ 7000λͺ μΌλ‘ κ½€ λ§μ μ¬μ©μκ° μ΄μ©νλ€.
μ°Έκ³ μλ£