Company: European Bioinformatic Institute. Hinxton.
About this job
fire, devops, python, java, go
We are seeking to recruit an enthusiastic, highly motivated senior software developer to work on the UK Biobank EMBLEM project at the European Bioinformatics Institute (EMBL-EBI) located at the Wellcome Genome Campus near Cambridge in the UK. The main purpose of the role is to support the containerisation and deployment of FIRE, a locally developed software-defined storage system that provides FIle Replication in our internal data centres and remote cloud environments. You will participate in extending the existing service in support of a new collaboration with the UK Biobank to provide archival and distribution of 500,000 whole-genomes.
FIRE is an established software-defined storage system based on open source software, aiming to provide fast data archival and retrieval at scale, for the many physical, virtual and container platforms managed by other EMBL-EBI service teams. FIRE is currently growing by around 2PB of new data each month and is currently undergoing a huge transformation to become a cloud-like service available to EMBL-EBI teams. You will be joining the team which maintains the legacy code and runs the service while implementing the new solution within our hybrid cloud environment.
You will be working in the Software Development and Operations team led by Sarah Butcher, within the Technical Services Cluster (TSC).
You will be involved in the design and development (end to end) of key components of the FIRE infrastructure and FIRE service. As part of our team you will continuously work to improve the reliability and performance of our service, and as a team we will be responsible for ensuring the service provided to UK Biobank, and to other existing archives, is of the highest standards.
You will design, develop, provision, monitor and maintain production-grade infrastructure for our FIRE service. You will also set up and maintain CI/CD pipelines, develop and extend internal tools to streamline and automate workflows. You will contribute to our reduction of time to production by containerising our delivery systems and improving our orchestration platforms (Kubernetes). You will also play an active role in evaluating new tools and technologies from the open-source communities. You will produce and share technical documents and user documentation, take part in the daily Scrum, and provide user orientated communication for external and internal users of the systems.
You will use your skills to actively participate in design, implementation and release of new features, while ensuring minimal service disruption by using existing and new CI/CD components.
You will work closely alongside other software developers and DevOps software engineers in the FIRE and wider SDO teams. You will be working with early adopters at EMBL-EBI and with internal collaborators across EMBL-EBI to collect requirements and gather feedback to support the development and roll-out of the software. The overall objective of your position and our team will be to provide a stable and reliable access to a 50+ PB scale data store to help researchers focus on their job while relying on our software-defined storage.
You will have a Bachelor’s degree or higher in computer science, software development or equivalent experience, and you will have demonstrable experience in production grade development and deployment of WEB-API services. You will be proficient in Linux and be fluent in Java/Python/Go or similar (currently we are mostly using Spring boot). Prior work experience should include four or more years of Java or API development in a team environment or supporting production software in an academic or commercial setting. You should also have experience in communicating and working with expert users (e.g. in a science community, technical end consumers).
You will understand modern web applications, exposing RESTful APIs (particularly Spring Boot) and have experience in source code management, CI/CD and you will already know or be willing to learn automation tooling (e.g. Git, GitLab CI/CD, Puppet, SaltStack or Ansible). As well as having an acceptable working knowledge of Linux systems administration and shell scripting, you will have demonstrable practical experience implementing performance requiring software, debug its issues and monitor its bottlenecks.
You will also have sufficient knowledge within the fields of databases, networking and storage to identify problems on those systems.
The ability to work within a team and in collaboration with others is critical to this position and excellent communication skills, verbal and written, are essential. An ability to deliver to high standards is essential as is the ability to work within our team’s road map when making technical decisions.
You will be able to pay attention to detail but also manage your time effectively to ensure timely delivery. You will also demonstrate innovation and a willingness to take on new challenges, by yourself and within the team. You will use software development best practices, have a passion for code development and making software that can be used by other members of the team.
You understand what TTFB means for a critical infrastructure constantly being used, and find ways to improve the infrastructure without impacting the service. On a daily basis you will be able to identify what needs to be done, set priorities using our tools (Jira, Gitlab, Confluence) and be part of a team that embraces challenges and constantly aims for personal and technical improvement.
If you have a strong and relevant set of skills and are constantly willing to learn and improve, this could be an opportunity for you. If you like monitoring, performance measurement and finding the equilibrium between working with the latest version possible and the more stable release; and if you are willing to work hard to deliver a high quality service used for the greater good, we would like to hear from you.
You might also have
- Strong programming skills in any programming language, with willingness to learn Java Spring Boot (if not already fluent)
- Experience with other JVM languages, Front-end development
- Experience with design/implementation/delivery of microservices
- An understanding of object storage systems and http load balancers
- Practical experience using SQL databases and message queues
- Experience with hybrid cloud service development and deployment
- Experience with ORM frameworks, log shipping and presentation, performance monitoring and trend visualization
- Familiarity with agile development practices and the full software development lifecycle in a team environment
- Experience writing and supporting scientific workflows and pipelines; perhaps also including those using bioinformatics tools