Software Engineer - Distributed Systems


Job Title: Software Engineer (LXD)

Location: Home based - Americas, Europe

Keywords: dqlite, raft, lxd, C, go, remote, open source, travel, home

Reports To: LXD Engineering Manager

Role summary

The LXD team is responsible for the development and maintenance of the container and virtual-machine manager itself (LXD) as well as low-level container manager (LXC), virtual filesystem for containers (LXCFS), the sqlite and raft based database behind LXD (dqlite) as well as a variety of features in the Linux kernel.

This role is specifically focused on dqlite, our distributed sqlite database which uses our own libraft library for establishing consensus and replication and is available as a pure C library or through a Go package that we also maintain.

You will work on the LXD team to maintain and improve the libraft, dqlite and go-dqlite components which we consume in LXD and other projects. Work includes design, development and testing of features in those pieces of software as well as responding to issues and user enquiries.

Key responsibilities and accountabilities

  • Design and implement features across the dqlite stack to solve the needs of LXD and its other consumers
  • Assist in debugging, tracking down and fixing issues encountered by our users
  • Improve Jepsen tests, traditional automated testing and stress tests to catch issues as early as possible
  • Participate in our engineering process through code and architectural review
  • Take personal ownership of problems and drive them to solutions
  • Write high-quality code to create new features and fix bugs
  • Engage with the open source community and commercial partners
  • Collaborate proactively with a distributed team
  • Adaptable to a wide range of situations and software
  • Respond to and work to resolve issues raised by end-users and commercially supported customers as necessary

Required skills and experience

  • Experience with distributed systems (preferably with Raft)
  • Good C programming experience
  • Interest in LXD, containers and virtual machines a plus
  • Involvement in open source projects in the past a plus
  • Solid understanding of asynchronous programming and concurrency patterns a plus
  • Capacity to learn quickly about new systems and techniques
  • Travel domestically and internationally several times a year (when it is deemed safe to resume travel)
  • Strong written and verbal communication skills
  • Degree level education, preferably in a technology field

What Canonical Offers:

  • Learning and Development
  • Annual Compensation Review
  • Recognition Rewards
  • Annual Leave
  • Priority Pass for travel
  • Flexible working option

Canonical believes a diverse workforce enhances our ability to deliver world class software and services which meet the world’s computing needs. We are committed to ensuring equal employment opportunities to all qualified individuals. All qualified applicants will receive consideration for employment without regard to race, color, religion, gender, gender identity or expression, sexual orientation, national origin, genetics, disability, age, or veteran status.

#LI-Remote #stack