Design Map Service
μꡬμ¬ν
μμΉ κ°±μ / κ²½λ‘ μλ΄ / ETA(μμ λμ°© μκ°) / μ§λ νμ κΈ°λ₯ μ 곡
μ TB μμ€μ κ°κ³΅λμ§ μμ λλ‘ λ°μ΄ν°
λ€μν μ΄λ λ°©λ² μ§μ μλ΄(λ보 / λμ€κ΅ν΅ / μ°¨λ)
νμ¬ κ΅ν΅ μν© κ³ λ € νμ
κΈ°λ₯ λͺ©λ‘
μμ μꡬμ¬νμ μΆ©μ‘± μν€κΈ° μν κΈ°λ₯ λͺ©λ‘μ λ€μκ³Ό κ°λ€.
μ¬μ©μ μμΉ κ°±μ
κ²½λ‘ μλ΄ μλΉμ€(ETA ν¬ν¨)
μ§λ νμ
κ°λ΅μ κ·λͺ¨ μΆμ
DAU 10μ΅ λͺ , κ²½λ‘ μλ΄ κΈ°λ₯ μ£ΌλΉ 35λΆ μ¬μ©μ΄λΌκ³ κ°μ νμ λ, μ²λ¦¬ν΄μΌν νΈλν½μ λ€μκ³Ό κ°λ€.
ν루 μ¬μ©λ: 10μ΅ * 35λΆ / 7μΌ = 50μ΅ λΆ
ν΄λΌμ΄μΈνΈ GPS κ°±μ μ£ΌκΈ°: 15μ΄(λ§€μ΄ GPSλ₯Ό κ°±μ ν νμ μμ΄, λ³κ²½ λ΄μμ λͺ¨μλμλ€κ° 15μ΄λ§λ€ μ μ‘νλ€κ³ κ°μ )
QPS: 50μ΅ * 60μ΄ / 15μ΄ / 86,400μ΄(ν루) = μ½ 230,000QPS
μ΅λ QPS: 230,000 * 5 = 1,150,000QPS(5λ°°λ‘ κ°μ )
κ²½λ‘ μλ΄ μκ³ λ¦¬μ¦μ μν λλ‘ λ°μ΄ν° μ²λ¦¬
λλΆλΆμ κ²½λ‘ νμ μκ³ λ¦¬μ¦μ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§λ€.
λ°μ΄ν¬μ€νΈλΌ μκ³ λ¦¬μ¦μ΄λ A* μκ³ λ¦¬μ¦μ λ³μ’
λ μκ³ λ¦¬μ¦μ ν¬ν¨ν λͺ¨λ κ²½λ‘ νμ μκ³ λ¦¬μ¦μ λ Έλμ μ£μ§λ‘ μ΄λ£¨μ΄μ§ κ·Έλν μλ£ κ΅¬μ‘° μ¬μ©
μ μΈκ³ λλ‘λ§μ νλμ κ·Έλνλ‘ νννκ² λλ©΄, λ©λͺ¨λ¦¬ λ¬Έμ λ λ°μνκ³ , νμ μ±λ₯λ λ¨μ΄μ§κΈ° λλ¬Έμ κ·Έλνλ₯Ό κ΄λ¦¬ κ°λ₯ λ¨μλ‘ λΆν ν νμκ° μλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μ§μ€ν΄μ±κ³Ό λΉμ·ν λΆν κΈ°μ μ μ μ©ν΄ μμ 격μλ‘ λλκ³ , λλμ΄μ§ κ° κ²©μλ λ€λ₯Έ νμΌμ λν μ°Έμ‘°λ₯Ό μ μ§νμ¬ νμν νμΌλ§ λ‘λνλ λ°©μμ μ¬μ©νλ€.
κ°λ΅μ μ€κ³μ
μ§λ μλΉμ€λ₯Ό μ 곡νκΈ° μν΄ ν¬κ² μλ μΈ κ°μ§ κΈ°λ₯μΌλ‘ ꡬλΆν μ μλ€.
μμΉ μλΉμ€
μ¬μ©μ μμΉλ₯Ό κΈ°λ‘νλ μν
κΈ°λ‘ν λ°μ΄ν°λ‘ λ°μ΄ν° μ€νΈλ¦Όμ νμ©νμ¬ μμ€ν κ°μ λ° μ νν ETA μ°μΆ κ°λ₯
λ³κ²½ λ΄μμ λͺ¨μλμλ€κ° μΌμ μκ°λ§λ€ μ μ‘νλ λ°©μ μ¬μ©(μλ² λΆν κ°μ)
κ²½λ‘ μλ΄ μλΉμ€
μ¬μ©μμ μΆλ°μ§μ λμ°©μ§λ₯Ό μ λ ₯λ°μ μ΅μ κ²½λ‘λ₯Ό μ 곡
κΌ μ΅λ¨ μκ° κ²½λ‘μΌ νμλ μμ§λ§ μ νλλ 보μ₯λμ΄μΌ ν¨
μ§λ νμ
λͺ¨λ μ§λ λ°μ΄ν°λ₯Ό ν λ²μ λ‘λνλ κ²μ λΆκ°λ₯νλ―λ‘, νμν λΆλΆλ§ λ‘λνλ λ°©μ μ¬μ©
ν΄λΌμ΄μΈνΈμ μμΉ λ° νμ¬ νλ μμ€μ λ§λ μ§λ λ°μ΄ν°λ§ λ‘λ
νλ μμ€λ³λ‘ 미리 λ§λ€μ΄ λ μ§λ νμΌμ ν΄λΌμ΄μΈνΈμκ² μ μ‘
μμΈ μ€κ³
λ°μ΄ν° λͺ¨λΈ
μ§λ μλΉμ€μμλ μλ λ€ κ°μ§ λ°μ΄ν°λ₯Ό μ·¨κΈνκ² λλ€.
κ²½λ‘ μλ΄ νμΌ
μΈλΆ μ¬μ μλ κΈ°κ΄μ΄ μ 곡ν λλ‘ λ°μ΄ν° μ¬μ©(raw data)
κ²½λ‘ μλ΄ μκ³ λ¦¬μ¦μ νμ©ν μ μλλ‘ κ°κ³΅νμ¬ μ¬μ©
λ°μ΄ν° ν¬κΈ°κ° λ§€μ° ν¬λ―λ‘ S3 κ°μ κ°μ²΄ μ μ₯μμ μ μ₯νκ³ , μΊμ± μ¬μ©
μ¬μ©μ μμΉ
λλ‘ λ°μ΄ν° λ° κ²½λ‘ μλ΄ νμΌ κ°±μ μ μ΄μ©
μ€μκ° κ΅ν΅ μν©μ΄λ κ΅ν΅ μν© μ΄λ ₯ λ°μ΄ν° ꡬμΆμλ νμ©
μ§μ€μ½λ© λ°μ΄ν°
μ£Όμλ₯Ό μλ/κ²½λ μμΌλ‘ λ³ννλ μ 보 보κ΄
ν€-κ°μ λΉ λ₯΄κ² μ½μ μ μλλ‘ Redis μ¬μ©
κ³μ°ν΄ λ μ§λ νμΌ λ°μ΄ν°
νΉμ μμμ μ 보λ₯Ό μ·¨ν©νμ¬ λλ‘ λ° μμΈ μ λ³΄κ° ν¬ν¨λ μ΄λ―Έμ§ λ°μ΄ν°
μμμ λ§μ΄ μ¬μ©νκ³ μ€λ³΅ μμ²νλ κ²½μ°κ° λ§μΌλ―λ‘ μΊμ± μ¬μ©
μμΉ μλΉμ€
μ¬μ©μ μμΉ λ°μ΄ν° μ μ₯μλ ν€-κ° μ μ₯μλ₯Ό νμ©νλ NoSQL λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ κ²μ΄ μ’μλ°, κ·Έ μ΄μ λ λ€μκ³Ό κ°λ€.
μμΉ μ 보 μ λ°μ΄νΈκ° λΉλ²νκ² λ°μνλ―λ‘, λΉ λ₯Έ μ½κΈ°/μ°κΈ° μλκ° νμ
μμΉ μ λ³΄κ° μΌλ¨ λ³κ²½λλ©΄ μ΄μ λ°μ΄ν°λ μ€μνμ§ μμΌλ―λ‘, μΌκ΄μ±λ³΄λ€λ κ°μ©μ±μ΄ μ€μ
μ 쑰건μ κ³ λ €νμ λ Cassandra λ°μ΄ν°λ² μ΄μ€κ° μ ν©νλ€κ³ λ³Ό μ μκ³ , ν΄λΉ ν μ΄λΈμ λ€μκ³Ό κ°μ΄ ꡬμ±ν μ μλ€.
51
132053000
37.1234
127.1234
active
driving
λ°μ΄ν°λ² μ΄μ€ ν€: user_id + timestamp
νν°μ ν€: user_id
ν΄λ¬μ€ν°λ§ ν€: timestamp
μ§λ νμ
μ¬μ©μκ° λ³΄λ μ§λ ν¬κΈ°λ νλ μμ€μ λ§λ μΈλΆμ¬νμ 보μ¬μ£ΌκΈ° μν΄μ νλ μμ€λ³ μ§λ νμΌμ 미리 λ§λ€μ΄ λμ΄μΌ νλ€. κ΅¬κΈ λ§΅μ κ²½μ° μ΄ 21λ¨κ³λ‘ μ§λλ₯Ό νλνκ² λλλ°, μμ€μ ν λ¨κ³ μ¬λ¦΄ λλ§λ€ ν΄λΉ μμ€μ μν νμΌ μλ 4λ°°λ‘ μ¦κ°νκ² λλ€. λλ¬Έμ λ§μ μμ λ°μ΄ν°λ₯Ό μ μ₯ν΄μΌ νλλ°, μ΄λ₯Ό μ΄λ―Έμ§ λμ 벑ν°λ‘ κ΄λ¦¬νκ² λλ©΄ μ μ₯ 곡κ°μ μ μ½ν μ μλ€.
μ΄λ―Έμ§μ λΉν΄ λμ μμΆλ₯ λ‘ λ€νΈμν¬ λμν μ μ½
κ·Έ μΈμ λ§€λλ¬μ΄ νλ/μΆμ, λ λλ§ νμ§ ν₯μ λ±μ μ₯μ
κ²½λ‘ μλ΄ μλΉμ€
κ²½λ‘ μλ΄ μλΉμ€λ₯Ό μ 곡νκΈ° μν΄ νμν μ»΄ν¬λνΈλ€μ λ€μκ³Ό κ°λ€.
μ§μ€μ½λ© μλΉμ€: μ£Όμλ₯Ό μλ/κ²½λ μμΌλ‘ λ°κΏμ£Όλ μλΉμ€
κ²½λ‘ κ³ν μλΉμ€: νμ¬ κ΅ν΅ μν©κ³Ό λλ‘ μνμ μ κ°νμ¬ μ΅μ νλ κ²½λ‘ μ μ
μ΅λ¨ κ²½λ‘ μλΉμ€: μΆλ°μ§μ λͺ©μ μ§ μλ/κ²½λλ₯Ό μ λ ₯ λ°μ μ΅λ¨ κ²½λ‘ λ°ν
κ΅ν΅μ΄λ λλ‘ μν© κ³ λ € x
λλ‘ κ·Έλνλ κ±°μ μ μ μ΄λ―λ‘ λ°μ΄ν°λ₯Ό μΊμ±νμ¬ μ¬μ©
μμ λμ°© μκ° μλΉμ€: κ²½λ‘ κ³ν μλΉμ€μμ μ΅λ¨ κ²½λ‘ λͺ©λ‘λ₯Ό μμ νλ©΄ μμ λμ°© μλΉμ€λ₯Ό νΈμΆνμ¬ μμ μκ° μΆμ μΉ κ³μ°
μμ κ²°μ μλΉμ€: κ²½λ‘ κ³ν μλΉμ€μμ μΆμ μΉλ₯Ό ꡬνκ³ λλ©΄ ν΄λΉ λ°μ΄ν°λ€κ³Ό μ¬μ©μκ° μ μν νν°λ§ 쑰건(κ³ μλλ‘ μ μΈ λ±)μ μ μ©ν΄ μ΅μ κ²½λ‘ μΆμ²
μ¬μ©μκ° μΆλ°μ§μ λͺ©μ μ§λ₯Ό μ λ ₯νλ©΄, κ²½λ‘ κ³ν μλΉμ€λ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μΉλ€.
μΆλ°μ§μ λͺ©μ μ§λ₯Ό μ/κ²½λλ‘ λ³ν
μ/κ²½λλ‘ κ²½λ‘ κ³ν μλΉμ€ νΈμΆ
κ²½λ‘ κ³ν μλΉμ€λ μ΅λ¨ κ²½λ‘ μλΉμ€ νΈμΆ
μ΅λ¨ κ²½λ‘ μλΉμ€λ μΊμ±λ λλ‘ λ°μ΄ν°λ‘ μ΅λ¨ κ²½λ‘ κ³μ° ν λ°ν
λ°ν λ°μ μ΅λ¨ κ²½λ‘λ₯Ό μ΄μ©ν΄ μμ λμ°© μκ° μλΉμ€ νΈμΆ
μμ λμ°© μκ° μλΉμ€λ λλ‘ μνμ κ΅ν΅ μν©μ κ³ λ €ν΄ μμ μμ μκ° κ³μ° ν λ°ν
λ°ν λ°μ μμ λμ°© μκ°μ μ΄μ©ν΄ μμ κ²°μ μλΉμ€ νΈμΆ
μμ κ²°μ μλΉμ€λ μ¬μ©μκ° μ μν νν°λ§ 쑰건μ μ μ©ν΄ μ΅μ κ²½λ‘ μΆμ²
μ΅μ κ²½λ‘λ₯Ό μ¬μ©μμκ² λ°ν
μ μ‘ νλ‘ν μ½
κ²½λ‘ μλ΄ μ€ κ²°λ‘μ μν©μ΄ λ³κ²½λ μ μμΌλ―λ‘, λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμ μ μ‘ν μμ μ μΈ λ°©λ²μ΄ νμνλ€. μλ²μμ ν΄λΌμ΄μΈνΈμ μ΄ν°λ₯Ό 보λ΄λ νλ‘ν μ½λ‘λ λ€μκ³Ό κ°μ κ²λ€μ΄ μλ€.
λͺ¨λ°μΌ νΈμ μλ¦Ό: λ³΄λΌ μ μλ λ©μμ§ ν¬κΈ°κ° μ νμ μ΄κΈ° λλ¬Έμ κ²½λ‘ μλ΄ λ°μ΄ν°λ₯Ό 보λ΄κΈ°μλ μ ν©νμ§ μμ
μλ² μ μ‘ μ΄λ²€νΈ(SSE): μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μ΄λ²€νΈλ₯Ό 보λ΄λ κΈ°μ
μΉμμΌ: λ°μ΄ν° μ μ‘μ μ ν©, μλ°©ν₯ ν΅μ μ΄ νμν κ²½μ°κ° λ§κΈ° λλ¬Έμ μ ν©
μ°Έκ³ μλ£
Last updated
Was this helpful?