Basic Operator flow

Hi everybody

I’m working on a project that uses its own operator for a CRD, therefore, I try to understand the principle of an operator. One thing that I could find is the handling of multiple steps to the desired state.
In our example, we do something like take a snapshot, wait until the snapshot is created, then restore the pod etc. Now should an operator do this in one loop of the “Reconcile” function or should it be something like:

  1. loop: create the snapshot
  2. loop: check files
  3. loop: restore the snapshot
    based on some annotations that change between the different states?