빅데이터 프로젝트 회고
최근 몇달 간 빅데이터 플랫폼 구축 및 분석 프로젝트를 진행해보고 느낀 점을 정리해 본다.
담당
- Fluentd 및 자체 제작 모듈을 사용한 대규모 로그 수집, 가공, 저장 (ETL) 시스템 설계 및 구축
- 여러 DB, HDFS, Hive 등으로부터 7개 이상의 input data를 가져와서 복잡한 비즈니스 로직을 거친 후 나온 결과를 DB에 저장하는 Spark app 설계 및 개발
- 다양한 streaming sources 로부터 가져온 데이터를 실시간으로 통합 분석 후 나온 결과를 외부로 전송하는 Spark streaming app 설계 및 개발
회고
- 레거시 시스템으로부터 데이터 수집 프로세스를 표준화 시키는 작업은 쉽지 않다. 하지만 한번만 해놓으면 분석이 편해진다.
- Fluentd는 예상을 뛰어넘는 훌륭한 로그 수집 도구 이다. 높은 가용성, 개발의 편리성을 제공해 줌과 동시에 안정적 이어서 덕을 많이 봤다. 또한 오픈 소스 이기 때문에 소스를 들여다 보면서 디버깅을 한다던가, 필요한 기능을 추가 하기 쉬웠다. 다른 분들께 도움이 될까 싶어서 pull request도 하나 날려주고, 궁금한 점을 Slack에 질문하면 빠른 응답이 올라와서 도움이 많이 됐다. 오픈 소스 만세!
- 수십억 개의 로그를 실시간으로 유실 없이 수집 해서 깔끔하게 정리, 저장된 결과를 봤을 때의 희열감, 이거 묘하게 중독성 있다. 하나라도 유실이 되면 밥맛이 없어진다.
- 데이터 수집 프로세스에 너무 많은 추가 기능을 집어넣지 말자. 유실 없이 빠르게 수집하는 것이 수집 단계의 목표 이므로 추가 기능은 분석 전처리 단계로 넘기는게 유리한 경우가 많다.
- 분석 전처리 단계는 매우 중요하다. 분석 결과가 이상할 때 전처리를 먼저 의심해봐야 한다.
- 빅데이터와 결합한 실시간 서비스는 생각보다 훨씬 더 매력적 이다. 빅데이터의 대고객 서비스의 현실적인 접점은 바로 여기! 파이프라인을 최대한 간결하고 신뢰성 있게 만드는게 포인트.
- 기존 시스템 과의 연계를 위해서는 Scala가 좋은 것 같다. 다음에는 Python도 써보고 싶은 바램.
- 분석 조건을 하나 추가 했을 뿐인데, 분석 소요 시간은 4시간이 추가됐다. 이런 일이 비일비재 하다. 덕분에 여러 가지 일을 동시에 할 수 있다는 쓸데 없는 장점 발견.
- 복잡한 비즈니스 로직을 가지는 Spark app은 분석 시간이 굉장히 오래 걸리는 경우가 많기 때문에 TDD를 사용하여 우선 검증 해야 한다.
- 클러스터 리소스를 명시적으로 나눠 써야 팀원들 끼리 서로 얼굴 붉히는 일이 없다.