Industrial Gateway Startup: Make Service Readiness Part of the Integration Contract
Starting a gateway's storage module before its collector does not establish that the collector can immediately use storage. A workable industrial integration needs both a startup relationship and an application-level readiness contract. Otherwise, a deployment can appear successful while its first records encounter an unavailable dependency.
The distinction matters during normal restarts as well as initial commissioning. This article compares documented Azure IoT Edge 1.6 and AWS IoT Greengrass V2 behavior, then proposes a commissioning exercise. It does not report a tested deployment or prescribe a production restart.

Understand what the platform actually orders
In Azure IoT Edge module composition, startupOrder determines the order in which modules start. The agent does not wait for one module to finish starting before starting the next. Treat a lower startup number as ordering assistance, rather than as an application readiness barrier.
Greengrass has a different distinction in its component recipe lifecycle. A run lifecycle allows dependent components to start when the script runs; deployment success can precede a subsequent script failure. A startup lifecycle waits for successful script exit or an explicit RUNNING state report before dependents start. The component author must ensure that the reported transition represents the intended readiness condition. The platform cannot infer that a database is ready for the collector's particular schema simply because a wrapper exits successfully.
These behaviors should influence packaging. Do not copy the readiness assumptions from one platform into another while retaining only the same container image and process command.
Define a useful producer-to-storage contract
Consider a hypothetical collector that stores equipment observations in a local service before cloud export. “Process exists” is too weak a prerequisite. For this application, the readiness check might require a successful connection, an acceptable schema version, and confirmation that the collector's intended write path is available.
Choose the least intrusive check that establishes the real prerequisite. A listening port alone does not verify application authorization or schema compatibility. Conversely, a readiness probe should not create uncontrolled test measurements in a production dataset. Use an explicitly supported health operation or a separately agreed diagnostic facility, and keep hardware actuation outside the probe.
Specify the consumer's behavior while the dependency is unavailable. It may pause acquisition where the equipment interface permits that, retain a bounded amount of data in an approved buffer, or expose a clear collection gap. The right choice depends on the source and retention obligation. Silently discarding the first records is not a readiness strategy.
Cover recovery after startup has succeeded
A one-time readiness gate cannot prevent a dependency from failing later. Separate an initial admission decision from ongoing error handling. When storage disconnects, the collector should enter its defined unavailable behavior and reconnect under a bounded resource policy. It should not assume that the original startup order grants lifetime availability.
Keep the repair target specific. A schema mismatch should be reported differently from temporary connection refusal. Repeatedly restarting every component can conceal the reason for failure and repeatedly interrupt otherwise healthy services. Log the dependency identity and failing operation without recording credentials or sensitive equipment payloads.
For Greengrass packaging, verify the chosen lifecycle's success path and failure path. For Azure packaging, verify that application retries work even when the dependency takes longer than expected. Neither configuration eliminates the need to decide what happens to observations arriving during the unavailable interval.
Commission the relationship, not just the processes
In an isolated test environment, delay the storage service while allowing the collector to launch. Require an explicit not-ready state and the selected treatment of incoming data. Then release storage and check that the collector becomes useful without an unexplained manual restart.
Repeat with an incompatible test schema and with a dependency restart after normal operation. The first case should remain an actionable compatibility failure; the second should exercise the recovery contract. Compare application observations with platform deployment status so operators understand what each status actually certifies.
The outcome is a dependency agreement that the platform configuration and application both implement. Startup order helps arrange execution. A meaningful readiness condition and defined recovery behavior make that arrangement usable by an industrial solution.