Ahrefs is looking for a C++ Software developer with a keen interest in developing database systems.
Clickhouse DBMS is the backbone of our infrastructure, holding multiple exabytes of crawler dataset updated in real-time and building advanced and flexible analytics reports for our customers. The Ahrefs team is overcoming multiple challenges to adapt the open-source Clickhouse DBMS to operate with distributed clusters of massive scale on bleeding-edge hardware.
What you will be working on:
- Collaborate with the software engineering teams in charge of data gathering and business logic to identify performance optimization opportunities for low latency massively parallel data processing and work with other open-source contributors to improve Clickhouse performance and scalability. Implement optimizations specific to Ahrefs hardware and dataset to ensure data ingestion and queries perform efficiently on our infrastructure.
- Improve the robustness and fault tolerance of the data infrastructure by enhancing edge cases and error handling inside the database code as reported by the DevOps team, and adapt features of the database to simplify operations.
- Implement new features in the SQL interface and Clickhouse API to help the business team develop new reports.
- Work with the open-source Clickhouse community to upstream changes and improve the Clickhouse database as a whole.
- Help maintain Ahrefs' specific fork of Clickhouse for features that cannot be upstreamed.
Basic requirements:
- Experience in C++ (including C++20).
- Understanding of Unix/Linux systems.
- Strong production debugging skills.
- Willingness to work on open-source and cooperate with the Clickhouse developers to upstream as many changes as possible.
The ideal candidate is expected to:
- Independently deal with bugs, schedule tasks, and investigate code.
- Make well-reasoned technical choices and take responsibility for them.
- Understand the whole technology stack at all levels: from network and user-space code to OS internals and hardware.
- Handle the full development cycle of a single component i.e., formalize task, write code and tests, set up and support production (basic DevOps), assure data correctness and quality.
- Approach problems with a practical mindset and suppress perfectionism when time is a priority.
- Write flexible, maintainable code and adapt to post-launch requirements/tweaks.
Ahrefs does not engage with agencies or third-party recruitment solutions for the roles we hire for. If at any point we need help, we'll let you know!
Who we are
We are a small team that strongly believes that better technology leads to better solutions for real-world problems. We worship functional languages and static typing, extensively employ code generation and meta-programming, value code clarity and predictability, and constantly seek to automate repetitive tasks and eliminate boilerplate.
We are guided by DRY and follow KISS. If there is new technology that will make our life easier, we'll give it a try. We rely heavily on open-source code (as the only viable way to build a maintainable system) and contribute back. We occasionally blog on tech.ahrefs.com.