미리보기
기본 정보

의류 사이즈 추천 데이터를 크롤링하여 S3, Redshift를 활용한 ETL 구축과 ML 추천 시스템 설계로 배송비 절감에 기여한 경험이 있습니다. 또한 도커, 쿠버네티스, VM 환경에서 Airflow 운영을 통해 한가지에 구애 받지 않고 다양한 환경에서 적응 해나간 경험이 있습니다
기술 스택
Django, FastAPI, SQL, airflow, aws-ec2, aws-rds, aws-vpc, aws-elasticache, aws-elb, Docker, k8s, Google Cloud Platform
프로젝트
의류 사이즈 추천 시스템
프로그래머스 데브코스
2024.06. ~ 2024.08.
개요
온라인 의류 쇼핑몰에서는 고객들이 자신의 체형에 맞는 사이즈를 선택하기 어려워 반품률이 증가하는 문제가 발생합니다. 이를 해결하기 위해, 키와 몸무게를 입력하면 최적의 사이즈를 추천하는 ML 기반 사이즈 추천 시스템을 개발했습니다.
Skill Keywords
Django(Python)
FastAPI
Airflow
Github
AWS(Redshift, EC2, RDS, S3, Lambda, VPC, ELB, ElastiCache, Route 53)
AWS 인프라 보안 및 확장성 확보 + Airflow 분산 환경 최적화
As-Is (문제 상황 & 만들고 싶은 기능)
AWS 환경에서 퍼블릭/프라이빗 네트워크 분리하여 보안이 높은 클라우드 환경 구축 필요
제한된 리소스 환경(2vCPU 4GiB)에서 웹서버 & 워커가 같은 인스턴스에서 운영되어 성능 저하 발생
팀원들이 파이프라인 코드에 집중할 수 있게 클라우드 CI/CD 시스템 구축 필요
DAG를 읽을 때 셀레니움이 계속 백그라운드로 재생성돼 EC2 과부하 발생
Challenge (문제 해결을 위해 고민한 내용 & 해결 방법)
VPC를 퍼블릭/프라이빗으로 분리 & Bastion Host 도입하여 보안 강화
Airflow 웹서버와 워커를 각각 별도의 EC2 인스턴스에서 운영하여 성능 최적화
RDS(PostgreSQL)를 메타스토어로 활용 & S3를 로그 저장소로 연동하여 우수한 고가용성 구현
GitHub Actions + Lambda 기반 CI/CD 구축으로 배포 자동화
Glances를 이용한 모니터링으로 셀레니움 재실행 문제 특정 및 깃허브 롤백을 통해 해결
To-Be (최종 결과 & 성과)
AWS 인프라 보안 강화 → VPC 분리, Bastion Host 도입, SSL 보안 적용
Airflow 분산 환경 구축 → 성능 최적화 & 클라우드 비용 30% 절감
ML 모델 운영 자동화 및 비용 최적화
As-Is (문제 상황 & 만들고 싶은 기능)
Django 서버와 ML 모델이 같은 환경에서 운영됨
트래픽 증가 시 성능 저하 발생 우려
S3에 매일 새로운 데이터가 적재되지만, 이를 반영하는 자동화된 재학습 시스템 필요
ML 모델 운영 비용이 높아, SageMaker 보다 EC2 기반 운영을 고려해야 함
Challenge (문제 해결을 위해 고민한 내용 & 해결 방법)
Django 웹서버와 ML 모델(XGBoost)을 별도의 EC2에서 운영하여 부하 분산
FastAPI를 사용하여 Django와 ML 모델 간 API 통신 환경을 구축
Crontab을 활용하여 S3 데이터를 기반으로 재학습 스케줄링 후 피클 파일 생성
모델은 피클 파일 기준으로 추천하여 학습과 추천을 분리하여 최적화
SageMaker 대비 EC2 기반 운영을 선택하여 비용 절감 가능성을 분석
To-Be (최종 결과 & 성과)
FastAPI 기반 API 통신 구축 → Django & ML 모델 서버 부하 분산
ML 모델 자동화 → 매일 S3 데이터를 반영하여 최신 추천 학습
SageMaker 대비 EC2 기반 ML 운영 → 16% 비용 절감 (36달러 → 30달러)
F1 레이싱 데이터 분석 대시보드
프로그래머스 데브코스
2024.06. ~ 2024.06.
개요
F1 경기 데이터를 자동으로 수집하고 분석하여 레이스 전략을 시각적으로 표현할 수 있는 대시보드를 구축했습니다.
- Skill Keywords
Superset
Airflow
GCP(GCS,IAM,GKE,BigQuery)
Github
월간 데이터 수집을 위한 ETL 파이프라인 구축
As-Is (문제 상황 & 만들고 싶은 기능)
F1 레이싱은 월간 1~3회 진행되며, 경기 데이터를 Open F1 API에서 JSON 형태로 제공
데이터를 주기적으로 수집하여 저장하는 ETL 파이프라인 필요
대시보드 시각화를 위해 데이터 마트(Data Mart, DM) 구축 필요
Challenge (문제 해결을 위해 고민한 내용 & 해결 방법)
Open F1 API에서 데이터를 수집 → GCS에 Raw Data 저장 → BigQuery로 적재
Airflow DAG을 활용하여 데이터 자동 수집 (매월 1일 스케줄링)
BigQuery 처리 제한 문제 해결
백필(Backfill) 시 병렬 실행 개수를 5개로 제한하여 데이터 적재 최적화
경기 데이터의 주요 항목(드라이버 기록, 팀 순위, 랩 타임 등)을 정제하여 DM(Data Mart) 구축
해당 달에 경기가 없을 경우, Branch Task를 사용하여 이후 Task를 스킵하도록 수정
To-Be (최종 결과 & 성과)
Airflow 기반 데이터 수집 자동화 → Open F1 API 데이터를 주기적으로 BigQuery에 적재 & 최신 데이터 반영
BigQuery 최적화 → 백필 처리 속도 향상 및 대량 데이터 적재 안정화
F1 경기 데이터 마트 구축 → 대시보드에서 분석 가능하도록 가공된 데이터 제공
GKE를 활용한 GCP 데이터 플랫폼 운영
As-Is (문제 상황 & 만들고 싶은 기능)
Airflow와 Superset을 함께 운영할 수 있는 통합 데이터 플랫폼 필요
기존에는 로컬 환경에서 Airflow DAG을 실행했지만, GKE 환경에서 실행할 설정이 필요
KubernetesExecutor를 사용할 경우 Pod이 삭제되면서 로그도 함께 사라지는 문제 발생
GKE 비용 최적화를 고려해야 하며, 예상 비용을 측정할 필요가 있음
CI/CD 자동화를 위해 GitHub과 연동하여 DAG 배포 속도를 개선하고 싶음
Challenge (문제 해결을 위해 고민한 내용 & 해결 방법)
Airflow & Superset을 GKE에서 함께 운영할 수 있도록 클러스터 설계
GKE 클러스터 내에서 Helm Chart로 Airflow 및 Superset을 네임스페이스 단위로 구성
GKE 리소스 최적화 및 비용 절감
E2-standard-2 VM 2대를 사용하여 GKE 클러스터 구축 (필요 시 확장 가능)
Airflow 설치중 리소스가 부족한 문제가 발생하여 Autopilot 클러스터 대신 관리형 GKE 선택
로그 유실 문제 해결 (KubernetesExecutor 설정 개선)
KubernetesExecutor 사용 시 Pod 삭제 후 로그도 함께 사라지는 문제 발생
이를 해결하기 위해 GCS에 로그 저장 설정 변경
GitHub Actions + Git-Sync를 활용한 CI/CD 자동화 구축
GitHub에서 코드가 변경되면 DAG 파일이 자동 배포될 수 있도록 Git-Sync 적용
기존 GitHub Actions 대비 배포 속도 50% 단축 (20초 → 10초 내외)
To-Be (최종 결과 & 성과)
GKE 기반 데이터 플랫폼 구축 → Airflow & Superset 운영 안정화 & 확장성 확보
클러스터 비용 최적화 → E2-standard-2 VM 2대로 운영하며 필요 시 Auto Scaling 가능
KubernetesExecutor에서 로그 유실 문제 해결
GCS 로그 저장소 활용하여 안정성 강화
Git-Sync CI/CD 적용 → DAG 배포 속도 50% 단축, 운영 효율성 향상
BigQuery & Superset 연동
대시보드를 통한 경기 데이터 분석 가능
일 평균 약 5,000원 / 월간 예상 비용 150,000원으로 비용 예측
포트폴리오
URL
교육
프로그래머스
사설 교육 | 데이터 엔지니어링
2024.03. ~ 2024.08. | 졸업
신라대학교
대학교(학사) | 전자공학과
2013.03. ~ 2020.02. | 졸업
자격증
정보처리기사
한국산업인력공단
2022.06.
자기소개
Furthermore
주로 사용되는 기술이라도 원리를 이해하고 더 나은 방법
을 끊임없이 찾아갑니다.
공식 문서를 통해 기본 개념을 익히며, AI와 동료의 도움을 받아 문제를 해결합니다.
이미 해결된 문제는 답을 빠르게 찾아서 시간을 절약해 해결하는 것이 팀을 위한 행동이라고 생각합니다.
더하여 문제를 절차적으로 나누어 분석하고 효과적으로 해결합니다.
Blueprint
데이터가 누구
에게 어떤 목적
으로 사용될지 생각하고 전체적인 구조를 구축합니다.
더 나아가 이 데이터로 어떤 비즈니스 가치를 만들 수 있을지 고민합니다.
Reason
질문을 통해 문제를 해결해 나갑니다. 제가 구현할 때는 질문에 대한 답을 준비해서 근거로 만들어가고 팀원에게 질문을 던지며 근거를 바탕으로 만들어가는 팀을 위해 노력합니다.