Core Systems Engineer
What is the role about?
This is a new role within a wider, established DevOps team. The primary focus of the team will be to manage the numerous systems that the business has, which have evolved over time, and are in varying states of maintenance. As such, there will exposure to a very wide and varying range of technologies, presenting a huge scope for technical skills development.
What does the role involve?
As an Engineer for the Core Systems team within DevOps, you will be responsible for developing and maintaining deployment scripts for all of the systems that the DevOps team are responsible for. These deployment scripts with for use with the existing tooling that is used in the department, including Ansible, Terraform and a few programming languages like Python, Bash, etc. In most cases this will involve using business-managed Ansible modules to create playbooks relevant to each environment. In all cases, a Don’t Repeat Yourself (DRY) mentality should be maintained, as efficiency is key.
You will be responsible for making sure all systems under your control adhere to the standards developed by the Core Systems Technical Lead. These standards define all the elements of the systems, from backup configuration, to update and deployment strategy, right through to sizing solution requirements.
A large part of the role will involve creating and updating of documentation for the systems we manage, and so strong language and grammar skills are essential. You will also be involved first-hand in performing updates on the systems, firstly testing those in test environments, creating a deployment and rollback plan, and then presenting those changes to the Change Advisory Board. You will then be the primary engineer to perform that work, communicating your progress in line with expectations. The planning and documentation of those plans is essential, and strong organisational skills are a must.
The initial focus of the team will be to analyse the existing systems, with a view to assessing their current state, for example:
- Are the existing OSes and applications sufficiently patched?
- Is the current backup and DR strategy sufficient?
- How is testing performed?
- How are updates and application deployments handles?
- Do we have a CI/CD pipeline to enable a hands-off approach?
You will then be responsible for ‘onboarding’ the systems, bringing them up to scratch in a standardised manner. In some cases, this will involve performing migrations of the systems onto a new platform, and in many cases will require the application to be containerised and moved into Kubernetes.
The final goal is for all systems to be maintained to the same acceptance level, and your responsibility to ensure this is the case
What are my responsibilities?
As this is a new team within the business, the scope of responsibilities is likely to change over time. However, there is a non-definitive list of the responsibilities you will have:
- Maintain up-to-date documentation of all systems under your remit.
- Ensure Operation Systems are patched and maintained up to date.
- Ensure systems are patched against CVEs in a timely manner.
- Develop Ansible playbooks to orchestrate the build and deployment of systems.
- Develop automated deployment test strategies using Continuous Integration (CI).
- Build Continuous Deployment (CD) pipelines to automate deployment of changes.
- Ensure adequate testing of all automation to protect against regressions.
- Develop pre-live test strategies to minimise risk during releases.
- Write up migration implementations and rollback plans to present to the Change Advisory Board (CAB)
- Ensure a Disaster Recovery (DR) strategy for all systems that require it, in line with business requirements
- Develop automation to enable user self-service, where possible.
What are the requirements?
Candidates will be expected to be able to “hit the ground running” with minimal technical training being required. The standard on-boarding training we give to all new starters will, of course, still be provided.
The preferred candidate will have experience dealing with migrations and platform upgrades and will have a strong mind for strategy and planning. Ansible will have featured often in previous work, and a good grasp of using an issue tracker like GitLab / GitHub.
Goal orientation, being forward thinking and a willingness to adapt to meet customer requirements are essential.
What challenges might I face within this role?
There will be several older systems in the estate which will need to be refreshed and brought up to date. These will often involve the deployment of an install of the application and a staged migration over to it.
Application packaging into containers will likely be a frequent activity.
As part of this role you will be required to be a forward thinker with the ability to problem solve and evaluate technical decisions on how solutions are architected and built.
You will be working to high expectations from the business as well as being expected to meet agreed delivery dates. The team is fast paced by nature and requires a real focus and attention to detail.
As the business is fast paced and very dynamic, the goal posts can often change and you will need to be able to cope with this. Being able to reactive to change and switch contexts quickly is important.