이번에 Elastic stack 을 이용하여 통계 서비스를 구축하게 되었다.
공유 할 만한 부분들을 정리해서 순차적으로 내용을 정리해볼 생각이다.
(개인적으로 공식 사이트 document와 기타 참조 사이트를 통한 내용으로 정리)
굉장히 기본적인(단순한) 구조(내용)로 진행 된 내용임을 참고바람.
Elastic stack?
최초에는 ELK stack(Elasticsearch + Logstash + Kibana) 이라 불렸으나, 여기에 Beats를 추가하여 Elastic stack 이 되었다.
데이터를 수집(beats, logstash) 및 정제(logstash) 하고 저장(elasticsearch)하여 보여주는(kibana) 기능을 가지고 있다.
그밖에 x-pack이라는 상용기능도 탑재하고 있어, 비용을 지불하고 원하는 기능을 사용할수 있다.
ex) 보안기능, 머신러닝 등. 자세한 내용은 홈페이지 참고
Data의 기본 흐름(flow)
Elastic stack을 이용한 통계 시스템은 크게 수집-정제-저장-검색 의 단계를 거친다.
- 수집 : filebeats를 이용한 log file 내용을 수집하여 logstash에 전달
- 정제 : 전달받은 data(비정형화된 data)는 logstash 서버에서 elasticsearch 에 data를 저장하기 위한 format으로(정형화된 data) 변경한다.
- 저장 : logstash 서버에서 정제 후 elasticsearch에 data를 저장한다. 이때 elasticseach에 "index template"을 설정해 놓으면, 추후 index 관리에 편하다.(field type, index settings 등)
- 검색 : display하고자 하는 서버에서 elasticseach에 검색 쿼리를 날려서 원하는 형태의 view로 display 한다.
요구사항
요구사항 정리 : 좀 더 상세한 부분이 있지만, 대략 아래와 같다.
- 모든 결과물 데이터는 "기간 검색"에 따른 데이터 이다. ex) "오늘 매출" 도 오늘 날짜 검색에 따른 데이터
- 주문 건수(주문상태별)
- 순 방문자 수
- 결제 금액
- 환불 금액
- 총 매출액 = 결제금액 - 환불금액
-- 유입채널별
-- 결제수단별
마무리
- 이제 위의 data flow를 기반으로 요구사항에 맞게 개발만 하면 된다.
- 실제 개발시에는 순서가 조금 달랐다 : 수집-저장-정제-검색 (이렇게 하지 않아도 상관없다)
– index template 기능을 사용하기 위해 index명, index 설정 등의 규칙등을 정해놔야 했다.