Senior Software Engineer - Distributed Messaging Infrastructure
New York, NY
Posted Nov 3, 2022 - Requisition No. 111227
The Bloomberg Managed Services organization (BMS) is responsible for creating and curating Bloomberg Engineering's "as a Service" software catalog and infrastructure. We develop and integrate products into a simple, elegant user interface and provide a concise way for engineers to create data-store and middleware instances.
The BMS Queuing Core team focuses on building and maintaining BMQ, Bloomberg’s very own distributed message queue framework. BMQ provides durable, efficient, and highly available queues by means of persistence, clustering, and replication. While many internal Bloomberg teams already rely on BMQ for their production needs, we have several challenging projects which aim to add more features, reliability, and capacity to BMQ. You'll be working on projects which will expose you to how to design a client API, how to design an efficient wire protocol over TCP, how to implement robust distributed consensus among several nodes, and everything in between.
We work with:
- C++ for the core BMQ message broker.
- C++, Go, Rust, Python, and Java for the client SDKs.
- Raft consensus algorithm for broker coordination and log replication.
- Jepsen & TLA+ for distributed system verification.
- All projects follow the team's SDLC practices, including Docker-based testing, CI, API documentation standards, etc.
We'll trust you to:
- Collaborate within an agile, multi-disciplinary team.
- Develop key features of the BMQ message broker, its client libraries, and its ecosystem.
- Elevate BMQ into a complete, self-sufficient, generic message queue system that we can share with the Open Source community.
- Pick up on new frameworks, experiment, and build software that works seamlessly in various environments.
- Anticipate engineering needs and expectations from Bloomberg engineers, and build solutions that work for them.
- Collaborate directly with product owners and application teams to understand requirements, conduct feature demos, and provide system design consultations.
You'll need to have:
- 4+ years of demonstrated experience in C++.
- A Degree in Computer Science, Engineering or similar field of study or equivalent work experience.
- Strong communication and collaboration skills.
- Strong understanding of distributed systems, data structures, algorithms and system design.
- Experience with multi-threaded programming.
- Commitment to writing meaningful unit tests and integration tests.
We'd love to see:
- Passion for distributed systems and large scale data systems.
- Experience designing and implementing high volume and high availability distributed system.
- Experience maintaining and contributing to large Open Source projects.
- Familiarity with network protocols (particularly TCP).
- Familiarity with distributed consensus protocols like Raft, Paxos, etc.
- Familiarity with Kubernetes and Docker.
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 maternity/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 Amer_recruit@bloomberg.net
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