전체 글
-
BigQueryML로 유저 세그먼트 클러스터링하기About Data 2023. 10. 27. 08:29
BigQueryML? 구글 빅쿼리 콘솔에서 SQL 쿼리로 간편하게 머신러닝 모델을 만들고, 실행할 수 있는 서비스입니다. 기본적인 회귀 모델부터 K-means 클러스터링, 시계열 분석, DNN, 랜덤 포레스트, XGBoost 등 다양한 모델을 활용할 수 있습니다. 유저 세그먼트? 서비스를 이용하는 고객을 임의의 기준으로 분류한 결과를 의미합니다. 주로 User Persona라고 해서 하나의 모델로 유저를 정의하는 경우도 있지만, 사용자 집단의 동질성이 낮은 경우는 하나의 페르소나보다 각각의 군집으로 유저를 분류하는 것이 유리합니다. 이렇게 유저를 분류하는 것이 중요한 이유는 각 분류마다 원하는 것과 행동 양식이 다르기 때문에 만족도를 느끼는 지점 역시 다르고, 이는 곧 기능 개발과 캠페인 메시지 전달 방..
-
빅쿼리로 데이터 인프라 이전하기 (2) 사용성 최적화etc. 2023. 6. 10. 16:02
이전 글에서는 빅쿼리 ETL 비용 최적화에 대해 소개했었는데요, 이번 글에서는 빅쿼리를 활용한 데이터 접근성 관리와 일반 사용자들의 사용량 관리에 대해 작성해 보겠습니다. Phase 4. 데이터 접근성 높이기 Trino 환경에서 가장 제한적이었던 부분은 일 배치였습니다. 서비스 DB를 긁는 부하를 줄이기 위해 사용량이 가장 낮은 시간에 한정해 ETL 파이프라인을 하루에 한 번 가동했기 때문이죠. 빅쿼리로 이전하면서 세웠던 계획 중 하나가 바로 가능하면 스트리밍, 최소 1시간 단위까지 배치 빈도를 늘리자- 였습니다. 그래서 아래와 같은 기능들을 사용하게 되었습니다. DataStream Google Cloud SQL, AWS RDS 등의 DB를 스트리밍할 수 있는 매니지드 서비스입니다. DB의 update ..
-
빅쿼리로 데이터 인프라 이전하기 (1) 비용 최적화 with Dataformetc. 2023. 6. 10. 15:08
결론부터 말씀드리면, 사용자 작업이 없는 주말 기준으로 데이터 파이프라인 운영 비용을 30만원대 -> 3만원대로 줄였습니다. Phase 0. Trino 저희는 기존에 AWS EKS를 활용해 스케일링이 가능한 Trino 환경을 사용하고 있었습니다. 클라이언트 로그 데이터부터 MongoDB, RDS등의 데이터를 DW로 ETL하고, 전사 구성원들이 쿼리를 조회하는 용도로 활용되었죠. 장점이 있다면 대용량의 데이터를 일별 스냅샷으로 적재해도 상대적으로 부담이 적다는 것과 누가 언제 어디서 어떻게 쿼리를 조회해도 비용 자체는 안정적으로 관리할 수 있다는 것이었죠. 그러나, 점차 데이터 사이즈와 쿼리량의 증가로 인해 서버 비용 외에 저장 비용도 누적되고 급격히 사용자가 몰리는 시점에는 처리 속도도 만족스럽지 못했습..
-
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 5. Epilogueetc. 2022. 9. 10. 02:30
2022.09.10 - [etc.] - 웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 0.Prologue 웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 0.Prologue 스타트업의 데이터 팀에는 수많은 리퀘스트가 들어옵니다. 그 중에서 단순 추출과 개인정보 처리는 그 중요도와는 별개로, 요청은 많고 얻어가는 보람은 적은 일에 속하죠. 조직에 직접 인사이 datarami.tistory.com 2022.09.10 - [etc.] - 웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 1. 환경 구축 웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 1. 환경 구축 Streamlit을 사용하기 위한 환경은 크게 어렵지 않습니다. p..
-
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 4. 보안을 보완etc. 2022. 9. 10. 02:19
데이터 보안에 대한 피드백을 받은 후 바로 보안 팀과 논의에 들어갑니다. 보완해야 할 부분은 두 가지였습니다. 1. 허용된 구성원만 접근할 수 있게 할 것 2. 데이터 추출 시 기록을 남길 것 다른 오픈소스나 SaaS의 경우 몇 가지 설정을 통해 구글 oauth 로그인을 추가할 수 있었기 때문에 이번에도 그냥 추가하면 되겠거니 했지만 Streamlit은 호락호락하지 않았습니다. Flask도, django도 아닌 tornado 프레임워크 기반인데다, 라이브러리를 건드리지 않고 페이지 코드에서 로그인을 추가할 수 없었습니다. 왜냐면 정해진 방법 외에는 리다이렉트 페이지를 생성할 수 있는 방법이 없었기 때문입니다. ...는 사실 등잔 밑이 어두운 웹알못이었습니다. Streamlit 공식 문서에서 친절하게도 k..
-
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 3. 오픈은 실전etc. 2022. 9. 10. 01:32
두 번째로 만든 서비스는 'userSelector'였습니다. 이번에도 다짜고짜 코드 먼저 첨부합니다. 더보기 import streamlit as st import pandas as pd from datetime import datetime, timedelta st.set_page_config(page_title="userSelector", page_icon="📝", layout='wide') st.title("dat-a-dmin [userSelector]") ### @st.cache(ttl=10800) def get_categories(): engine = db.ps_engine() categories = pd.read_sql("select ", engine)['category'] return categ..
-
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 2. 페이지 작성etc. 2022. 9. 10. 01:00
Streamlit을 띄운 목적이 데이터 애드혹을 줄이는 것이었기 때문에, 주요 테이블을 조회하는 간단한 쿼리를 누구나 클릭 베이스로 작성할 수 있는 페이지를 가장 먼저 작성해 봤습니다. 부끄럽지만 전체 코드(일부를 제외한) 를 첨부합니다. 더보기 import streamlit as st import pandas as pd from datetime import datetime, timedelta st.set_page_config(page_title="queryMaker", page_icon="📝", layout='wide') st.title("dat-a-dmin [queryMaker]") ### d0_options = { "유저, 크리에이터": [""], "마케팅": [""], "사이트/앱 로그": [""..
-
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 1. 환경 구축etc. 2022. 9. 10. 00:39
Streamlit을 사용하기 위한 환경은 크게 어렵지 않습니다. pip install streamlit PIP 설치와 streamlit hello 실행 명령 한 줄이면 로컬에서도 웹앱을 띄울 수 있으니까요. 이 말은 즉, 파이썬과 외부 네트워크만 가능하면 누구나 접속할 수 있는 사이트를 만들 수 있다는 뜻입니다. AWS나 GCP 인스턴스 한 대로도 운영할 수 있지만 현재 저희 데이터 팀에서는 K8S 환경으로 대부분의 서비스를 통합했기 때문에 클러스터에 띄우기로 했습니다. 그렇다면 가장 먼저 필요한 건 도커 이미지입니다. Streamlit 컨테이너를 구성할 재료입니다. 저는 python 3.9 이미지를 기반으로 streamlit 외 데이터 어드민에 사용할 라이브러리들을 설치했습니다. FROM python:..