변화하는 뉴스 데이터를 주기적으로 수집하고, 결과를 체계적으로 저장·관리하는 작업은 데이터 엔지니어링에서 중요한 역량이다.수작업 대신 크롤러(Selenium), PostgreSQL DB, Apache Airflow 스케줄러의 조합으로 완전 자동화된 데이터 수집/저장 파이프라인을 구축해봤다. 전체 구조crawler_practice/ ├── config/ # 설정 관련 모듈 및 파일│ ├── airflow.cfg │ ├── config.py # DB 연결 정보│ └── __pycache__/ ..
분류 전체보기

빅데이터란? 빅데이터는 데이터를 통해 가치를 창출하는 것이 핵심 빅데이터의 3가지 관점 (3V)Volume: 데이터의 양이 방대함Velocity: 데이터가 생성되고 처리되는 속도가 빠름Variety: 데이터의 형태와 출처가 다양함 데이터의 종류정형 데이터: 표, 데이터베이스처럼 구조가 명확한 데이터반정형 데이터: JSON, XML 등 구조는 있지만 완전히 고정적이지 않은 데이터비정형 데이터: 텍스트, 이미지, 영상 등 구조가 없는 데이터 Data Product란? Data Product는 데이터를 활용해 사용자의 최종 목표 달성을 돕는 제품가치를 생산하는 것이 가장 중요하며, 데이터 생산자와 소비자 사이의 다리 역할예시추천 시스템(예: 넷플릭스 추천)자율주행 시스템개인화된 플레이리스트(예: 스포티파이) ..
이전 글https://koreatstm.tistory.com/306 Airflow(2)https://koreatstm.tistory.com/268 AirflowMLOps Machine Learning Operations머신러닝(ML) 모델을 배포, 모니터링, 유지 관리하는 일련의 과정을 의미목표: ML 모델의 개발 생명 주기를 자동화하고 최적화하는 것이 목koreatstm.tistory.com Custom Operator from airflow.models import BaseOperatorclass HelloCustomOperator(BaseOperator): def __init__(self, name: str, **kwargs): super().__init__(**kwargs) #..

이전 글https://koreatstm.tistory.com/268 AirflowMLOps Machine Learning Operations머신러닝(ML) 모델을 배포, 모니터링, 유지 관리하는 일련의 과정을 의미목표: ML 모델의 개발 생명 주기를 자동화하고 최적화하는 것이 목표필요성워크플로우 자동화:koreatstm.tistory.com실행(Execution or Trigger)DAG를 실제로 즉시 실행하거나, 예약된 스케줄에 따라 실행되는 행위직접 UI에서 수동 실행(Trigger)할 수도 있고, 스케줄러에 의해 자동 실행될 수도 있음DAG가 실행되면 해당 DAG Run이 만들어짐실행의 종류: 수동 실행(트리거), 예약 실행(스케줄) 스케줄(Schedule)DAG가 자동으로 언제 실행될지 주기를 ..
몽고 DB 유연한 데이터 모델MongoDB는 document(문서) 기반 NoSQL 데이터베이스로, 키와 값을 미리 정의하지 않아 고정된 스키마가 없다.필요에 따라 필드를 쉽게 추가하거나 제거할 수 있어 데이터 구조 변경이 자유롭다. 확장성과 분산저장할 데이터가 많아질수록 분산 확장의 필요성이 커진다.MongoDB는 클러스터 환경에서 데이터를 자동으로 여러 서버에 분산(샤딩) 저장하고, 사용자 요청을 적절한 서버로 라우팅하여 데이터 양과 부하를 효율적으로 조절한다. 클러스터와 샤딩클러스터: 여러 서버(노드)가 하나의 데이터베이스처럼 동작하는 구조샤딩: 데이터를 여러 서버에 나누어 저장하는 분산 저장 방식으로, 대용량 데이터 처리와 확장성에 유리하다. 주요 기능인덱싱: 다양한 인덱스 유형을 지원하여 빠른 ..

모델 서빙이란? 학습된 머신러닝 모델(pkl 파일)을 서버에 올려 외부에서 HTTP 요청로 입력값을 보내면 서버가 모델을 이용해 예측 결과를 반환하는 구조를 의미한다.로컬에서 개발한 pkl 파일을 FastAPI 서버가 시작될 때 메모리에 올려두고, API 요청이 올 때마다 predict 함수로 예측을 해주는 것 pkl, h5, pt, pb 같은 모델 파일을 "정적 파일"이라고 생각해도 되나?정적 파일은 웹 개발에서 CSS, JS, 이미지, 폰트 등 서버에서 내용이 바뀌지 않고 그대로 제공되는 리소스를 의미한다.머신러닝 모델 파일도 "내용이 바뀌지 않고, 서버가 필요할 때마다 불러와 사용하는 파일"이라는 점에서 넓은 의미로 정적 파일로 볼 수 있다.즉, 모델 파일은 웹 정적 파일과는 목적이 다르지만, "서..
Fast API&MySQL from sqlalchemy.orm import Sessionfrom sqlalchemy import create_engine, Column, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_base# 1. 데이터베이스 엔진 생성DATABASE_URL = "mysql+pymysql://user:password@localhost:3306/db_name"engine = create_engine(DATABASE_URL)# 2. 베이스 클래스 생성Base = declarative_base()# 3. 모델 정의 (DB 테이블 매핑)class User(Base): __tablename__ = 'users' i..

이전 글https://koreatstm.tistory.com/299 Fast API - 기능https://koreatstm.tistory.com/295 Fast API - 기초많은 프레임 워크를 사용해왔지만, 깊이가 부족하다고 항상 생각했다. 이제는 그것들에 대한 깊이를 더 채워보고자 한다.무엇보다 어떤 질문에 관해서든koreatstm.tistory.com 비동기 처리 참고: https://fastapi.tiangolo.com/ko/async/한 번에 하나의 작업만 처리하는 동기 방식과 달리, I/O(입출력) 작업 등 시간이 오래 걸리는 작업을 기다리는 동안 다른 작업을 동시에 처리할 수 있게 해주는 프로그래밍 방식파이썬의 async def로 정의된 함수(코루틴)는 호출 시 Future 객체를 반환하며,..