Skip to main content

The DfE technical guidance and its content is intended for internal use by the DfE community.

The DfE Technology Stack

At DfE, we believe that boring decisions are good decisions. We therefore provide some default options for technology choices that are well supported within the community and well tested.

These recommendations are purely that: recommendations. They are not standards that you must meet. There are often reasons for deviating from these recommendations, but as a team you should be prepared to justify why you made these decisions, and to trace that back to a user need that drives the decision.

Application Stacks

The department supports two core tech stacks: .NET and Ruby on Rails. Currently, C#.NET is our preferred tech stack and Ruby is used by exception. Speak to the Head of Software Engineering Profession for guidance on how to choose the right one for your team.

The Ruby Stack

Ruby and Rails align to government guidance on using open source software. We recommend that teams look at the boilerplate project when starting their projects.

The .NET Core stack

The department has many applications written in C# and the.NET framework and is continuing to develop more. The free and open source .NET Core aligns with government guidance on using open source to improve transparency, flexibility and accountability.

The Node.js stack

DfE has some services built in Node.js, but this is not a core language or framework supported by the department for developing services. Frontend usage may be allowable but should be gauged in the wider context of your service and service area. This should be determined by the team working closely with the software development and technical architecture communities.

Everyone is free to use the GOV.UK Prototype Kit for prototyping.

Hosting Stack

Azure

DfE uses Microsoft Azure as its primary hosting platform. New services should request an Azure account via the Cloud Infrastructure Platform (CIP) team.

For more information about CIP and the onboarding process of services and users you can contact the team on:

CloudPlatform.ENGINEERING@education.gov.uk or Slack

Community support for Azure use in general can also be gained from the community in the #cloud-platform Slack channel.

Infrastructure as code

DfE uses Terraform and Azure Resource Manager (ARM) templates for automating and scripting Azure infrastructure creation and changes.

Some examples of Azure automation at scale that can be viewed and contributed to are:

CI/CD pipelines

For build and deployment pipelines, DfE use Azure DevOps and Github actions.

Containerisation

DfE uses Docker to isolate and package up application dependencies from infrastructure and environment concerns. All repositories should be added to the dfedigital Docker Hub organisation (paying) or Github container registry (free for open source).

When integrating Dockerhub in CI/CD it’s best to use an appropriately named generic Dockerhub account (e.g. your-project-name) set up specifically for your project and documented in your team’s runbook / opsmanual. This saves problems caused when users move on from a project.

Ask Digital tools support to have members added to the DfE Docker Hub organisation and for help adding credentials to use with your CI/CD pipeline.

Logging, monitoring and alerting

DfE uses different tools: - Azure Application Insights for logging and monitoring, with the ability to send custom telemetry. - Sentry for error reporting - Logit for centralised logging, query and visualisation - Prometheus and Grafana for collecting application metrics and visualisation - StatusCake for website monitoring from outside

See Monitoring.