Veeps
Bringing enterprise engineering expertise to help scale a booming startup.
The challenge
Veeps is a ticketed livestream platform that hosts digital concerts featuring some of the world’s top musicians. Originally designed as a platform where artists could sell VIP packages for their tours, Veeps began offering livestreaming when the COVID-19 pandemic suddenly brought in-person concerts to a halt. Veeps needed to scale quickly to accommodate that shift and the rapid increase in traffic that came with it. To help them, DockYard executed a comprehensive app rebuild in Elixir and added our best-in-class engineers to Veeps’ team to bolster their existing talent.
In a short amount of time, Veeps brought to market a platform that provided what the world wanted: a livestream experience that both artists and fans enjoyed. The quick pivot worked, but the startup soon faced new challenges. Their original Ruby on Rails app was never designed to handle the amount of traffic they were experiencing, and demand was outpacing the platform’s ability to keep up. It’s a familiar inflection point for startups: Rapid growth and increasing product complexity require increasing technical capabilities and a more rigorous development process. Veeps needed to take their engineering power to the next level, and fast.
The solution
01 A more robust platform
Create a scalable system to support massive audiences.
Pumping up the volume
Once the DockYard team concluded that Veeps’ Rails app wasn’t capable of meeting the startup’s needs, our team suggested rewriting the app entirely. Elixir’s reliability and scalability made it the ideal solution for Veeps’ continued growth: The rewrite would give Veeps the capability to expand the amount of real-time interactions and support 10 to 100 times the usage volume.
The right instruments for the job
Elixir runs on the Erlang Virtual Machine, which comes with 35 years of improvements dedicated to concurrency, scalability, and reliability. Designed to support large numbers of concurrent phone calls for Ericsson, the process-driven actor model of Erlang (Ericsson’s Language) is perfectly suited to handle large numbers of concurrent web requests. The syntax in Erlang, however, is dated and not programmer-friendly. Elixir’s modern syntax coupled with the Erlang Virtual Machine brings the best of both worlds together: decades of improvements on a virtual machine with a modern syntax that makes developing enjoyable and efficient for engineers.
A key benefit to Elixir is its ability to handle where the “thundering herd problem” would surface in the new app: e.g. If a top artist were to post an event link to their 100 million fans, would the system be able to handle 1 million clicks coming in the span of a minute or two, and hand out exactly 20,000 tickets? Using Elixir, we were able to architect a rock-solid solution with a multi-layer reservation system that can handle a vast amount of incoming requests at once without crashing.
Establishing a clear vision
When it came time to develop the front-end store experience, Veeps had some wireframe ideas and high-level spoken requirements, but still needed to fully define the details and evaluate core feature needs. We realized we needed to take a step back to first better understand what Veeps wanted and how we could work with them to deliver it. We went through a Technical Discovery with Veeps stakeholders to gain clarity around the problem space, business objectives, and technological possibilities. With these insights and a shared understanding of product priorities across teams, we were able to lay out a roadmap to move forward confidently.
Putting together a winning ensemble
Using those Technical Discovery insights, DockYard took the benefits of Elixir and compounded them with the Phoenix Web Framework — which streamlines web development — and Phoenix LiveView — which provides dynamic live application development without the need for JavaScript development. Together, they create an unstoppable combination for full-featured web applications that are quick and easy to get off the ground, but still scale to meet any need.
02 Enterprise-level engineering
Augment the team with extra technical expertise to accelerate the new build.
All hands on deck
We brought on a number of additional DockYard engineers to augment Veeps’ staff, and worked (virtually) side by side to build the application. We knew a team that worked well together would be critical to the project’s success, so we took the time up front not only to align on things like common goals, roles, and expectations, but also to share details about personal strengths and working styles. Bringing team members together to talk through individual and group dynamics helped foster open communication. We also established a regular meeting cadence with stand-ups and sprint demos every other week to keep everyone connected throughout the project.
Keeping the rhythm
With a large team made up of DockYard and Veeps developers, scaling operations also required establishing more structured development and deployment practices. We brought rigor to Veeps’ development lifecycle to support fast-paced execution and create efficient processes. This included setting branch protection rules with code approvals and status checks which helped keep all engineers aligned on technical workflows and ensured a consistent, secure code base.
To carry out status checks we used static analysis tools such as Dialyzer to catch runtime errors before runtime, and Credo to ensure all developers were using Elixir best practices in the codebase. DockYard took advantage of Elixir's powerful testing framework to cover the codebase with a comprehensive test suite. When it came time to build a migration workflow later in the engagement, we ran the entire migration process regularly as part of Continuous Integration, ensuring that any changes to the application code wouldn’t break functionality in the migration workflow.
03 Process improvements
Shift from a startup to enterprise mindset in strategic planning and execution.
Setting the stage for the next act
Towards the end of the engagement, DockYard built out a suite of performance testing and benchmarking dashboards, metrics, and tools. These gave Veeps visibility into current and potential future bottlenecks in the system. We generated Flame Graphs that identified a number of possible, simple changes to optimize request paths out of the gate, and helped guide the team’s decisions in what and where to cache data for major speed gains. Veeps can continue to use all of these tools to analyze how new changes to the system will impact performance in either direction.
A future-proof foundation
The new app not only solved Veeps’ immediate challenges, but also gave them a dependable platform that will allow them to grow well into the future. By choosing Elixir as the back-end, technology, speed, and scalability were built in right from the beginning, and using Phoenix LiveView simplified development for updates. The final product provided rich, real-time user experiences with a stable foundation that allows for faster and less costly development processes that will prove its value year after year.