If you've not heard of us before, our goal is to build THE place to buy and sell tickets to live events all over the world. Our website and mobile applications currently target millions of fans in over 160 countries, 50 languages, and supports almost every currency. Behind this, our distributed platform consists of several applications that communicate with each other via message brokers (like Azure EventHubs and RabbitMQ) and RESTful APIs. The problems we're solving get really interesting when you're operating at as large a scale as we are, so this makes for a really exciting, and challenging environment.
Our backend engineering teams are responsible for building the infrastructure that powers a user's journey from thinking about going to an event, to having the time of their life in front row seats! Some of the challenges we work on include: ingesting and categorizing millions of events across the globe, automated advertising to user's all over the world, processing payments in almost every currency and payment method, integrating with local and global delivery services to get tickets from sellers to buyers. All of these areas pose really interesting challenges when done at scale!
As a senior backend engineer you'll be expected to work on problems at every stage - from understanding the business challenge to implementing and maintaining production systems. Some sample problems that you might work on in the next few months include:
- Add resilience (circuit breakers, bulk head isolation, etc) to a pipeline of data through several .NET 4.7.2 and .NET Core micro-services which produces millions of requests to Google, Microsoft and Facebook APIs every day
- Design and implement a strategy for moving an architecture of Windows Services running on dedicated servers to a horizontally scalable, Microsoft Azure-based, architecture
- Design an architecture (application-level and data-storage-level) for supporting analytical queries over a large dataset (TBs) and operational queries over a minimal subset of the data
viagogo predominantly utilizes Microsoft technologies, such as Windows, .NET, C# and IIS, however, we’re not afraid to use the right tool for the job. We use RabbitMQ for some of our internal pub/sub messaging, Redis for local caching, and gRPC for high performance out of process calls.
Our distributed platform consists of several applications that communicate with each other via message brokers (RabbitMQ/Azure EventHubs/SQL Service Broker) and RESTful APIs. Our backend applications are mostly .NET Core 2.2 or .NET 4.7.2 Windows services and ASP.NET Core 2.2 or ASP.NET Web API 2 APIs. At the database layer, we use a set of SQL Server 2017 databases deployed in a high-availability configuration using availability groups. These support everything from high-volume transactions to decision support/telemetry analytics. We're increasingly taking advantage of the Azure cloud to enable hybrid or cloud-only scenarios that support our global growth, and ability to quickly respond to surges in demand.
Success in this role requires a passion for both technology and using it to solve business challenges. We expect that you've already demonstrated your ability to solve hard problems multiple times already and have consistently been drawn to larger projects with increasing amounts of risk/load/complexity (or similar dimensions). We also know that the only way to gain experience is by having tried and failed multiple times, so we'll expect you to have plenty of war stories to share with us about the times when it didn't work out quite as planned, and what you learned. You'll also likely be a specialist in one or more areas – working alongside individuals who have extreme depth in areas like SQL Server performance, ASP MVC and Web API, or performant C# code – we'll expect you to bring an additional dimension to our team that you can leverage not only by building exceptional solutions, but also sharing that knowledge to build a better engineering team.