Data movement — what must be decided before data moves
FOR REVIEW — generated by StackToIT Assess. Architect review required before any decision.
Run 6f8f72b2-1c34-4cfc-8483-344c41245364 · source digest sha256:19bfed642d5789ccada81b91d5c36e33175dcafd66dc46b1644ffa105d020000
StackToIT never moves data. 2 stateful source units are listed here: a person must choose a data-movement mechanism for each. The execution plan takes a method for 1 of them (the only method open, or the one an answered decision took; migration/data-movement-plan.json), and this file names no mechanism class for any (the mechanism is UNKNOWN).
State: DECISION REQUIRED.
Stateful source units
| Unit | Source service | Target service | Application | Mechanism | State | Data class | RPO | Downtime tolerance |
|---|---|---|---|---|---|---|---|---|
| google_sql_database_instance.postgres | google_sql_database_instance | STACKIT PostgreSQL Flex | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED | |
| google_storage_bucket.media | google_storage_bucket | STACKIT Object Storage | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
What the source and the plans state about each unit
google_sql_database_instance.postgres
No mechanism is chosen: it depends on the size of the data, the downtime the business tolerates and the consistency the application needs, and the source states none of them. The execution plan holds the typed steps of each method of the move (migration/data-movement-plan.json) behind the decision DEC-GEN-CONVERT-DATA-MOVEMENT; no method is taken until it is answered.
Provisioned capacity: NOT_STATED_IN_SOURCE.
| Facet | State | Detail |
|---|---|---|
| consistency requirements | NOT_ASSESSED | No consistency requirement is stated by the source or by this build; whether the application tolerates a copy that lags the original is a decision for a person. |
| validation requirement | OBSERVED | The execution plan states how the moved data is validated: 3 manual reconcile steps compare the source and the target with the writers stopped, and the move is accepted only on a recorded GO; the checks after the transfer are row-counts, table-checksums, sequences, restore-log, extensions, roles-and-grants, application-check, rollback-limit, replication-lag, last-sync-time, subscription-state (execution-plan.json: the steps of the move of this unit; migration/data-movement-plan.json: the move in full). |
| cutover dependency | OBSERVED | The unit is in wave 1 of the dependency order. It depends on no other unit. |
| rollback consideration | OBSERVED | The execution plan states the way back of the move: on NO-GO take the rollback without switching anything: the clients still point at the source, which is current to the freeze. The point after which a rollback loses data is a check of the reconcile step (rollback-limit) that the owner records before the window. |
| encryption requirement | NOT_ASSESSED | The source does not state tls-enforcement; an absent setting is not read as a requirement. |
Not known:
- The size of the data is not in the source.
- The rate at which the data changes is not in the source.
- The downtime the business tolerates is not provided.
- The recovery point the business requires is not provided.
- The classification of the data is not provided.
google_storage_bucket.media
This file chooses no mechanism class: it depends on the size of the data, the downtime the business tolerates and the consistency the application needs, and the source states none of them. The execution plan takes the only method open, rclone-copy (migration/data-movement-plan.json, chosen_method); this file names no mechanism class.
Provisioned capacity: NOT_STATED_IN_SOURCE.
| Facet | State | Detail |
|---|---|---|
| consistency requirements | NOT_ASSESSED | No consistency requirement is stated by the source or by this build; whether the application tolerates a copy that lags the original is a decision for a person. |
| validation requirement | OBSERVED | The execution plan states how the moved data is validated: 1 manual reconcile step compares the source and the target with the writers stopped, and the move is accepted only on a recorded GO; the checks after the transfer are object-count-and-bytes, key-lists, content, application-check, rollback-limit (execution-plan.json: the steps of the move of this unit; migration/data-movement-plan.json: the move in full). |
| cutover dependency | OBSERVED | The unit is in wave 2 of the dependency order. It depends on: google_service_account.automation, google_service_account.server. |
| rollback consideration | OBSERVED | The execution plan states the way back of the move: on NO-GO take the rollback without switching anything: the clients still point at the source, which is current to the freeze. The point after which a rollback loses data is a check of the reconcile step (rollback-limit) that the owner records before the window. |
| encryption requirement | NOT_ASSESSED | This build reads no in-transit encryption requirement for this kind of unit, so the source may state one that is not shown here. |
Not known:
- The size of the data is not in the source.
- The rate at which the data changes is not in the source.
- The downtime the business tolerates is not provided.
- The recovery point the business requires is not provided.
- The classification of the data is not provided.
Limits
- The size of the data, its change rate, the duration of a transfer, the transfer rate and the downtime are never stated: the source does not state them and this build has no way to measure them. A provisioned capacity quoted beside a unit is the size of what was provisioned, not the size of the data.
- No mechanism is chosen and nothing is executed: StackToIT is out of scope for actual data movement, and a mechanism class is a recommendation a person makes from the size, the downtime tolerated and the consistency the application needs.
- A unit is listed when its catalogue kind holds data of its own (a database, a cache, a search domain, a warehouse, a block volume, a file share, an object store). A Kubernetes storage class that provisions volumes, a persistent volume and a persistent volume claim are listed too: the volumes behind a class, and the data on any volume, are in the source cloud and not in the Terraform, so a class is a row of what is not known, never a statement that the cluster holds data. A queue or topic service, and a system installed on a server's disk, are not read as stateful and are not listed. A message broker and a container registry repository are not listed: this build has no definitions export and no image-move steps for the ones of this source's cloud.
- The data class, RPO and downtime tolerance are the customer's, from the applications file, word for word; without one, or for a unit outside an application, they are NOT_PROVIDED and no default is assumed.