/ SOFTWARE, ARCHITECTURE, SERVERLESS, MICROSERVICES

The 6 paradigms of software architectures

Bonjour les amis (French) (Hello Friends).In this small,introductory and interesting post on software architectures,I am going to explore some very interesting software architectures used by industries.The software world is revolutionizing like anything.The need of people from delivering solutions have changed.Priorities of software companies have changed.The need of the Hour relies on scalability,resillency and delivery.Building software architectures to better correlate and solve today’s problems helps us in defining the future roles of software in the tech world.In this post I have explored some of these software architecture’s.Hope you find it a worthy read and Happy New Year 2017 :)

different-arch

Java EE Architecture

The beauty of any software architecture is dependent on the ubiquity of the language used for designing architectures.I think that the very first mature step in the direction of building enterprise class architectures was done by Java.The concept of such type of architectures is based on building architecture based on business logic.The layer upon layer logic is much necessary for building such type of framework.Some of these type of frameworks are

and many more …

A sample figure of Java EE based Architecture based on Spring Framework:

overview-full

Monolith Architecture

When we look at startups or newly based enterprises who have started using different languages or API’s for there applications.It becomes a routine to build applications based on service by service.Each layer consisting of different usage and depends upon the previous one.I think the beauty of monolith applications lie in the fact that one can easily rely on it with ease without much chances of failure for limited amount of users.This strategy makes it very wasy to adopt.Such type of applications require very less modification in code.But in monolith it is important to make sure that lots of discussion is done with other members as changes across variety of different backend services can be required to modify any changes as it may affect the overall application.

A sample figure of Monolith based Architecture

richardson-microservices-part1-1_monolithic-architecture

Microservices Architecture

Microservices came into action when bigger enterprises started to face certain problems with monolith architecture based services.In bigger enterprises it is important to modify changes and make it quicker to adapt in code.This creates a challenge as time is of crucial importance here.This challenge helps in the making of distributed services across enterprise.The story of adoption of microservices is a tough one.Certain challenges lie in this transformation.But the benefits seems to be outnumbered when compared.I would recommend anyone to look at the case studies of Netflix, Google, Twitter and Uber while studying microservices and its adoption.

Checkout microservices by Arun Gupta for some nice code

A sample figure of Microservices Architecture

richardson-microservices-part3-monolith-vs-microservices

Serverless Architecture

This type of architecture has been in the market for very less no. of years.It was first introduced by Amazon Web Services in 2014.The serverless architecture is ideally more suited for startups and medium level enterprises.It helps them to automate the process of scaling and costs by building Function as a Service.Currently a lot of the development has been observed in this type of architecture.There has been a lot of different frameworks and organizations being developed in the recent couple of years.One such service is the Lambda Service by AWS.There are different types of services by different types of cloud service providers:

Although the serverless architecture looks more like a dream come true for some people.Believe it or not,it is not.It also suffers from a serious disadvantage of monitoring.These functions can easily build a solution from one company to other but hard to engineer and monitor altogether at the same time.The serverless architecture is usually seen as implemented in nodejs.But there are several different languages such as Python,Go etc which can be implemented by using various different frameworks.Some of these frameworks are

and many more..

serverless-app

Reactive Architecture

Micoservices are highly revolutionised on a concept of Domain Driven Design by Eric Evans.One of the core concepts of Domain Driven Design is Bounded Contexts.When we look at it from mathematics point of view,it reveals us that some form of it can be related to Sets and Boundries.It means that certain mathematical logics of sets and boundries can be applied here.A lot of great work has been done in this direction by Debainsh Ghosh.In his series of blog posts, he clearly explains how we can simulate these conditions and make it better.One of the nice things that I really like about this architecture is that it eases up the process of transforming huge enterprises to a more combustile and functional type.

One of the languages that this architecture has been implemented is Scala.The scala language is implemented over Java.The beauty of this language is the clarity and much less code than java to implement some task in hand.It has been popular in various big data based solutions.

sapr_0201

Lambda Architecture

This awesome architecture has been built by Nathan Marz and Michael Hausenblas.In the famous article on How to beat CAP Theorem ? by Nathan Marz.He explains and redefines the methodology using which huge databases architectures can be made with slight changes onto our original concepts of redefining data models.The main idea of the Lambda Architecture is to build Big Data systems as a series of layers.Each layer satisfies a subset of the properties and builds upon the functionality provided by the layers beneath it.

enterprise-lambda-architecture

Conclusion

As Marc Chernoff has always said,”In every end, there is also a beginning”. At the end,I feel that every type of software architecture has its own benefits and losses.There is no stop to evolution when it comes to the software architecture world.The study in the post above innvolves limited study into the evolution of software architecture.I hope that new software architecture continue to evolve & progress. Happy New Year:)

A Similar Presentation on monoliths and microservices can be found at Slideshare.

Thanks for reading !