6 COMPANIES PIONEERING THE USE OF DISTRIBUTED SYSTEMS
A growing number of big companies have swapped cumbersome monolithic applications for distributed systems. And in virtually all cases, they’ve boosted customer satisfaction, reduced costs, and increased revenues.
The adoption of distributed systems is now becoming a major trend, with many smaller businesses and startups recognizing the benefits. In this post, we’re going to take a look at six of the world’s most prominent companies, all of which have successfully implemented distributed systems.
A Quick Definition: What Is a Distributed System?
A “distributed” or “microservice” system is one in which the individual components of an app are only loosely coupled and operate somewhat independently of each other. Whereas a traditional app has a discrete code-base which is responsible for all its functionality, a distributed system employs REST API calls to lots of “mini-apps” to execute processes.
There are a number of benefits that distributed architecture provides over monolithic systems, which operate as single, unified programs. Organizations that leverage a distributed approach, for example, are able to test and troubleshoot more efficiently, build out their tech stack, and add new functionality without the need for extensive development and testing.
It’s important to remember that companies like Amazon, Netflix, Youtube, and so on, rely on powerful applications composed of vast quantities of code. Managing this code-base, no matter how well-organized it is, presents significant challenges, both in terms of development and deployment. And microservices have helped mitigate, and in some cases even eliminate, these problems.
With all that in mind, let’s take a look at some examples of companies that have successfully implemented this kind of approach.
“Much like the Cloud, the Netflix microservices ecosystem has grown and matured over the recent years. With hundreds of microservices running to support our global members, we have to re-evaluate many assumptions all the way from what databases and communication protocols to use, to how to effectively deploy and test our systems to ensure greatest availability and resiliency, to what UI paradigms work best on different devices.” Ruslan Meshenberg, Ex Netflix Developer
Netflix is a trailblazer when it comes to microservices. The company won the JAX Special Jury Award in 2015 for its contributions to information technology.
In its early days, Netflix struggled to cater to rising demand, and the monolithic infrastructure it relied on was prone to outages and slow load times. This prompted a shift to cloud-based microservices. Today, the company efficiently serves nearly 100 million users and deploys new code on a daily basis. You need only consider how quickly it responded to increased sign-ups during coronavirus to see the effectiveness of microservices.
Notably, microservices have allowed Netflix to create unique customer journeys and interfaces for different sections of its market. As you can see from the image above, signing up on a set-top-box (STB) in America is a markedly different process from subscribing on a mobile device in Japan.
“Having one codebase seemed “clean” at the time, and solved our core business problems, which included connecting drivers with riders, billing, and payments. It was reasonable back then to have all of Uber’s business logic in one place. As we rapidly expanded into more cities and introduced new products, this quickly changed.” Einas Haddad, Senior Software Engineer at Uber
Uber is an interesting case study. Its infrastructure powers multiple solutions across literally hundreds of cities, dealing with trip planning, messaging, billing, passenger and driver notifications, and more. All of these tasks contributed to a colossal workload for its monolithic system.
Uber built an array of microservice applications, along with an API gateway linked to the app, to power its multi-layered service. It’s this model that has allowed it to expand aggressively into new markets and scale accordingly without sacrificing usability and functionality.
“In a natural evolution from a services architecture, we at eBay have adopted microservices to help us drive faster and more productive development cycles.” Ramesh Mahadevan, eBay Engineer
eBay has nearly 200 million users and faces a set of challenges that are unfamiliar to many online retailers. Along with offering typical features like product catalogs, payment processing, and user accounts, eBay also has to run a complex bidding system and associated marketplace comprised of millions of third-party sellers.
In 2005, eBay started to move over to a Java-based distributed system in the cloud. Since then, it has seen dramatic improvements in everything from team autonomy to customer innovation.
Before moving over to a distributed system, Zalando relied on a monolithic tech stack based largely on Java, Spring, and Postgres, which caused a variety of problems, particularly in relation to team coordination and app deployment.
Nowadays, Zalando utilizes over 200 microservices. Individual coding teams have significant autonomy over all aspects of the development, quality assurance, and deployment processes, with standardized API rules across the company and detailed staff audit trails. All of these things allow Zalando to innovate and implement services far faster than it would otherwise be able to do so.
While devs have a large amount of freedom in choosing which languages to write in, Scala is used as a core language due to the conciseness of its code and its overall efficiency (in relation to things like function composition, types, concurrent upload speed etc.). A tech agnostic and agile approach has also allowed Zalando to embrace variance in software design (rather than pursuing a rigid development and quality assurance structure) and thus innovate at a faster pace than many of its competitors.
“The giant, monolithic “bookstore” application and giant database that we used to power Amazon.com limited our speed and agility. Whenever we wanted to add a new feature or product for our customers, like video streaming, we had to edit and rewrite vast amounts of code on an application that we’d designed specifically for our first product—the bookstore. This was a long, unwieldy process requiring complicated coordination, and it limited our ability to innovate fast and at scale.” Werner Vogels, Amazon CTO
Amazon was one of the first big players to leverage microservices, shifting from its monolithic architecture to Amazon Web Servers (AWS) in 2001. Prior to this, the task of coordinating hundreds of developers across multiple countries was quickly becoming untenable.
The move allowed Amazon to employ its “continuous development” strategy, through which it makes incremental, long-term improvements to its site functionality and drives positive changes over the long-term. Where previously it might have taken weeks to offer a new feature available to customers, now it can be done in a matter of days if not hours.
“Building and operating services distributed across a network is hard. Failures are inevitable. The way forward is having resiliency as a key part of design decisions.” Argha Chattopadhyay, SoundCloud Developer
Around 2012, SoundCloud began transitioning to a distributed architecture. It enabled its dev teams to build discrete apps in Scala, Clojure, and JRuby while shifting functionality from its monolithic Rails system. SoundCloud initially went through a polyglot phase, allowing developers to code in their language of choice. But the risks and challenges associated with this approach eventually led to the consolidation of languages – favouring Scala for its general-purpose applicability.
SoundCloud runs a myriad of services, encompassing track management, messaging, analytics, a mobile app, and so on. And a microservices strategy has enabled the company to drive innovation in virtually all areas of functionality.
Soundcloud leveraged a backend-for-frontend (BFF) pattern to negate many of the challenges associated with a complex microservice API infrastructure.
In 2017, in-house developer Matthis Käppler wrote that “adopting a microservices architecture has allowed us to regain team autonomy by breaking up our monolithic backend into dozens of decoupled services, each encapsulating a well-defined portion of our product domain.”
Distributed Systems Are a Fantastic Opportunity
Properly understood and implemented, distributed systems provide companies with an opportunity to drive innovation in a flexible and efficient environment. Microservices are good for developers and good for customers.
If you’re thinking about taking the plunge, get in touch with Scalac today. We can help you map out a path to a fully distributed architecture while allaying any concerns you might have about transitioning from your existing monolithic code-base.
- A Prelude of Purity: Scaling Back ZIO
- Functional Programming vs OOP
- OpenTelemetry from a bird’s eye view: a few noteworthy parts of the project
- ZIO Test: What, Why, and How?
- Why Nearshore Software Development can be an excellent solution to your business