Software Developer/ Engineer/ Architect

Software Engineer III - NGINX Unit

About NGINX Unit

NGINX Unit is a lightweight and versatile open-source web server that can play multiple roles at the same time: reverse proxying, load-balancing, managing apps, and serving static media assets.

Unit is fully configurable in runtime with zero interruption via a user-friendly HTTP RESTful JSON API that enables on-the-fly granular management for engineering and operations. It can natively run web apps in seven different languages.

Unit is intended for use as a basic building block for any web architecture regardless of its complexity, from enterprise-scale deployments to your cat’s homepage.

Unit runs on any modern Unix-like OS and supports different architectures. It is written in pure C with minimum external dependencies and puts a focus on performance, low latency, and scalability.

Unit utilises a complex asynchronous multithreading architecture comprising multiple processes to achieve security and robustness while getting the most out of modern hardware. It optimises its syscalls and uses lock-free queues over shared-memory IPC to communicate with application processes with almost zero overhead.

This is an exciting project with lots of space for development in its already broad functionality.

More information: https://unit.nginx.org/

 

About the Team

The team behind Unit is small and lead by experienced developers of the original NGINX. Our development process includes deep diving into all aspects of the problem and meticulous code reviews. We put a lot of focus on details and maintaining a consistent code style where every line and every character matters.

 

Position Summary

We're looking for an experienced C developer to strengthen our efforts in making Unit the world’s most popular server for web application development and deployment.

 

Primary Responsibilities

  • Research, design, and implement new functionality
  • Maintain existing code base; debug, refactor, and optimise code
  • Discuss issues with colleagues to search for solutions and find them
  • Review patches from other team members
  • Collaborate with the open-source community on issues and troubleshooting
  • 3+ years of programming experience and language expertise in C/C++
  • Extensive experience of Unix-like operating systems and common development toolchains
  • General knowledge of how CPUs, memory, and OS kernels work
  • Experience programming asynchronous and multithreading applications
  • Experience programming client-server applications
  • Understanding of network and web protocols
  • Great self-discipline with a focus on excellence
  • Steadfast desire to learn new things and constantly improve
  • Love for finding innovative solutions to complex challenges