λ΄μ€ νΌλ λ?
ν νμ΄μ§ μ€μμ μ§μμ μΌλ‘ μ λ°μ΄νΈ λλ μ€ν 리λ€λ‘,
μ¬μ©μ μν μ 보 μ λ°μ΄νΈ, μ¬μ§, λΉλμ€, λ§ν¬, μ± νλ(app activity), κ·Έλ¦¬κ³ νμ΄μ€λΆμμ νλ‘μ°νλ μ¬λλ€, νμ΄μ§, λλ κ·Έλ£ΉμΌλ‘λΆν° λμ€λ 'μ’μμ(likes)' λ±μ ν¬ν¨νλ κ²
λΉμ·ν μ νμ λ¬Έμ λ‘ νμ΄μ€λΆ λ΄μ€ νΌλ, μΈμ€νκ·Έλ¨ νΌλ, νΈμν° νμλΌμΈ μ€κ³ λ±μ΄ μλ€κ³ νλ€.
1λ¨κ³. λ¬Έμ μ΄ν΄ λ° μ€κ³ λ²μ νμ
- λͺ¨λ°μΌ μ±, μΉ λͺ¨λ μ§μν΄μΌν¨
- μλ‘μ΄ μ€ν 리 μ¬λ¦¬κΈ° λ° λ³΄κΈ° λ€ κ°λ₯ν΄μΌνλ€.
- νΌλ λμ΄μ κ°λ¨νκ² μκ° νλ¦ μμ(reverse chronological order)μΌλ‘ : μ΅μ μ
- ν λͺ μ μ¬μ©μλ μ΅λ 5000λͺ μ μΉκ΅¬λ₯Ό κ°μ§ μ μμ
- νΈλν½ κ·λͺ¨λ μ½ 1,000λ§λͺ
- νΌλμλ μ΄λ―Έμ§λ λΉλμ€ μ€ν 리λ μ¬λΌμ¬ μ μμ
2λ¨κ³. κ°λ΅μ μ€κ³μ μ μ λ° λμ ꡬνκΈ°
1) νΌλ λ°ν(feed publishing) κ³Ό
μ¬μ©μκ° μ€ν 리 ν¬μ€ν νλ©΄ ν΄λΉ λ°μ΄ν°λ₯Ό Cacheμ DBμ κΈ°λ‘.
μ ν¬μ€ν μ μΉκ΅¬μ λ΄μ€νΌλμλ μ μ‘
2) λ΄μ€ νΌλ μμ±(news feed building)
λͺ¨λ μΉκ΅¬μ ν¬μ€ν μ μκ° νλ¦ μμμΌλ‘ λͺ¨μμ μμ±
μ λκ°μ§ λΆλΆμΌλ‘ λλμ΄μ Έ μμ
λ΄μ€νΌλ API
1) νΌλ λ°ν API (HTTP POST ννλ‘ μμ²μ 보λ΄λ©΄ λ¨)
2) νΌλ μ½κΈ° API (HTTP GET ννλ‘ μμ²μ 보λ΄λ©΄ λ¨)
νΌλ λ°ν
λ΄μ€νΌλ μμ±
3λ¨κ³. μμΈ μ€κ³
νΌλ λ°ν νλ¦ μμΈ μ€κ³
1) μΉ μλ²
μΈμ¦μ΄λ μ²λ¦¬μ¨ μ ν λ±μ΄ κΈ°λ₯λ μνν΄μΌ νλ€.
- μ¬λ°λ₯Έ μΈμ¦ ν ν°μ Authorization ν€λμ λ£κ³ APIλ₯Ό νΈμΆνλ μ¬μ©μλ§ ν¬μ€ν κ°λ₯νκ²
- μ€νΈ λ§κ³ μ ν΄ν μ½ν μΈ κ° μ¬λΌμ€λ κ±Έ λ§κΈ° μν΄ μκ° λΉ ν¬μ€ν μ μ ν
2) ν¬μ€ν μ μ‘(ν¬μμ) μλΉμ€
μ΄λ€ μ¬μ©μμ μ ν¬μ€ν
μ κ·Έ μ¬μ©μμ μΉκ΅¬ κ΄κ³μ μλ λͺ¨λ μ¬μ©μμκ² μ λ¬νλ κ³Όμ
ν¬μμμλ λ κ°μ§ λͺ¨λΈμ΄ μλλ°..
1. μ°κΈ° μμ μ ν¬μμ(fanout-on-write)νλ λͺ¨λΈ νΈμ(push)λͺ¨λΈ
μλ‘μ΄ ν¬μ€ν μ κΈ°λ‘νλ μμ μ λ΄μ€ νΌλ κ°±μ
μ₯μ
- λ΄μ€νΌλκ° μ€μκ°μΌλ‘ κ°±μ λκ³ μΉκ΅¬ λͺ©λ‘μ μλ μ¬μ©μμκ² μ¦μ μ μ‘λ¨
- μ ν¬μ€ν μ΄ κΈ°λ‘λλ μκ° λ΄μ€ νΌλκ° μ΄λ―Έ κ°±μ λλ―λ‘(pre-computed) λ΄μ€ νΌλλ₯Ό λ¦¬λ© μκ° μ€μ΄λ¬
λ¨μ
- μΉκ΅¬κ° λ§μ μ¬μ©μμ κ²½μ° μΉκ΅¬ λͺ©λ‘μ κ°μ Έμ€κ³ κ·Έ λͺ©λ‘μ μλ μ¬μ©μ λͺ¨λμ λ΄μ€ νΌλλ₯Ό κ°±μ νλ λ° λ§μ μκ°μ΄ μμλ μ μλ€. ν«ν€(hotkey) λ¬Έμ
- μλΉμ€λ₯Ό μμ£Ό μ΄μ©νμ§ μλ μ¬μ©μμ νΌλκΉμ§ κ³μ κ°±μ ν΄μ£Όλ―λ‘ μ»΄ν¨ν μμμ΄ λλΉ
2. μ½κΈ° μμ μ ν¬μμ(fanout-on-read)νλ λͺ¨λΈ ν(pull)λͺ¨λΈ
μμ²(on-demand) λͺ¨λΈ. μ¬μ©μκ° λ³ΈμΈ ννμ΄μ§λ νμλΌμΈμ λ‘λ©νλ μμ μ μλ‘μ΄ ν¬μ€νΈλ₯Ό κ°μ Έμ€κ² λ¨.
μ₯μ
- λΉνμ±νλ μ¬μ©μ νΉμ μλΉμ€μ κ±°μ λ‘κ·ΈμΈνμ§ μλ μ¬μ©μμ κ²½μ°μλ μ΄ λͺ¨λΈμ΄ μ λ¦¬ν¨ → λ‘κ·ΈμΈ μ κΉμ§λ μ΄λ€ μ»΄ν¨ν μμλ μλͺ¨νμ§ μμ
- λ°μ΄ν°λ₯Ό μΉκ΅¬ κ°κ°μ νΈμνλ μμ μ΄ νμ μμΌλ―λ‘ hotkey λ¬Έμ λν λ°μνμ§ μλλ€.
λ¨μ
- λ΄μ€ νΌλλ₯Ό μ½μ΄λ€μ΄λλ°μ λ§μ μκ°μ΄ μμλ μλ μλ€...
κ·Έλμ?
λκ°λ₯Ό μμ΄μ κ°μμ μ₯μ λ§ μ»μ΄κ°λλ‘ ν΄λ³΄κ² λ€.
λλΆλΆμ μ¬μ©μμ λν΄μλ push λͺ¨λΈμ μ¬μ©νκ³ , μΉκ΅¬λ νλ‘μ΄(follower)κ° μμ£Ό λ§μ μ¬μ©μμ κ²½μ°μλ νλ‘μ΄λ‘ νμ¬κΈ ν΄λΉ μ¬μ©μμ ν¬μ€ν μ νμν λ κ°μ Έκ°λλ‘ νλ pull λͺ¨λΈμ μ¬μ©ν΄μ μμ€ν κ³ΌλΆνλ₯Ό λ°©μ§ν΄λ³΄μ
νΌλ μ½κΈ° νλ¦ μμΈ μ€κ³
μ΄λ―Έμ§λ λΉλμ€ κ°μ λ―Έλμ΄ μ½ν μΈ λ CDN μ μ μ₯νμ¬ λΉ¨λ¦¬ μ½μ΄κ° μ μλλ‘..
μΊμ ꡬ쑰
CDN μ Content Delivery Network μ μ½μλ‘ μ½ν
μΈ μ μ‘ λ€νΈμν¬λ₯Ό μλ―Ένλ€.
ν λ§λλ‘ λμμ λ± λ€μν μ½ν
μΈ λ₯Ό 볡μ‘ν λ€νΈμν¬ νκ²½μμ μ¬μ©μμκ² μμ μ μΌλ‘ μ μ‘ν΄ μ£Όλ μλΉμ€
κ°μ μ μλ.... κ·Έλμ λΌλμκ±ΈκΉμ....?
νμ΄μ€λΆ: λ΄μ€νΌλλ μ΄μ©μκ° μνλ μ½ν μΈ λ₯Ό μ΄λ»κ² μμΈ‘ν κΉμ?
μΉλ°λ μμΌλ‘ μ¬λ €μ£Όλ 건 μμλλ°..
1. λ°©λν μμ μλ£λ₯Ό μΉ κΈμ λ€μ
2. λ΄κ° μ’μμν κ² κΈ°λ°, μ’μμ λ§μ΄ λλ¬μ€ μ¬λ λ± μ 보λ₯Ό λ€ λͺ¨μμ
3. λ°μ΄ν°λ₯Ό μλλ°
4. λ λ΄κ° λκΈλ‘ ννμ λ§μ΄ νλμ§, μ’μμλ‘ ννμ λ§μ΄ νλμ§ μ΄λ° κ±Έ λΆμν΄μ
5. μ°μ μμ 맀긴 λ€μμ
6. μ’μν λ§ν κ²μκΈλ€μ μλ‘ μ¬λ €μ£Όλλ‘ ν΄λ¨λ€κ³ ν¨
→ κΈ°μ μ μΌλ‘ μ΄λ»κ² λμκ°λμ§ κ³ λ―Όν΄λ³΄λ©΄ μ¬λ°μ κ±° κ°μμ π΅