μκ°ν μμ κΈ°λ§ νλ‘μ νΈλ‘ Clickstream μ λΆμ λ° μκ°ννλ νλ‘μ νΈλ₯Ό μ§ννκΈ°λ‘ νκ³ , κ·Έ λ²μ§Έ λ¨κ³λ‘ λ‘κ·Έλ₯Ό λͺ¨μΌκΈ° μν μμ€ν (?)μ μ λͺ μΌ μ§κ³ μλ€.
μ²μμλ λ‘κ·Έ μμ§ λ° λΆμ νλ©΄ μμ λ§νλ ELK (Elasticsearch + Logstash + Kibana) μ€νμ μ¬μ©νλ€κ³ ν΄μ μ΄λ₯Ό λ°λ₯΄κΈ°λ‘ νμ§λ§ λ°μ Έλ³΄λ κ·Έλλ‘ λ°λ₯΄κΈ°μλ λ¬Έμ κ° λ§μλ€. μκ°ν μμ μΈλ§νΌ μ’ λ νΉν μκ°νλ₯Ό ν΄μΌνλ Kibana λμ μ§μ μν©μ μ λ§λ μκ°νλ₯Ό ν΄μΌνκ³ , λ μ΄λ° ν΄λ¦ λ°μ΄ν°λ₯Ό λ€λ£¨μλ λ Όλ¬Έλ€μ 보λ ν΄λ¬μ€ν°λ§ μ λλ κΈ°λ³ΈμΌλ‘ κΉκ³ κ°λλ° κ·Έ μ©λλ‘λ Elasticsearch μμ μ ν©νμ§ μμλ€. κ·Έλμ κ²°κ΅ Logstash λ§ λ¨μμ
ν΄λ¦μ μμ§νλ js ν΄λΌμ΄μΈνΈ β Node λ‘ λ§λ Endpoint β Redis μ±λ β Logstash β S3 μ txt (β ν¬κ³ μλ¦λ€μ΄ λΆμν΄?)
μ μμ€ν μ λ§λ€κΈ°λ‘ νκ³ , κΈ°μ 곡λΆνλ κΉμ λ컀곡λΆλ ν΄μ μΉ μ΄μ΄λμλλ°(μ¬μ€ 곡λΆλ₯Ό μν΄μλΌκΈ° 보λ€λ μκ°μ μλΌκΈ° μν΄μ. Logstash λ₯Ό κ·Έλ₯ μ΄λ»κ² κΉμμΌν μ§ κ°λ μμ‘ν), λ€ ν΄λκ³ λ³΄λ κ²°μ μ μΈ λ¬Έμ κ° μμλ€.
Logstash κ° λ‘κ·Έλ₯Ό μ²λ¦¬νλ κΈ°λ³Έ λ¨μλ 128 κ°, λ S3 μ μ¬λ¦¬λ νμΌ λ¨μλ 2MB μ΄κ³ λ§μ½ λμ€μ μμ€ν μ΄ κΊΌμ§ κ²½μ° μμ§ λ€μ λ¨κ³λ‘ λμ΄κ°μ§ μμ, μμ§ λ²νΌμ μλ λ°μ΄ν°λ λ€ λ λΌκ°λ€(AFAIK). νμ§λ§ μ§κΈμ μ¬λμ΄ λ§μ΄ μ°λ μλΉμ€μ λ°λ‘ μ μ©νλ κ²μ΄ μλλ λ°μ΄ν°κ° μ κ³ κ·ν μ λ°μ μμ΄μ μ€κ°μ λ€ λ λΌκ°λ κ²μ΄ λ무 μΉλͺ μ μ΄λ€-0-. κ²°κ΅ Endpoint μμ Redis λ‘ κ° νμλ μμ΄ κ·Έλ₯ λͺ½κ³ DB μ λ£μ΄ λκΈ°λ‘νκ³ , μμΈ λ°μ΄ν°λ₯Ό λμ€μ λ©νμ μ λΆ λ€μ΄ λ°μμ μ‘°μνλλΌλ μλ¬΄λ° λ¬Έμ κ° μμ κ² κ°λ€. κ·Έλλ νΉμ(!) λμ€μ λ°μ΄ν°κ° λ§μμ§λ©΄ μ΄λ»κ² ν΄μΌν μ§ μ½κ°μ΄λλ§ κ°μ μ‘μλ€λ μ μμ μμμ μΌκΈ°λ‘(λ¬Όλ‘ κ·Έ λλ κ·Έ λ λλ¦μ μ΄λ €μκ³Ό κΉ¨λ¬μμ΄ μκ² μ§λ§)
p.s) λ컀λ λΆλͺ νλ₯ν ν΄μΈλ°, CI νλ λ¬Ένλ μ΅κ΄μ΄ μ리μ‘ν μμ§ μμΌλ©΄ μΈμ€ν¨λ¬ μ΄μμ κΈ°λ₯μ νκΈ° νλ€μ΄ 보μΈλ€. κ·Όλ° CI λ₯Ό μνλ €λ©΄ ν μ€νΈλ₯Ό κΌΌκΌΌν μ§λ λ¬Ένλ μ΅κ΄μ΄ μ°μ λμΌνκ³ μ΄μ―€λλ©΄ λμ΄μ ν΄μ λ¬Έμ κ° μλκ² λλ€. κ²°κ΅ μ§λ¦¬μ μλμ(μνμ) ! p.s2) ννλ€ pure function μ΄ μ μ§, 보μμ μ ν©νλ€κ³ νλλ° μ»¨ν μ΄λμ μ¬λΌκ°λ μ½λλ λ§μ°¬κ°μ§μΈ κ² κ°λ€. μμ£Ό κ°λ¨ν μλ‘ μΈμ μ΄ μ»¨ν μ΄λμ λ©λͺ¨λ¦¬μ μ μ₯λλ©΄ λμ€μ λ‘€λ§ μ λ°μ΄νΈλ₯Ό νλλΌλ λκ΅°κ°λ μ€κ°μ μ μμ΄ λκΈΈν λ°, μΈμ 컨ν μ΄λλ₯Ό μΈλΆμ λλ©΄ μ΄λ° μΌμ λ§μ μ μλ€(express-session μ κ²½μ° κΈ°λ³Έ μ€ν λ¦¬μ§ μ¬μ©μ 곡μμ μΌλ‘ λΉμΆνλ€)