2026/04/07 3

Prefect - 오케스트레이션

오케스트레이션이란오케스트레이션(Orchestration)은 여러 작업을 순서대로, 조건에 맞게, 안정적으로 실행하는 것을 말한다.오케스트라에서 지휘자가 각 파트(바이올린, 첼로, 플루트)를 박자에 맞춰 조율하는 것과 같다. 각 연주자(작업)는 자기 역할만 하고, 지휘자(오케스트레이터)가 전체 흐름을 책임진다.데이터 파이프라인으로 예를 들면, 아래 같은 상황이 생긴다.1. 외부 API에서 데이터 수집2. 수집한 데이터 정규화3. 중복 제거 후 DB 저장4. 저장 완료되면 슬랙 알림이걸 그냥 순서대로 실행하는 Python 스크립트를 짜면 되지 않냐고 할 수 있다. 근데 실제로는 문제가 생긴다.2번에서 실패하면 1번부터 다시 해야 하나?어느 단계에서 실패한 건지 로그 뒤져야 알 수 있음매일 자동 실행하려면 c..

Python 2026.04.07

Alembic - 스키마 버전 관리

Alembic이 필요한 이유DB 스키마를 바꿀 때 흔히 하는 실수가 있다. CREATE TABLE SQL을 직접 실행하거나, 팀원들이 각자 DDL을 돌리는 방식이다.문제는 재현성이다. 어떤 DDL이 어떤 순서로 실행됐는지 추적이 안 된다. 새 팀원이 환경을 셋업할 때, 스테이징에서 프로덕션으로 배포할 때 매번 수동으로 맞춰야 한다.Alembic은 마이그레이션을 파일로 관리한다. 각 파일은 upgrade() (스키마 적용)와 downgrade() (롤백)를 담고, 파일 간 연결은 revision ID로 이어진다. alembic upgrade head 한 번으로 현재 DB를 최신 상태로 만들 수 있다.초기 셋업# 프로젝트 루트에서alembic init alembic이 명령어 하나로 alembic/ 디렉토리와..

Python 2026.04.07

SQLAlchemy - Python ORM

ORM이란ORM(Object-Relational Mapping)은 DB 테이블을 Python 클래스로, 행(row)을 객체로 다루게 해주는 기술이다.ORM 없이 PostgreSQL을 쓰면 이렇게 된다.cursor.execute(""" INSERT INTO users (email, username) VALUES (%s, %s)""", ("hello@example.com", "goran"))SQLAlchemy ORM을 쓰면 이렇게 된다.user = User(email="hello@example.com", username="goran")session.add(user)session.commit()SQL을 직접 쓰지 않아도 되고, Python 객체처럼 다룰 수 있어서 코드가 일관성 있어진다. 타입 힌트도 붙..

Python 2026.04.07