Skip to content

CodyMan0/learning-data-env

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

learning-data-env

FE 엔지니어가 사내 데이터 파이프라인(opn-data) 인수 가능한 수준까지 끌어올리기 위한 개인 커리큘럼.

🎯 최종 목표

opn-data 레포의 월간 병의원/매출 ETL 파이프라인을 혼자서 한 사이클 돌릴 수 있다.

구체적으로:

  • HIRA/공공데이터 같은 외부 소스에서 데이터를 가져와
  • pandas로 정제/매칭/중복제거 하고
  • BigQuery에 적재하고
  • 셸 스크립트/cron으로 자동화한다.

→ 이걸 위해 나만의 미니 ETL 파이프라인을 처음부터 끝까지 만들어본다.


🧭 학습 전략

원칙

  1. 하나만, 끝까지. 메뉴 늘리지 말고 한 프로젝트를 운영 단계까지 데려간다.
  2. 읽기 < 만들기. 책/강의는 막힐 때만. 손이 먼저.
  3. 회사 코드와 1:1로 매핑한다. 새로 배운 개념은 항상 opn-data의 어느 줄과 연결되는지 확인.
  4. "매일 도는 것"을 만든다. 한 번만 돌리는 스크립트는 의미 없음. cron까지 가야 진짜.

메인 프로젝트

"내 GitHub 활동 일일 트래커" — 매일 아침 9시에 어제 내 활동(커밋/PR/이슈)을 GitHub API로 받아 SQLite에 적재하고, 주간 리포트를 만든다.

왜 이거?

  • 출처가 안정적(GitHub API) → 좌절 없음
  • 내 데이터라 결과 보는 재미 있음
  • opn-data의 모든 패턴이 축소판으로 들어있음 (수집/정제/적재/스케줄)

📅 4주 커리큘럼 (주말 위주, 평일 30분)

각 주차 폴더에 코드 + NOTES.md(배운 점 / 막힌 점 / opn-data와의 연결고리)를 남긴다.

Week 1: Python + pandas 손에 붙이기 (week1-pandas/)

목표: pandas로 GitHub API 응답을 DataFrame으로 다루는 데 익숙해지기.

  • Python 3.11 + uv 또는 venv로 프로젝트 세팅
  • requests로 GitHub API에서 내 이벤트 가져오기 (/users/CodyMan0/events)
  • JSON → pandas DataFrame 변환
  • 레포별/이벤트 타입별 groupby 집계
  • Kaggle Learn - Pandas 4시간 코스 완주

완료 기준: python fetch.py --date 2026-04-25 치면 어제의 내 활동 요약이 콘솔에 출력된다.

opn-data 연결: process_hospital_list.py의 pandas 조작 부분을 한 번 읽고, 어떤 함수가 익숙해졌는지 NOTES에 기록.


Week 2: SQL + SQLite로 적재 (week2-load/)

목표: 데이터를 "어딘가에 쌓고" "다시 꺼내오는" 사이클 만들기.

  • SQLite 스키마 설계 (events 테이블: id PK, date, repo, type, payload JSON)
  • INSERT OR REPLACE로 중복 방지 적재
  • 매일 돌려도 깨지지 않게 idempotent하게 만들기
  • SQL로 "이번 주 가장 활발한 레포 TOP 5" 쿼리 작성
  • SQLBolt Lessons 1-12 완주

완료 기준: python load.py --date 2026-04-25를 두 번 돌려도 행이 중복되지 않는다.

opn-data 연결: utility.pywrite_table_to_db() 함수가 BigQuery에 어떻게 쓰는지 읽어보기. SQLite와의 차이점을 NOTES에 정리.


Week 3: 자동화 + 운영 (week3-ops/)

목표: "매일 자동으로 돈다"를 달성. 진짜 파이프라인의 첫 단계.

  • fetch.py + load.py 합쳐 run.sh 작성
  • argparse--date 인자 받기 (어제 기본값, 백필 가능)
  • 실패 시 로그 남기기 (logs/2026-04-25.log)
  • macOS launchd 또는 cron으로 매일 09:00 실행 등록
  • 실패하면 macOS 알림 띄우기 (보너스)

완료 기준: 일주일 동안 손대지 않아도 매일 데이터가 쌓여있다.

opn-data 연결: run_crawl_hira.sh, run_upload.sh 같은 셸 스크립트를 한 줄씩 읽고 패턴 비교.


Week 4: BigQuery로 진짜 웨어하우스 경험 (week4-bigquery/)

목표: 인수인계 시 가장 큰 진입장벽인 BigQuery에 익숙해지기.

  • GCP 가입 ($300 무료 크레딧) → BigQuery 샌드박스 활성화
  • 서비스 계정 생성 + JSON 키 발급 (1Password에 저장)
  • google-cloud-bigquery 라이브러리로 SQLite → BigQuery 적재
  • 파티션 테이블(PARTITION BY DATE(created_at)) 만들어보기
  • WRITE_TRUNCATE vs WRITE_APPEND 직접 실험
  • BigQuery 콘솔에서 SQL 짜서 결과 확인

완료 기준: BigQuery 콘솔에서 내 활동 데이터를 SQL로 조회할 수 있다.

opn-data 연결: 회사 BigQuery 권한 받으면 call_prod_db()가 실제로 어떤 테이블을 읽는지 직접 확인.


🚀 졸업 프로젝트 (선택)

위 4주를 끝낸 뒤 동기 남으면:

Option A: FE 강점 살리기

SQLite/BigQuery → Next.js 대시보드. 차트로 내 GitHub 활동 시각화. 포트폴리오 1개 + "데이터 → UI" 풀 사이클 경험.

Option B: 도메인 근접

HIRA 공개 데이터 일부로 "내 동네 병의원 변화 트래커" 미니 버전 제작. 회사에서 하는 일의 소형 복제판 → 인수인계 시 강력한 시그널.

Option C: 운영 도구

dbt로 SQL 모델링 / Prefect로 워크플로 관리 한 번 맛보기. opn-data를 더 견고하게 만드는 방향성을 보고 싶다면.


📚 참고 자료 (필요할 때만)

주제 자료 분량
pandas Kaggle Learn - Pandas 4h
SQL 기초 SQLBolt 2h
SQL 실무 패턴 Mode SQL Tutorial 4h
BigQuery Quickstart 1h
pandas 깊게 《파이썬 라이브러리를 활용한 데이터 분석》 (웨스 매키니) 사전처럼

✅ 인수인계 준비 체크리스트

4주 끝났을 때 자가 점검:

  • pandas로 groupby, merge, 결측치 처리를 막힘 없이 한다
  • SQL로 JOIN, GROUP BY, 윈도우 함수 기본을 쓴다
  • 셸 스크립트와 cron/launchd로 작업을 자동화할 수 있다
  • BigQuery에 테이블 만들고 데이터 넣어봤다
  • opn-data 레포의 process_hospital_list.py를 끝까지 읽고 80% 이해한다
  • 막혔을 때 어디(공식 문서/코드/AI)를 먼저 봐야 할지 안다

→ 5개 이상 체크되면 현 담당자 옆에서 다음 달치 같이 돌려볼 준비 완료.


📝 진행 로그

매주 끝에 한 줄씩 추가.

주차 시작일 종료일 결과물 한 줄 회고
1
2
3
4

💡 약속

  • 막히면 2시간만 혼자 헤매고 AI/사람한테 묻는다 (자존심 < 진도)
  • 매주 NOTES.md를 쓴다 (안 쓰면 다 잊어버림)
  • "재미 없으면 그만둔다"도 옵션으로 열어둔다 (이것도 정보)

About

데이터 진영은 어떤 환경일까?

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors