Senior Software Engineer - Ticker Plant
New York, NY
Posted Jan 6, 2023 - Requisition No. 113168
The Ticker Plant system is the beating heart of Bloomberg’s market data infrastructure and is responsible for the storage and distribution of Market Data -- trades, quotes, and other pricing data -- collected from every type of trading venue around the world on every possible kind of financial instrument. The system processes daily volumes of several hundreds of billions of events across 100 million instruments. Aggregating, enriching, storing and disseminating these events to the user-facing Bloomberg Terminal and through a range of Bloomberg Enterprise solutions that form the backbone of today’s financial institutions. Read our blog to know more!
Ticker Plant is organized into three main functional areas:
Market Data Distribution handles for custom high performance middleware that enable transmission of market data events in and out of the Ticker Plant. Our challenges are to provide a system that can ingest and redistribute data successfully reliably (without loss), resiliently (fault-tolerant), at scale (hundreds of hosts, billions of ticks), and all in real-time with minimal latency.
Data Content develops software components and systems to transform, enrich, store and publish normalized market data in real-time. The team develops tools and services that aid in automated testing and verification of the functionality to ensure stability of the system.
Database Infrastructure develops a high performance time-series database that supports low latency data storage and retrieval for high-volume applications. The storage engine hosts several petabytes of data, across hundreds of millions of instruments. The query engine handles ~80 billion queries daily ranging from interactive queries to batch queries at very high throughputs of up to 100K QPS.
Our system is scalable, distributed, highly performant, and stable. To be highly performant, most of the software is written in C++. We also use Python to build auxiliary services around the critical software and enable automation. We use a wide range of engineering strategies to tackle problems ranging from using off the shelf software (like kafka) to implementing our own algorithms/solutions (e.g custom built database).
What we do:
We have some unique challenges where we not only have to optimize for scale, but also for very high throughput of updates and queries at the same time. As market data volume increases each year, these challenges get harder with the current infrastructure, so we are re-architecting and re-writing core parts of our system to make the system simpler and more scalable. Some examples are:
- Consolidate existing data distribution mechanisms onto a fast, loss-less, resilient distribution infrastructure.
- Improve scalability by separating data processing and data storage layers, making them independently scalable and ultimately moving storage and query layers to cloud infrastructure.
- Make efficient use of resources by dynamically balancing load in response to market data spikes.
In addition to re-architecture initiatives, we also work on projects to enhance the functionality and stability of Ticker Plant. Some examples are:
- Modernize internal data representation and associated processing to seamlessly support increasing price and time precision, increasing volumes, and emergence of new products (e.g. cryptocurrencies). .
- Create tools and frameworks for real-time production data stream introspection to ensure data quality.
- Build API abstractions and self-service solutions to Ticker Plant data processing configuration layer in order to enable faster feature development and improve stability.
We are looking for a motivated engineer who is excited by these types of projects/problems to help build the next generation Ticker Plant!
You’ll need to have:
- 4+ years working with an object-oriented programming language (C/C++, Python, Java, etc.)
- A Degree in Computer Science, Engineering, Mathematics, similar field of study or equivalent work experience
- An understanding of Computer Science fundamentals such as data structures and algorithms
- Prior contributions to system design and architecture and scaling fault-tolerant, distributed systems
- Honest approach to problem-solving, and ability to collaborate with peers, partners and management
Bloomberg is an equal opportunity employer, and we value diversity at our company. We do not discriminate on the basis of age, ancestry, color, gender identity or expression, genetic predisposition or carrier status, marital status, national or ethnic origin, race, religion or belief, sex, sexual orientation, sexual and other reproductive health decisions, parental or caring status, physical or mental disability, pregnancy or parental leave, protected veteran status, status as a victim of domestic violence, or any other classification protected by applicable law.
Bloomberg is a disability inclusive employer. Please let us know if you require any reasonable adjustments to be made for the recruitment process. If you would prefer to discuss this confidentially, please email firstname.lastname@example.org.
The referenced salary range is based on the Company's good faith belief at the time of posting. Actual compensation may vary based on factors such as geographic location, work experience, market conditions, education/training and skill level.We offer one of the most comprehensive and generous benefits plans available and offer a range of total rewards that may include merit increases, incentive compensation [Exempt roles only], paid holidays, paid time off, medical, dental, vision, short and long term disability benefits, 401(k) +match, life insurance, and various wellness programs, among others. The Company does not provide benefits directly to contingent workers/contractors and interns.
Salary Range: 160,000 - 240,000 USD Annually + Benefits + Bonus