• Application development company
  • Application development company
  • Application development company
  • Application development company
  • Application development company
Application development company
Application development company

Akhil Sundar

Senior Software Engineer

Application development companySep, 2020
Application development company6 min read
#JAVASPRINGBOOT
#MICROSERVICES

A Look at the Uber Microservices Architecture

Microservices architecture systems are much discussed in today’s times. Many large enterprises in the world have seen enormous success after the adoption of microservices. These organizations meet their scaling and agility goals easily by adopting microservices.

While the main premise of this article will be the discussion of the Uber microservices architecture, we will also discuss the key concepts that govern the microservices architecture and the pros and cons of this software system framework.

Definition of microservices architecture

Definition of microservices architecture

Microservices is a software architecture system that consists of small independent services, each of which performs a business function. Each of the independent business services is built on a technology stack that is most suited to the function.

In a monolithic software architecture system, a large piece of cohesive code carries out all the functions. The code is tightly coupled together and is difficult to untangle. Though a monolith carries out a number of functions, adding new code or modifying existing code can be a burden. With more upgrades, the coding becomes more complicated till it becomes impossible at one stage. 

Microservices architecture-Key concepts

Microservices architecture-Key concepts

Before designing a microservices system, it is vital to have a clear understanding of the scope of the services and the functionalities of the application at hand.

Main Design Guidelines for Microservices

  • First, the domains should be separated and each business function should be clearly understood.
  • Each of the microservices that you plan to have should have only a single functionality.
  • The entire application should be designed in a manner so that it is possible to deploy each service independently.
  • Inter-services communication should take place via a stateless server.
  • Each service can be factored down into smaller services, each one with its own microservices.
     

What does it take to seal the many vulnerable points in the microservices architecture? Read our blog titled, "Microservices Architecture Security Best Practices and Patterns" now!

Microservices architecture

The components of the microservices architecture can be briefly described as follows:

Clients: The architecture has different types of clients with different management functions, such as build, search, and configure, among others.

Identity Providers: They authenticate client requests and pass them to the internal services via an API gateway.

API Gateway: This is the entry point for clients to send requests to specific microservices. The advantages of doing this include the ability to update services without letting the clients know, the ability of the services to use message protocols that are not web friendly, and making use of the ability of the gateways to provide cross-cutting functions such as load balancing and providing security.

Messaging Formats: The API gateway uses both synchronous (REST and HTTP) and asynchronous (AMQP, STOMP, MQTT) message formats to communicate.

Databases: Each of the microservices has its own database to capture the data and implement the business function. The databases of a microservice are updated via their service API only.

Static Content: Once the microservices communication is over within the services themselves, the static content is then delivered to cloud-based storage. This is delivered to clients via CDN systems. 

Management: The management component balances the services on nodes and identifies failures.

Service Discovery: This acts as a guide to the microservices to ascertain the communication route between the services. Basically, it maintains a list of the services that have nodes located on them.

Download and read our ebook "Porting from Monoliths to Microservices – Is the shift worth it?"

Are you looking to outsource microservices development? Call us today!

Microservices Architecture – Pros and Cons

Microservices Architecture – Pros and Cons

Pros:

  • Microservices allow the freedom to use different technologies for different services.
  • Software release cycles are shortened.
  • The microservices architecture system ensures the security of every service.
  • Each of the services can be individually deployed.
  • Each of the microservices accomplishes a single business function.
     

Cons:

  • There are more troubleshooting challenges that can occur.
  • Configuration and related operations take more time.
  • Maintaining transaction safety is a challenge.
  • It is difficult to track data across different service boundaries.
  • It is also difficult to move code across the different services.
  • Remote calls can cause increased delays.
     

Uber’s Transition into Microservices

Just as many other start-ups do, Uber first started off with a monolithic software architecture framework in place. However, this system was initially manageable as it took care of the cab hailing operations inside a single city.

However, Uber soon started expanding their operations worldwide and the problems started. The scalability and continuous integration aspects were soon affected.

Uber’s previous software system architecture worked in this manner:

  • The passenger and driver are connected via a REST API.
  • Three adapters with an API within them performed the billing, sending messages, and payment actions.
  • All the data was stored using a MySQL database.
     

All the different functions, such as passenger/trip/driver management, billing and payments, notifications, etc., were all composed within one framework.

Challenges faced by UBER

These were the main problems faced by the monolithic software framework that UBER worked with.

  • To update even a single feature, every feature had to be built again, deployed and tested many times.
  • Fixing bugs became a very difficult job as there was only a single codebase, and developers had to change the code in this repository again and again.
  • Scaling any feature together with the introduction of new features over many countries is getting to be very tough.
     

Solution

UBER decided to follow in the footsteps of other big giants like Amazon and Netflix and transition into microservices architecture. This meant multiple codebases from a single one and each of the microservices constructed to manage a single business function.

The introduction of the API gateway connected passengers and drivers. Similarly, from the gateway, other internal points, such as passenger/driver/trip management, and other internal points are connected.

All the units are designed to perform their functions independently.

Every feature could be scaled independently of the other. As an example, the number of people searching for taxis is greater than the number of people that actually book the cab services and make the payments. This also means that the number of processes that handle passenger management is greater than the number that manages the payment processes.

UBER broke down its monolith into cloud-based microservices for each of the functionalities and connected these via an API gateway.

UBER microservices architecture – Benefits

  • Individual development teams were assigned ownership of specific services which helped to boost the quality, speed, and manageability of new module development.
  • Teams were allowed to focus only on the services that needed scaling, and this helped to scale at high speed.
  • Individual services could be updated without disrupting any other services.
  • Fault tolerance has become more reliable.
     

Conclusion

The UBER microservices architecture shift paid off well for the company. The company then went on to develop and implement global standards that have been of great help to organizations that followed in their footsteps.

Are you looking for top-rated microservices development for your organization? We, at SayOne Technologies, can help you!

How to find the best microservices development company
What Kind of Challenges Can Microservices Help You Overcome
Why Business leaders should care about Microservices
Should you migrate from monolith to microservices architecture
The 5 Best Microservices Technologies List
Microservices Architecture – 5 things it is not
Advantages of Microservices Architecture, Disadvantages of Microservices Architecture
5 Microservices Examples: Amazon, Netflix, Uber, Spotify and Etsy
SOA vs. Microservices: What's the Difference?
Microservices and DevOps – Better together: What are the benefits
Uber Microservices Architecture
Future Scope of Microservices
Microservices at eBay

Application development company

Your Complete guide to eCommerce personalization

Imagine you enter a store, and the salesperson begins to show products of the kind that you were looking for, they recommend the product with colours of your liking and style of your preference. In short, you get everything that can make your shopping exp

Application development company

It would be an understanding to say that the world is under crisis of unseen proportions, at least for the majority of the presents generations.

It would be an understanding to say that the world is under crisis of unseen proportions, at least for the majority of the presents generations.

Application development company

Focus on your core business while you outsource your app developer

  • Risk-Free trial and Zero Recruitment Charges
  • 100% dedicated developers for flexible custom application development

Need top engineers for your team.
Got a project on your mind

We collaborate with visionary leaders on projects that focus on quality and require the expertise of a highly-skilled and experienced team.

Or