Does Prefect guarantee backwards compatibility between server (Orion API) and client (e.g. agent process)?

Prefect Cloud

If you leverage Prefect Cloud, you don’t need to worry about backward compatibility.

We automatically perform:

  • automatic API server upgrades with every new release
  • extensive compatibility testing to guarantee that your code (e.g., running your agent processes, flows, and deployments) will work even with older Prefect clients (think of a client as the Prefect version you install via pip and use to run flows or start agent process)

Open-source Prefect API Server

We try to maintain backward compatibility between new clients and older server versions as much as possible (we have several compatibility tests in our release CI workflows), but it’s not always feasible to guarantee that.

Why?
The client cannot always use an old server version because the client may be making use of new features that the server does not support yet.

Suppose we add extra fields to an API route to support a new feature.

  1. When an old client makes a request, the server will just fill those in with defaults.
  2. When a new client makes a request to an old server, though, it doesn’t know about those fields. Because the client may be expecting the API to behave in accordance with those fields, the server cannot just ignore them and must return an error.

:point_right: Note that: should we introduce breaking changes, we add deprecation warnings at first and give users time to adjust rather than releasing backward incompatible changes right away - follow the Topics tagged release-notes announcements to stay up-to-date.

1 Like