Skip to content
October 2026 · 11 min read

Choosing a technology stack for industrial software

A stack should follow the shape of the problem, not a favourite tool. How to define an application's context, choose each of its nine layers, and connect it to plant systems from PLCs to ERP without opening the control network.

ApplicationsCustom SoftwareSystems IntegrationIoT & Telemetry
Line drawing of the automation pyramid beside the nine layers of an application, joined through an industrial DMZ

Key takeaways

  • Choose a stack by the shape of the problem: how the screens behave, where state lives, what the data looks like and how the load arrives. Preference comes last.
  • Industrial software spans the automation pyramid, from sensors and PLCs through SCADA and MES to ERP, and each level runs to its own clock and carries its own risk.
  • Control systems change slowly for good reasons, chiefly safety, availability and service lives measured in decades. Good architecture works with that rather than around it.
  • Plant data should leave the control network one way, through an industrial DMZ, and anything coming back should go through a person and the control system's own change process.
  • The right choice is the one the evidence supports. Build the riskiest part first, measure it on real data and write down why the decision was made.

Most software decisions start with a favourite. A team that knows one framework reaches for it, and the project bends to fit. For a marketing site that rarely matters. For software that reads a control system, plans a shutdown or keeps running through a night shift in a remote control room, it matters a great deal.

The better question is not which tools a team knows best but which stack fits the shape of the problem. This article sets out how we answer it: what changes when software touches plant systems, the context to define before choosing anything, and how each of the nine layers of an application gets decided. It is written for the people who will own the result, usually for longer than anyone expects.

Industrial software spans the whole automation pyramid

Industrial operations are usually described with the automation pyramid set out in ISA-95, the standard for connecting control systems to business systems. At the base are the sensors, valves and drives on the plant itself. Above them sit the controllers that run the process, then the supervisory systems operators watch, then the operations systems that manage production, and at the top the business systems that plan and pay for it.

The Purdue model, which ISA-95 drew on, adds one more line that matters for software: an industrial DMZ between the plant networks and the business network. That line is where most integration work happens, and where most of the risk sits.

Each level runs to its own clock. A PLC scans its logic in milliseconds, an operator responds in seconds, a shift report covers hours and an ERP plans in weeks. Software that crosses levels has to respect every one of those clocks at once, along with the very different appetite each level has for change.

IT
PLANT NETWORKS (OT)
4

Business planning and logistics

ERPEAM and CMMSFinanceSupply

Days to months Moves at IT speed, with upgrades and releases through the year.

3.5

Industrial DMZ

Replica historianData brokerRemote accessPatching

The only door between the business network and the plant, and the place most integration work happens.

3

Operations management

MESHistorianLIMSScheduling

Shifts to days Upgraded in planned windows, because production reporting depends on it.

2

Supervisory control

SCADAHMIAlarm management

Seconds to minutes Changed under formal change control, often only in a shutdown.

1

Basic control

PLCDCS controllerRTUSafety system

Milliseconds Often in service for decades. A change here is an engineering change, tested and signed off.

0

The process

SensorsTransmittersValvesDrives

Continuous Replaced when it fails or wears out, one device at a time.

Measurements, events and production flow upPlans, orders and recipes flow down
Fig. 1 · The automation pyramid, ISA-95 levels with the Purdue DMZ

The value of plant data is realised at the top of the pyramid, but the data is born at the bottom, and the path between them is the design problem.

Why the plant floor changes slowly

Below level 3, technology has historically changed slowly. It is tempting to read that as inertia. It is better read as a set of engineering decisions that software has to respect.

  • Consequence comes first. A fault in a control system can injure people, damage equipment or release product, so every change is engineered, tested and signed off like any other change to the plant.
  • Availability outranks everything. Office systems protect confidentiality first. A control system protects availability first, because a plant that stops loses production for every hour it is down.
  • Service lives are long. Controllers, drives and supervisory systems are bought to run for decades, and vendors certify combinations of hardware, firmware and software that are not changed lightly.
  • Windows are rare. Many changes can only be made in a planned shutdown, and a shutdown has a long queue of work competing for the same hours.
  • The protocols were built for trust. Control protocols such as Modbus were designed for closed networks and carry no authentication, so they cannot simply be exposed to a wider one.

Slow change on the plant floor is a safety and availability decision. Software that treats it as an obstacle will not be allowed near the plant, and should not be.

What has changed, and what it means for the enterprise

The pressure now runs the other way. Sensors are cheap, telemetry reaches remote sites, and analytics and AI models are only as good as the operational data they can see. Maintenance planning in the ERP wants condition data from the historian. Production reporting wants the MES and the weighbridge to agree. Leaders want one picture of the operation, from pit to port.

Meeting that demand does not mean flattening the pyramid. It means designing the path data takes through it. The pattern we start from, and the one current guidance points to, is that plant data leaves the control network one way, into a DMZ, and is joined to business data there or beyond it. The control network never accepts a connection from outside.

The security frameworks for this are mature and worth using as reference points. IEC 62443 groups industrial systems into zones joined by controlled conduits, NIST SP 800-82 is a practical guide to operational technology security, and the Australian Signals Directorate's principles of operational technology cyber security start from the position that safety is paramount.

  1. Levels 0 and 1

    Sensor and PLC · Measures and controls, in milliseconds.

  2. Levels 2 and 3

    SCADA and historian · Collects and stores every tag.

  3. Level 3.5

    Replica in the DMZ · A copy pushed out, never pulled in.

  4. Level 4

    Data platform · Joins plant data to the business.

  5. Cloud or site

    Your application · Plans, reports and models.

↓ Back down

Nothing writes into levels 0 to 2 directly. A change the application wants, a new setpoint or a stopped conveyor, arrives as a work order or a request that an operator reviews and makes through the control system.

Fig. 2 · How plant data reaches an enterprise application

Read freely, write carefully. Data can flow up and out by itself, but changes flow back down through people.

Define the context before choosing anything

With the plant boundary understood, the application itself can be shaped. We define four things before a single tool is chosen, and a fifth check closes the decision.

Interface shape. Some screens are documents: work instructions, reports, an asset register. Standard page rendering handles them well and server rendering keeps them fast. Some are feeds, such as an alarm and event journal with a hundred thousand entries, which need virtualised lists that draw only what is on screen. And some are canvases: a shutdown schedule with thousands of linked tasks, a trend with millions of points, a mine plan or a P&ID with live values. These outgrow the page structure entirely and need Canvas, WebGL or WebGPU rendering.

Where state lives. A thick client holds the working data in the browser, which suits heavy interaction and work that must carry on without a connection, such as inspection rounds in a pit or along a remote rail line. A thin client keeps state on the server, which suits datasets too large to download and environments with strict security, such as a control room terminal. Each has a cost. Thick clients need careful control of what crosses the network, and thin clients feel every delay on it.

Data shape. Asset registers, work orders and permits are relational, with known structure and strict integrity. Inspection forms and planning scenarios vary from one record to the next and suit flexible document storage. Sensor readings and events are time series, written once and read in ranges. Most industrial applications hold all three, so the choice is made for each data set rather than for the application as a whole. Our Time-Series Data Volume Calculator sizes the third kind.

Load pattern. Steady business-hours load runs well on provisioned servers. Spiky load, such as a re-planning run before a shutdown or month-end reporting, wants stateless services that scale out and back. Load spread across many sites with poor links wants processing at the edge that synchronises when it can, which is the industrial version of serving a global audience.

Worked example: a shutdown planning board

1Interface shape

Document

Server rendered pages, standard components

Feed

Virtualised lists

◆ Canvas

Canvas, WebGL or WebGPU

Thousands of tasks on a timeline, dragged and linked, is more than the page structure can redraw smoothly.

2Where state lives

Thin client

State on the server

◆ Thick client

State in the browser

Planners drag and re-sequence constantly, and every round trip to the server would be felt.

3Data shape

◆ Relational

PostgreSQL, SQL Server

Document

JSON columns, document stores

Time series

Time-series store, event log

Tasks, crews, permits and dependencies are known structures with strict rules between them.

4Load pattern

Steady

Provisioned servers

◆ Spiky

Stateless containers that scale out

Many sites

Edge nodes that sync

Quiet for weeks, then everyone re-plans at once when scope changes in the days before a shutdown.

Fig. 3 · The context sheet, filled in for a shutdown planning board

The nine layers, and what each one decides

Once the context is clear, the application can be chosen layer by layer. Every application has the same nine, whether it is a small internal tool or a platform that runs a port. Each depends on the layers beneath it, and two of them, delivery and monitoring, run through all the others.

The industrial column is where the same layer earns different answers on a plant than in an office.

8 · CI/CD · tested, repeatable releases

1Frontend

The screens people use, in an office, a control room or the field.

2API layer

The contract between the screens and the logic.

3Auth

Who you are and what you may do.

4Backend

Business rules, calculations and jobs.

5Database

Records, history and time series.

6File storage

Drawings, documents and photos.

7Hosting

Where it all runs: cloud, on premises, at the edge, or a mix.

9 · Monitoring · errors, speed, uptime
Fig. 4 · The nine layers of an application and how they depend on each other
LayerWhat it decidesIn an industrial settingCommon options
FrontendHow people see and act on the systemGloved hands, glare and rugged tablets in the field, and control room conventions such as ISA-101 high performance HMI designReact, Vue, Angular, Svelte, Blazor
API layerThe contract between the screens and the logicPlant data arrives as subscriptions and events as well as requests, so the API has to carry bothREST, GraphQL, gRPC, tRPC
AuthWho you are and what you may doRoles follow the plant: operator, maintainer, engineer, contractor. A site network may not reach a cloud identity providerEntra ID, Okta, Auth0, Keycloak
BackendBusiness rules, calculations and scheduled jobsLong runs such as optimisation and data reconciliation, kept deterministic and able to restart where they stopped.NET, Node, Python, Go, Java
DatabaseWhere records, history and time series livePlant history runs to billions of rows, so retention, downsampling and partitioning are design decisionsPostgreSQL, SQL Server, time-series and document stores, the existing historian
File storageDrawings, documents and photosControlled documents need versions and approvals, not just a folderS3, Azure Blob, MinIO
HostingWhere everything runsCloud, on premises, at the edge or a mix, decided by latency, connectivity and where data may goAWS, Azure, GCP, on-site servers, edge gateways
CI/CDHow changes are tested and releasedReleases follow the site's change process, and anything near the plant is tested against a simulator firstGitHub Actions, GitLab CI, Azure DevOps, Jenkins
MonitoringHow you know it is healthyA stale or flatlined tag is a failure too, and alerts need the same discipline as plant alarmsGrafana, Prometheus, Datadog, Sentry

No layer is chosen alone. A thin client moves load onto the API and the backend, and a time-series store changes what monitoring has to watch.

Where the plant meets the software

The layer that most often decides an industrial project is the one between the control system and everything else. A handful of patterns cover most of it.

  • OPC UA for structured access to controllers and SCADA, with its own security model and an information model that carries meaning as well as values.
  • MQTT with the Sparkplug specification for publishing plant data to many consumers at once, reporting by exception so a quiet signal costs almost nothing.
  • Store and forward at the edge, so a satellite or radio link that drops for an hour loses no data and does not flood the network when it returns.
  • Gateways for older protocols such as Modbus, translating at the boundary of the plant network rather than carrying the protocol beyond it.
  • The historian as the integration point. Most sites already run one, and reading from its replica in the DMZ is usually safer and simpler than going near the controllers at all.

Use what the site already trusts. A historian and a DMZ that operations understand beat a cleverer path that nobody on site can support.

Evidence before commitment

A stack is a bet on the next ten years or more, so it should rest on evidence rather than enthusiasm. The method is plain, and it is the same whichever technologies end up winning.

  • Build the riskiest part first. If a planning board has to redraw ten thousand tasks while a planner drags one, prove that before building the forms around it.
  • Measure on the client's own data, at its real volume, not on a sample that flatters the design.
  • Ask whether the problem is solved natively. A framework that needs heavy workarounds to do what the job requires is the wrong framework for this context, however good it is elsewhere.
  • Write each decision down. A short architecture decision record captures the context, the options and the evidence, so the next team knows why as well as what.
  • Test the exit. Settings kept outside the code, standard containers and open data formats keep a later move between hosts or tools a project rather than a rewrite.
  • Check supportability. Industrial software outlives the people who build it. If another engineer cannot understand the architecture in six months, or support it in six years, the cleverness has cost more than it saved.

Why we go looking for the hard problems

We have defaults we know well, set out on our Software and AI page, and we leave them the moment the evidence points elsewhere. Familiarity with a wide range of technology matters less than discipline in choosing between them. The point is never the tool. It is software an operation can rely on, in places where getting it wrong has real consequences.

That is also why we would rather take on one hard project than twenty easy ones. The hard ones sit where the plant meets the enterprise: control systems that must stay untouched, data that has never left site, and decisions that need both. They are where architecture makes the biggest difference, and Bridging OT and IT with custom software shows what that looks like in practice.

Common questions

What is the automation pyramid?

A model of how an industrial operation's systems are layered, set out in ISA-95 (published internationally as IEC 62264). Level 0 is the physical process and its sensors, level 1 the controllers such as PLCs, level 2 the supervisory systems such as SCADA and HMIs, level 3 operations management such as MES and historians, and level 4 business systems such as ERP. Each level runs on a different timescale, from milliseconds at the base to months at the top.

What is the difference between ISA-95 and the Purdue model?

The Purdue model is a reference architecture developed at Purdue University in the early 1990s, and ISA-95 drew on it. ISA-95 defines how information moves between operations and business systems. The Purdue levels are now used mostly for security, with an industrial DMZ, often called level 3.5, added between the plant and business networks.

Can cloud software read data from a control system safely?

Yes, when the data leaves the control network one way. The usual pattern replicates the historian, or publishes data to a broker, in an industrial DMZ, and enterprise or cloud software reads from there. Nothing outside makes a connection into levels 0 to 2, and anything the software wants changed goes back as a request that a person acts on.

Should industrial software run in the cloud or on site?

It depends on latency, connectivity and where the data is allowed to go. Planning, reporting and analytics usually suit the cloud. Anything that must keep working when the site link drops, or respond in well under a second, belongs on site or at the edge. Many applications use both, with edge processing that synchronises to the cloud when it can.

What technology stack does Enco use?

We start from tools we know well, including Vue and Blazor on the front end, .NET on the back end and PostgreSQL for data, and we choose against the context of each job. Where the evidence points to a different framework, database or host, we use it. The method matters more than the default.

Key terms

Plain-language definitions from our glossary for the concepts this article leans on.

Standards and further reading

Related case studies and tools

Related reading

Working through something like this?

See how we approach these initiatives, or tell us what you are dealing with.