Prefect 주요 구조 - Agent, UI sever

홍성환·2021년 8월 16일
2

1. UI 서버, Agent

  • prefect 구성 요소에는 크게 UI 서버, Agent가 있다.

  • 위 그림은 프리펙트 클라우드 서비스를 쓸 경우의 구조도이다.

  • 오른쪽 cloud ui가 prefect의 UI 서버이다.

  • Flow, task의 실질적인 실행을 하는 요소를 Agent 라고 부른다.

  • Flow 스케줄링, 로그 관리, GUI, Flow 메타 정보 관리를 하는 요소를 UI 서버라고 부른다.

2. UI 서버

  • prefect 클라우드 서비스를 쓸 경우 UI 서버를 자동으로 띄워주고 접속할 수 있다.
  • UI 서버는 Flow 스케줄링, 로그 관리, GUI, Flow 메타 정보 관리를 하며 실질적인 Flow실행을 하지는 않는다.
  • Flow를 실행하기 위해서는 실행장비(agent), Flow 코드 (code storage)가 필요한데, 이에 대한 메타 정보만 UI 서버에서 관리한다.
  • UI 서버에는 flow 실행 코드를 저장하지 않으며, code storage에 보관하는 점을 주의해야한다.
  • 실질적인 코드 실행도 하지 않고 코드 실행은 agent에서 한다는 점도 주의해야한다.

3. Agent

  • prefect는 코드의 실질적인 실행은 agent에서 한다.
  • agent는 prefect를 쓰는 유저가 직접 띄워야 하며 다양한 종류의 agent가 존재한다.

3-1. Local Agent

  • container를 쓰지 않고 돌아가는 Agent이다
  • docker container를 만들지 않아도 되기 때문에 docker로 인해 에러를 볼일이 없다
  • 띄우는 것이 간단하고 빠르게 실행해 볼 수 있다.
Local Agent가 쓸 수 있는 Storage의 특징
  • Local Agent가 쓸 수 있는 Stoarge에는 flow register를 실행한 flow 정의 부분 파일만 저장되기 때문에 모듈들은 같이 저장이 안 되는데, import 하는 모듈들의 path를 지정해줘야 flow를 제대로 실행시킬 수 있다.
  • 즉 Agent가 실행되는 곳에 flow 코드를 제외한 모든 코드가 미리 존재해야하고 PYTHONPATH를 잡아줘야 실행 될 수 있다

3-3. Docker Agent

  • docker 위에서 돌아가는 Agent임
  • flow 코드와 함께 모든 코드가 docker container안에 들어가기 때문에 import와 관련된 문제가 없다.
  • 모든 코드가 docker에 들어가기 때문에 versioning이 깔끔하게 된다.

3-4. Kubernetes Agent

  • kubernetes에서 돌아가는 Agent이다.

3-5. ECS Agent

  • ecs(aws의 container관리 서비스) 에서 돌아가는 agent이다.
profile
Machine Learning Engineer: recsys, mlops

0개의 댓글