Search

웹 기반 고객 Behavior Flow 분석 대시보드 서비스 기획 및 개발

상태
완료
시기
2023/02/20 → 2023/05/19
역할
기획
BigData
BE
Deployment
DB
참여인원
6
소속
협업
사용 기술
본 프로젝트는 삼성청년SW아카데미에서 교육과정의 일환으로 진행한 프로젝트 입니다.
특화 - 자율의 두번의 프로젝트를 통해 진행되었습니다.

프로젝트 결과

서비스 컨셉
서비스 소개
서비스 기능

프로젝트 목표

웹 사이트 이용자의 사이트 내 동선을 파악하여 수집하고 이를 처리, 분석하여 사이트 관리자 및 운영자에게 사이트 내 흐름에 대한 시각화 정보를 제공한다.
중형의 트래픽이 발생하는 웹사이트에서 고객 정보를 수집하여 안정적으로 이를 저장, 처리한다.
데이터 분산에 대해 이해하고 더욱 효율적인 구조와 방식을 연구한다.

프로젝트 계획

아키텍쳐

프로젝트 진행

담당 역할

인프라 설계
가용적인 구조를 고려하며 아키텍쳐를 설계하였습니다.
인프라 구축
OpenVPN을 통해 서로 다른 리전의 인스턴스 5개를 하나의 내부망으로 구축하였습니다.
연결한 노드 5대에 Hadoop Ecosystem을 구축하고 설정하여 데이터 클러스터를 구성하였습니다.
5개의 노드에 Kubernetes를 구성하여 컨테이너 기반의 CI/CD, 모니터링을 가능케 하였습니다.
브라우저 → Spring Boot 서버
Tistory와 React 웹페이지 등에 JavaScript 주입을 통해 데이터를 수집하였습니다. 사용자가 이벤트 페이로드를 직접 설정할 수 있도록 코드를 설계하였습니다.
HTTPS를 통해 Javascript 코드를 전달하기 위해 Spring Boot를 통해 API를 개발하였습니다.
Dynamic Import 문제를 우회할 수 있도록 NPM에 정적 모듈을 배포하여 React 프로젝트 코드레벨에서도 사용할 수 있게 하였습니다.
Spring Boot 서버 → Cassandra NoSQL DB
SpringBoot에서 검증한 데이터를 Cassandra Connector를 통해 실시간 적재하였습니다.
Cassandra NoSQL, Hive 데이터 웨어하우스 → Spark SQL Batching 파이프라인
1분~12시간 범위의 데이터를 Cassandra에서 조회하여 대시보드에 사용하는 데이터의 형태로 집계하였습니다.
집계가 완료된 Hive 테이블에서 1일~1년 범위의 데이터를 조회하여 재집계하였습니다.
Spark SQL Batching 파이프라인 → Hive 데이터 웨어하우스
Airflow를 통해 주기적인 배칭 작업을 스케쥴링하였습니다.
확장성 있는 작업 스크립트를 제작하였습니다. 총 3개의 함수를 개발한 반면, 인자 전달을 통해 총 72개의 테이블에 집계할 수 있었습니다.
Hive 데이터 웨어하우스 → Spring Boot API 서버
Hiveserver2에 연결하여 JDBC Template을 통해 쿼리를 작성하였습니다.
EntityRowMapper 유틸리티를 작성하여 ResultSet에서 Entity를 쉽게 매핑할 수 있도록 하였습니다.
개발 환경 개선
Jenkinsfile을 통해 API 서버와 웹 서버의 빌드 사이클을 Clean - Prepare - Build - Docker Build - K8s Deploy 의 단계로 정의하였습니다.
클러스터의 보안을 위해 OpenVPN client 키를 제작하여 팀원에게 공유하였습니다.
이전 버전