π λ°μ΄ν°λ² μ΄μ€μ κ·λͺ¨ νμ₯
μ μ₯ν λ°μ΄ν°κ° λ§μμ§λ©΄ λ°μ΄ν°λ² μ΄μ€μ λν λΆνλ μ¦κ°νκ² λλ€. κ·Έλκ° μ€λ©΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¦μ€ν λ°©λ²μ μ°ΎμμΌ νλ€.
λ°μ΄ν°λ² μ΄μ€μ κ·λͺ¨λ₯Ό νμ₯νλ λ°λ λ κ°μ§ μ κ·Όλ²μ΄ μλ€.
π μμ§μ νμ₯
Scale-up μ΄λΌκ³ λ λΆλ₯΄λ μμ§μ κ·λͺ¨ νμ₯λ²μ κΈ°μ‘΄ μλ²μ λ λ§μ, λλ κ³ μ±λ₯μ μμ(CPU, RAM, λμ€ν¬ λ±)μ μ¦μ€νλ λ°©λ²μ΄λ€. μ΄λ¬ν μμ§μ μ κ·Όλ²μλ λͺ κ°μ§ μ¬κ°ν μ½μ μ΄ μλ€.
- λ°μ΄ν°λ² μ΄μ€ μλ² νλμ¨μ΄μλ νκ³κ° μμΌλ―λ‘ CPU, RAM λ±μ 무ν μ¦μ€ν μλ μλ€. μ¬μ©μκ° κ³μ λμ΄λλ©΄ ν λ μλ²λ‘λ κ²°κ΅ κ°λΉνκΈ° μ΄λ ΅κ² λ κ²μ΄λ€.
- SPOF(Single Point of Failure)λ‘ μΈν μνμ±μ΄ ν¬λ€.
- λΉμ©μ΄ λ§μ΄ λ λ€. κ³ μ±λ₯ μλ²λ‘ κ°μλ‘ κ°κ²©μ΄ μ¬λΌκ°λ κ²μ λΉμ°νλ€.
π μνμ νμ₯
λ°μ΄ν°λ² μ΄μ€μ μνμ νμ₯μ μ€λ©(sharding)μ΄λΌκ³ λ λΆλ₯΄λλ°, λ λ§μ μλ²λ₯Ό μΆκ°ν¨μΌλ‘μ¨ μ±λ₯μ ν₯μμν¬ μ μλ€. μλ κ·Έλ¦Όμ μμ§μ νμ₯λ²κ³Ό μνμ νμ₯λ²μ΄ μ΄λ»κ² λ€λ₯Έμ§ 보μ¬μ€λ€.
π μ€λ(Shard)? μ€λ©(Sharding)?
μ€λ©μ λκ·λͺ¨ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ€λ(shard)λΌκ³ λΆλ₯΄λ μμ λ¨μλ‘ λΆν νλ κΈ°μ μ λ§νλ€. μ¦, λ°μ΄ν°λ² μ΄μ€μμ λΆν λΆμ°μ μν΄ λ€μμ λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ₯Ό λΆμ° μ μ₯νλ κΈ°λ²μ΄λ€. λͺ¨λ μ€λλ κ°μ μ€ν€λ§λ₯Ό μ°μ§λ§ μ€λμ 보κ΄λλ λ°μ΄ν° μ¬μ΄μλ μ€λ³΅μ΄ μλ€.
μλμ κ·Έλ¦Όμ μ€λλ‘ λΆν λ λ°μ΄ν°λ² μ΄μ€μ μμ΄λ€. μ¬μ©μ λ°μ΄ν°λ₯Ό μ΄λ μ€λμ λ£μμ§λ μ¬μ©μ IDμ λ°λΌ μ νλ€. μ΄ μμμμλ user_id % 3μ ν΄μ ν¨μλ‘ μ¬μ©νμ¬ λ°μ΄ν°κ° 보κ΄λλ μ€λλ₯Ό μ νλ€.
λν, μλλ κ° μ€λ λ Έλμ μ¬μ©μ λ°μ΄ν°κ° μ΄λ»κ² 보κ΄λλμ§λ₯Ό 보μ¬μ€λ€.
π· μ€λ© ν€(Sharding Key)
μ€λ© μ λ΅μ ꡬνν λ κ³ λ €ν΄μΌ ν κ°μ₯ μ€μν κ²μ΄ λ°λ‘ μ€λ© ν€(sharding key)λ₯Ό μ΄λ»κ² μ νλλ νλ κ²μ΄λ€. μ€λ© ν€λ νν°μ ν€(partition key)λΌκ³ λ λΆλ₯΄λλ°, λ°μ΄ν°κ° μ΄λ»κ² λΆμ°λ μ§ μ νλ νλ μ΄μμ μΉΌλΌμΌλ‘ ꡬμ±λλ€. μ κ·Έλ¦Όμ κ²½μ°, μ€λ© ν€λ user_idμ΄λ€. μ€λ© ν€λ₯Ό ν΅ν΄ μ¬λ°λ₯Έ λ°μ΄ν°λ² μ΄μ€μ μ§μλ₯Ό 보λ΄μ΄ λ°μ΄ν° μ‘°νλ λ³κ²½μ μ²λ¦¬νλ―λ‘ ν¨μ¨μ λμΌ μ μλ€. μ΄ μ€λ© ν€λ₯Ό μ ν λλ λ°μ΄ν°λ₯Ό κ³ λ₯΄κ² λΆν ν μ μλλ‘ νλ κ² κ°μ₯ μ€μνλ€.
μ€λ©μ DB κ·λͺ¨ νμ₯μ μ€ννλ νΌλ₯ν κΈ°μ μ΄μ§λ§ μλ²½νμ§λ μλ€. μ€λ©μ λμ νλ©΄ μμ€ν μ΄ λ³΅μ‘ν΄μ§κ³ νμ΄μΌ ν μλ‘μ΄ λ¬Έμ λ μκΈ΄λ€.
- λ°μ΄ν°μ μ¬ μ€λ©(resharding) : μ¬ μ€λ©μ λ€μκ³Ό κ°μ κ²½μ°μ νμνλ€.
- λ°μ΄ν°κ° λ무 λ§μμ Έμ νλμ μ€λλ‘λ λ μ΄μ κ°λΉνκΈ° μ΄λ €μΈ λ
- μ€λ κ°μ λ°μ΄ν° λΆν¬κ° κ· λ±νμ§ λͺ»νμ¬ μ΄λ€ μ€λμ ν λΉλ κ³΅κ° μλͺ¨κ° λ€λ₯Έ μ€λμ λΉν΄ 빨리 μ§νλ λ
μ΄ κ²½μ°λ₯Ό μ€λ μμ§(shard exhaustion)μ΄λΌκ³ λ λΆλ₯΄λλ° μ΄λ° νμμ΄ λ°μνλ©΄ μ€λ ν€λ₯Ό κ³μ°νλ ν¨μλ₯Ό λ³κ²½νκ³ λ°μ΄ν°λ₯Ό μ¬λ°°μΉνμ¬μΌ νλ€. μμ ν΄μ(consistent hashing) κΈ°λ²μ νμ©νλ©΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
- μ λͺ
μΈμ¬(celebrity) λ¬Έμ : ν«μ€ν ν€(hotspot key) λ¬Έμ λΌκ³ λ λΆλ₯΄λλ°, νΉμ μ€λμ μ§μκ° μ§μ€λμ΄ μλ²μ κ³ΌλΆνκ° κ±Έλ¦¬λ λ¬Έμ μ΄λ€. μλ₯Ό λ€μ΄, BTS, λ΄μ€νΈ, μν₯λ―Ό,
JPark Let's goκ°μ μ λͺ μΈμ¬κ° μ λΆ κ°μ μ€λμ μ μ₯λλ λ°μ΄ν°λ² μ΄μ€κ° μλ€κ³ ν΄ λ³΄μ. μ΄ λ°μ΄ν°λ‘ μ¬ν κ΄κ³λ§ μ ν리μΌμ΄μ μ ꡬμΆνκ² λλ©΄ κ²°κ΅ ν΄λΉ μ€λμλ read μ°μ° λλ¬Έμ κ³ΌλΆνκ° κ±Έλ¦¬κ² λ κ²μ΄λ€. - μ‘°μΈκ³Ό λΉμ κ·ν(join and de-normalization) : μΌλ¨ νλμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬λ¬ μ€λ μλ²λ‘ μͺΌκ°κ³ λλ©΄, μ¬λ¬ μ€λμ κ±ΈμΉ λ°μ΄ν°λ₯Ό μ‘°μΈνκΈ°κ° νλ€μ΄μ§λ€. μ΄λ₯Ό ν΄κ²°νλ ν κ°μ§ λ°©λ²μ λ°μ΄ν°λ² μ΄μ€λ₯Ό λΉμ κ·ννμ¬ νλμ ν μ΄λΈμμ μ§μκ° μνλ μ μλλ‘ νλ κ²μ΄λ€.
'IT' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[IT] λ‘λλ°Έλ°μ(Load Balancer) (0) | 2023.03.27 |
---|