Choose a technology
Development language and Framework
The primary technology choice for new FCP services is Node.js with JavaScript deployed to Azure Kubernetes Service (AKS).
Delivery capability in the programme has been optimised for this technology stack.
For scenarios where Node.js is not appropriate, Defra's secondary framework and language is .NET and C#.
To deviate from Node.js and JavaScript, you must have a strong case and have received approval from a Principal Developer.
For full details of Defra's development framework standards, see the Defra Software Development Standards.
Node.js
For web based services, Hapi.js as the web framework. Other web frameworks such as Express are not permitted.
Code must be written in JavaScript linted with StandardJs. The use of TypeScript is not permitted.
.NET
For scenarios where Node.js is not appropriate, .NET can be used with approval of a Principal Developer.
The FCP Platform has been developed to support .NET, however there are not as many supporting tools and libraries given the low adoption of the technology within the programme.
Compute
Azure Kubernetes Service (AKS) is the preferred compute technology.
Kubernetes deployments must be managed using Helm.
Databases
PostgreSQL is the approved database technology. It is the only database that is fully supported by the FCP Platform.
Azure Database for PostgreSQL has been deployed to Azure.
Code first migrations
Liquibase is the approved tool for managing database schema changes. Both CI and CD pipelines have been setup to support Liquibase.
Whilst technologies such as Sequelize and Entity Framework can be used, they should not be responsible for managing database schema changes.
Messaging
Azure Service Bus is the preferred messaging technology.
Caching
Redis is the approved caching technology.
Azure Cache for Redis has been deployed to Azure.
Storage
Azure Blob Storage, Azure File Storage and Azure Table Storage are the preferred storage technologies.
Blob Storage should be favoured over File Storage where possible due to it's superior local development experience.
Containers
Docker is the approved container technology.