*github repo 주소
https://github.com/kyounghunJang/twitter_streaming_project
처음으로 개인 프로젝트를 완성시켜서 너무 뿌듯한 느낌이 들었다. 아직 많이 부족하지만 그래도 조금은 이런 프로젝트들의 흐름이라고 해야 할까? 어떤 방식으로 구성해야 하는지 큰 그림을 구성하는 게 다음 프로젝트 때는 조금 더 수월할 것 같다. 이번 프로젝트를 하면서 내가 힘들었던 부분, 성공적으로 한 부분을 한번 KPT회고로 작성해보려 한다.
*KEEP
- logstash에서 중복관리를 위해 fingerprint 옵션을 사용했는데 매우 간편하고 중복 관리가 잘 돼서 좋았다.
- ELK stack을 사용해서 구축하다 보니 파이프라인을 구축하는데에 큰 어려움이 없고 확실히 이런 프로젝트에서는 접근성이 뛰어난 것 같아서 다음에도 이런 비슷한 프로젝트를 한다면 ELK stack을 고려해볼 것 같다
- docker를 사용해서 인프라를 구축하니 설정에서 문제가 생긴 부분을 즉각적으로 수정할 수 있고 각각의 컨테이너에서 실행되다 보니 어떤 부분이 문제인지 직관적으로 볼 수 있어서 좋았다.
*Problem
- ELK stack 을 처음에는 7.10 버전으로 구축했으나 7.10 버전은 pytorch를 이용한 머신러닝 모델을 불러올 수 없는 문제가 발생했다.
- docker-compose를 구성할때 처음에는 ip를 단순히 bridge로 설정했었는데 ip가 고정되지 않고 변경되는 현상이 발생하여 ELK stack 간의 통신이 안 되는 경우가 발생
- twitter api가 v2로 변경되면서 logstash로 바로 input받을 수 없는 에러 발생
- python으로 streaming 데이터를 받아서 저장시켜서 전송하는 형태로 만들었는데 twitter streaming 데이터 자체가 중복 데이터가 많이 존재함. 이 모든 것을 data로 저장하다 보니 용량을 많이 사용하게 되는 문제
- word cloud를 시각화 할때 불용어가 같이 집계되어 정확도가 많이 떨어지는 현상 발생
*Try
- ELK stack을 8.4.2(가장최신버전)으로 docker 환경에서 새로 구축하여 머신러닝 모델을 불러오게 했다.
- docker-compose에서 network를 직접 생성하여 각각의 컨테이너에 고정 ip를 적용시켜 ip변동으로 인한 통신에러가 발생하는 현상을 막았다.
- 처음에는 twitter api v1.1으로 생성하여 logstash로 받는 방법을 시도해봤으나 어떤 이유에서인지 정상적으로 작동하지 않았다. 결국 많은 구글링을 통해서 얻은 결론은 python으로 데이터를 저장시켜 ELK stack으로 전송시키는 방법이 프로젝트를 완성시킬 수 있는 방법이라고 생각되었고 이 방법을 사용했다.
- 4번째 문제는 어떤 방식으로 해결해야 할지 아직도 의문이다.. 이미 elasticsearch에 중복을 제외하고 저장되어 있으니 특정 기간에 한 번씩 data 파일을 삭제하는 게 맞는 것인지. 하지만 만약에 삭제하게 된다면 혹시나 elasticsearch에서 문제가 생겨 데이터가 날아가게 된다면 문제가 발생한다고 생각한다. 현업자들은 이런 경우에 어떻게 효율적으로 관리하는지 궁금하다.
- nori tokenizer plugin을 다운받아 형태소 분석을 하여 필요 없는 불용어를 제거하는 template를 만들어 날짜별로 생성되는 인덱스에 적용시켰다. 또한 이 경우에 기존 data 필드에 적용시키면 시각화한 data table이 단어로 끊어지는 문제가 생겨 새로운 필드인 token_data필드를 만들어 적용시켰다.
*마무리
처음으로 개인 프로젝트를 진행하다보니 내가 처음에 생각했던 구현 방향이 많이 부족했고 또 구현하는 과정에서도 여러 가지 오류들을 만나고 이런 오류들을 해결하기 위해서 많은 시간이 필요했다. 그래도 이번에 많은 시간을 투자하면서 해결했던 문제들은 다음번에 또 만난다면 쉽게 해결할 수 있겠다는 자신감이 생긴 것 같다. 사실 이 프로젝트도 처음 시작할 때는 그냥 단순하게 ELK stack으로 데이터만 시각화하려 했으나 뭔가 욕심이 생겨서 머신러닝도 넣어보고 했는데 시간은 더 걸렸지만 이렇게 프로젝트를 하니까 확실히 더 뿌듯한 느낌이 드는 것 같다. 일단 처음 목표했던 docker로 구축한 프로젝트는 나름 성공적으로 끝냈고 추후에 kubernetes를 공부해서 이 프로젝트의 인프라를 새로 구축해서 한번 구동해봐야겠다!
'개인프로젝트 > twitter 실시간 데이터 프로젝트(ELK stack)' 카테고리의 다른 글
kibana dashboard 제작 (0) | 2022.11.09 |
---|---|
데이터 감정분석 파이프라인 구축 (0) | 2022.11.03 |
Logstash 실시간 데이터 처리 (0) | 2022.10.29 |
twitter 실시간 데이터 python으로 저장하기 (0) | 2022.10.21 |
[docker] python+filebeat+elk 환경 만들기 (0) | 2022.10.17 |