24.04.20 (토) lines 세미나 발표 자료
사내 동료 분께서 기술 / 경험 공유 세미나를 연다고 하셨고, 간단하게라도 발표 할 의향이 있다면 참석해보면 좋을 것 같다고 하셔서 세미나에 참가해 발표를 진행했습니다.
ELK 시스템을 구축해보는 내용을 발표해볼까 했지만 발표 시간이 짧아 경험한 내용을 공유하는게 좋다고 생각했고, 현재 업무로 진행하고 있고 관심이 많은 검색 도메인 담당에 대한 얘기를 발표 주제로 선정했습니다.
우리는 살면서 정보를 얻기 위해 항상 검색 행위를 합니다. 개발 디버깅을 위해 구글링을 하거나, 유튜브에서 관심있는 정보를 얻거나, 원하는 물건을 사기 위해서 등등...
저도 많은 검색 행위를 해오며 검색이 잘 되면 좋겠다 라는 생각을 가지고 있던 와중에 사내에서 검색 서비스와 관련된 업무를 하게 되었습니다. 그러면서 자연스럽게 ELK 스택에 대해서 알게 되었고, 여러 삽질을 거치며 이 기술에 대한 매력을 느끼게 되었습니다.
ELK 란 Elasticsearch, Logstash, Kibana, Beats 라는 오픈 소스 프로젝트를 합쳐 ELK 스택이라고 합니다.
- Elasticsearch : 검색 엔진을 위한 데이터베이스
- Logstash : 데이터 파이프라인,
- Kibana : 이와 관련한 UI, 시각화, 대시보드 역할을 가능하게 합니다.
- Beats : 데이터 수집기 (metricbeat, filebeat, auditbeat, ...)
주로 beats (수집) -> logstash (전송) -> elasticsearch (저장) -> kibana (UI)
크게 두 가지를 진행했습니다. 첫째, 검색 기능 개선 프로젝트. 둘째, 검색 서비스 운영
검색 기능 개선 프로젝트로는
서비스 운영으로는 관련 기능 이슈 해결이나 장애 대응 등의 작업을 주로 진행했습니다.
주로 처리했던 이슈 중 하나로는 데이터 싱크가 맞지 않는 이슈가 있었는데 logstash 를 통해 데이터를 넣어주던 부분도 존재해 logstash 문제인 경우도 있었고, ES cluster 장애로 인해 데이터 수집이 안되는 경우가 있었습니다.
아직은 자동으로 장애 데이터를 싱크해주는 작업이 되어있지 않아 장애 발생시 수동으로 해당 기간의 데이터를 검색 엔진으로 넣어주는식으로 처리했습니다.
앞으로 내가 맡는 검색 서비스는 안정적이고 빠르게 운영을 하고 싶습니다.
현재 시점에서 진행하고 있는 작업으로는
를 크게 생각하고 있습니다.
현재 ELK 는 VM 에 직접 설치로 운영을 하고 있는데 그렇다보니 logging 이나 metric 시스템이 빈약한 상황입니다. 장애 감지를 위해서 이런 시스템이 필요하다고 생각해서 구축해보는 작업을 현재 진행하고 있고,
데이터 수집 방식도 일부 개선을 했지만 아직 logstash 를 통한 데이터 수집 방식도 남아있고, 새로운 기능이 추가되고 검색에 대한 요구사항이 들어올 때, 관련 시스템을 빠르게 구축할 수 있는 작업을 진행하고 싶습니다.
마지막으로 검색 품질에 대한 부분도 아쉬운 부분이 좀 있는데 필요할 때만 작업을 진행하다보니 elasticsearch reindex 시 사람이 직접하고 있습니다. 이를 좀 더 자동화하고, 부하없이 효과적으로 이런 작업을 할 수 있는 시스템도 구축해놓고 싶습니다.
ELK 를 좋아하고 현업에서 사용하고 있지만 아직 부족하다는 생각이 항상 듭니다. 해결 방법은 계속해서 공부하고 업무에서 사용해 현재 가지고 있는 문제를 해결하면 이런 생각도 조금씩 나아질거라고 생각합니다. 좀 더 나은 시스템을 위해서 다시 열심히 해봐야겠습니다.