All Articles

μ‚½μœΌλ‘œ λ°₯λ– λ¨ΉκΈ°

μ‹œκ°ν™” μˆ˜μ—… 기말 ν”„λ‘œμ νŠΈλ‘œ 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 의 경우 κΈ°λ³Έ μŠ€ν† λ¦¬μ§€ μ‚¬μš©μ„ κ³΅μ‹μ μœΌλ‘œ λΉ„μΆ”ν•œλ‹€)

Published Nov 22, 2016

If I keep marking the dots, someday they will πŸ”—πŸ”—