Flyte 태스크

Flyte 태스크

Flyte에서 태스크(task)는 실행의 단위가 되는 소프트웨어 프로세스예요. 파이썬 함수에 @task 데코레이터를 붙이면 그 함수가 곧 태스크가 돼요. 태스크들은 워크플로 안에서 서로의 입력·출력으로 연결되어 하나의 전체 계산 흐름을 만들어요.

출처: Flyte Tasks

태스크 정의

Flytekit SDK로 태스크를 정의할 때는 파이썬 함수에 @task 데코레이터를 사용해요.

import flytekit as fl

@fl.task
def task_1(a: int, b: int, c: int) -> int:
    return a + b + c

이렇게 정의한 태스크는 등록(register)되면 Flyte 클러스터에서 분리된 환경(대개 컨테이너)으로 실행돼요. 그래서 태스크마다 필요한 의존성과 실행 환경을 지정할 수 있어요.

강타입(strong typing) 필수

Flyte가 일반 파이썬과 다른 중요한 점 중 하나는, 태스크의 모든 입력과 출력에 타입 애노테이션이 반드시 있어야 한다는 거예요. 태스크는 강타입(strongly typed)이라서, 배포 시점에 입력·출력의 타입이 검증돼요. 타입이 맞지 않으면 워크플로 실행 전에 문제를 짚어주니까, 런타임 오류를 줄이는 데 큰 도움이 돼요.

태스크 실행

태스크를 로컬에서 실행할 때는 일반 파이썬처럼 함수를 호출하면 되고, 원격으로 실행할 때는 pyflyteFlyteRemote를 써요. 등록하는 방법도 다양해서, CLI의 pyflyte register로 묶어서 등록하거나, Python API의 FlyteRemote.register_task로 개별 등록할 수 있어요.

태스크 변경과 버전

태스크를 고치려면 코드 정의를 바꾸고 다시 등록하면 돼요. 같은 프로젝트·도메인·이름으로 다시 등록하면 그 태스크의 새 버전이 만들어져요. 이렇게 버전 관리가 되기 때문에 과거 실행에서 쓰인 태스크 코드를 그대로 재현할 수 있는 거예요.

더 알아보기