Software Developer II, Real Time Platform
Software DeveloperII,Real Time Platform
AppNexus’ mission is to build a better Internet. As a pioneer in real-time technology, we have developed our platform to make our advertising solution one of the fastest, most reliable, and massively scaled systems in the industry. As a transparent and independent partner for some of the largest publishers and advertisers, AppNexus helps ensure that the Internet stays open and free. Over the past 3 years, our platform has scaled from processing 300k QPS to over 5 million QPS, totaling approximately of 100 billion requests per day. These events generate more than 150 TB of new data each day. Engineers work on the real-time components to optimize our software for performance, memory usage, and algorithmic efficiency. This is an energizing community of engineers that is committed to building dependable products – the software and systems being built drive our real-time bidding business along with a multitude of other core initiatives for AppNexus. We work under strict real-time constraints, responding to and executing dynamic and customizable auctions in less than 100 milliseconds.
AppNexus is seeking a Software Developer II to join the Real Time Platform team. This teams builds large, distributed components that execute and process billions of requests that seamlessly connect advertisers to consumers and ensure that publishers are compensated for their ad space and content. The Real Time Platform group handles everything from the APIs used by clients to set up their buy-side and sell-side configurations to the highly customized web services that run the 100ms auctions.
Consider some of the problems you will try to solve:
- Large-scale distributed systems: Our real-time budget problem requires a low-latency feedback loop, pushing updates on millions of objects to thousands of machines using our custom caching solution, all while observing strict SLA requirements.
- Interesting algorithmic problems: Optimize revenue, memory footprint, and overall algorithmic efficiency, making use of the latest research and techniques, high end hardware, lock-free data structures, intelligent thread design, and system architecture.
- Programming, probability, and statistics: Client success depends on the ability to accurately predict and track the performance of thousands of advertising campaigns that bid on a cost per impression, cost per click, cost per acquisition, or cost per view basis, all while staying within our 100ms time limit.
About the job:
- Design and implement new features and enhancements to our platform that require hard real-time constraints and elegant, yet powerful software solutions
- Collaborate within a small functional team with diverse technology backgrounds, as well as across multiple functional teams that develop systems and integrate across the platform
- Deploy regular code releases to production and test environments; prioritize bug fixes to ensure critical up-time
- Be responsible for the general health of the global real-time applications that must be operational 24/7/365
- Participate in design discussions about new features and ensure real-time technology integrates seamlessly with other pieces of the platform
About your skills and experience:
- BA/BS degree and 3+ years of experience OR MS degree and 2+ years of experience in software engineering (Degree in Computer Science or related field preferred)
- Experience using either C, C++, Golang, or Java, with excellent and creative problem-solving abilities
- Experience building high performance, multi-threaded, distributed systems and applications, preferably in a Linux environment
- Experience practicing advanced optimization techniques and with performance analysis
- Experience with real-time data processing engines, ultra-low-level, and low latency systems is preferred
- Excellent Computer Science fundamentals with regards to data structures, algorithms, time complexity, etc.
More about you:
- You are passionate about a culture of learning and teaching. You love challenging yourself to constantly improve, and sharing your knowledge to empower others
- You like to take risks when looking for novel solutions to complex problems. If faced with roadblocks, you continue to reach higher to make greatness happen
- You care about solving big, systemic problems. You look beyond the surface to understand root causes so that you can build long-term solutions for the whole ecosystem
- You believe in not only serving customers, but also empowering them by providing knowledge and tools