Categories
HTTP Concepts PHP Software Architect Softwares Technology

MVC vs MVVM vs MVP… What the heck?

When it comes to the architecture design patterns, we have many options to choose from Model-View-Controller (MVC), Model-View-ViewModel (MVVM), Model-View-Presenter (MVP), and keep going… Most often what I hear from the software engineers are :

  • What is MVVM?
  • What is the difference between MVC, MVVM and MVP?
  • How to choose between MVC and MVVM?

Although the answers are simple but to understand the concept in depth and clearly, like always, I would prefer to take a real use case as an example. Let’s think about a music search application, musicoverflow (derived from stackoverflow; hmm a long time programmer).

Fundamentally, MV(X)

Before we dive in the various variants of it, lets understand what MV(X) is? Fundamentally, all these variants, MVC, MVVM, MVP aims to segregate the duties of processing, visualization, we need to understand briefly MVC, MVP, and MVVM architecture before dive into them.

Why Model-View-(C or P or VM)?
The aim of these architectures is to separate the responsibilities of visualizing, processing, and data management for UI applications.

'Coz sharing is caring
Categories
Software Architect

How Netflix implemented Microservices architecture

As google explains Microservices architecture (often shortened to microservices) refers to an architectural style for developing applications. This architecture pattern allows a large application to be separated into smaller independent parts, with each part having its own realm of responsibility. Unlike the monolithic style, this approach to software development allows for better scalability To serve a single user request, application can call on many internal microservices to compose its response.

Check out the Microservices Architecture at Netflix!

Microservices architecture at Netflix
  1. Client sends a Play request to Backend running on AWS. The request is handled by AWS Load balancer (ELB)
  2. AWS ELB will forward that request to API Gateway Service running on AWS EC2 instances. That component, named Zuul, is built by the Netflix team to allow dynamic routing, traffic monitoring & security, etc
  3. Application API component is the core business logic, in this scenario, the forwarded request from API Gateway Service is handled by Play API.
  4. Play API will call a (sequence of) microservice(s) to fulfill the request.
  5. Microservices are mostly stateless small programs, to control its cascading failure & enable resilience, each microservice is isolated from the caller processes by Hystrix.
  6. Microservices can save to or get data from a data store during its process.
  7. Microservices can send events for tracking user activities or other data to the Stream Processing Pipeline for either real-time processing or personalized recommendations.
  8. The data coming out of the Stream Processing Pipeline can be persistent to other data stores such as AWS S3, Hadoop HDFS, Cassandra, etc.
'Coz sharing is caring