Monolithic
SOA
Microservices
Software Architecture Evolution
Table of Contents
● Software Architecture Patterns and its need
● Monolithic Architecture
● SOA (Service Oriented Architecture)
● MSA (Microservices Architecture)
● Summary
● Questions
What is Software Architecture Pattern?
Software Architecture Pattern
Software architecture pattern help define the basic characteristics and
behavior of an application.
The success of any application or system depends on the architecture
pattern you use. Architecture patterns not only guide designers and
developers on how to design and structure the software components, but
also determine the ways in which those components should interact.
The software architecture represents the earliest software design decisions.
These design decisions are the most critical to get right and the most difficult
to change downstream in the system development life cycle.
Why Software Architecture Patterns are required?
Software Architectures Patterns are
required for the success of any software
application.
Applications lacking a formal
architecture are generally tightly
coupled, brittle, difficult to change, and
without a clear vision or direction.
As a result, it is very difficult to
determine the architectural
characteristics of the application without
fully understanding the inner-workings
of every component and module in the
system.
Forces Behind Choosing Best Architecture Pattern
➢ The application must be easy to understand and modify
➢ You want to practice continuous deployment of the application
➢ You must run multiple copies of the application on multiple machines in
order to satisfy scalability and availability requirements
➢ You want to take advantage of emerging technologies (frameworks,
programming languages, etc)
➢ New team members must quickly become productive
Monolithic Architecture (Traditional Web Application Architecture)
Monolithic architectures are the ones running on a
single application layer that tends to bundle
together all the functionalities needed by the
architecture.
At the architectural level, this is the simplest form
of architecture simply because it doesn’t involve as
many actors as other architectural styles.
Advantages of Monolithic Architecture
➢ Simple to develop - the goal of current development tools and IDEs is to
support the development of monolithic applications
➢ Simple to test
➢ Simple to deploy - you simply need to deploy the WAR file (or directory
hierarchy) on the appropriate runtime
➢ Simple to scale - you can scale the application by running multiple
copies of the application behind a load balancer
➢ Can be used for small and midsized applications.
Disadvantages of Monolithic Architecture
➢ Difficult to handle when new members introduced in team
➢ Overload IDE
➢ Overloaded web container
➢ Continuous deployment is difficult
➢ Scaling the application can be difficult
➢ Require a long term commitment to a technology stack
➢ Single point of failure
Service Oriented Architecture
A service-oriented architecture (SOA) is a style of
software design where services are provided to
the other components by application components
(Web clients, Mobile Apps).
A service is a well-defined and self-contained
functionality.
Services communicate with each other to perform
some activity through a predefined
communication protocol over a network.
Service Oriented Architecture
Services are loosely-coupled
i.e., a service need not know the technical details of another service that
it is interacting with.
Basically, SOA consists of a
- service consumer
- service provider.
The basic principles of service oriented architecture are independent of
vendors, products and technologies. Consumer request for some service,
and provide returns the result for the requests.
Advantages of SOA Architecture
➢ Service Reusability
➢ Easy Maintainability
➢ Greater Reliability
➢ Improved Software Quality
➢ Improved Scalability and Availability
➢ Increased Productivity
Disadvantages of SOA Architecture
➢ Requires high availability
➢ Increased Overhead
➢ Single point of failure
➢ High Investment Cost
➢ Complex Service Management
- A approach to developing a single application as a suite of
small services which are fully independently deployable
units.
- A microservice is an application with a single function, such
as routing network traffic, making an online payment or
analysing a medical result.
- Right now, the microservices architecture pattern is a rising
star in the IT industry. It is the architectural evolution of SOA.
- Containers are a good way to develop and deploy
microservices.
What is a MicroService?
A e-commerce application example that takes orders from customers,
verifies inventory and available credit, and ships them.
Characteristics of MicroServices
➢ Each microservice is loosely coupled, relatively small.
➢ Easier for a developer to understand.
➢ Each service has a bounded context means isolated from any other service.
➢ The IDE is faster making developers more productive.
➢ The web container starts faster, which makes developers more productive,
and speeds up deployments.
➢ Each service can be developed and deployed independently.
➢ Eliminates any long-term commitment to a technology stack.
Summary
➢ To choose a best architecture, It is very important to understand the
scope and requirements of your application.
➢ Never introduce the architectural level complexity unnecessarily.
➢ Both architectures(MSA and SOA) are focused on breaking up large
monolithic applications into collections of smaller independent services,
and both come with the promise of simplifying development.
➢ Always look for the scope of improvements into your application.
If you will try more… you will gain more…
Question please?
Good luck!
I Hope this will help you to
increase your knowledge
about architectural patterns
for software design and You
will definitely try to explore it
more.
References
● http://odino.org/on-monoliths-service-oriented-architectures-and-microservices/
● https://thetechsolo.wordpress.com/2015/07/05/from-monolith-three-tiers-architectures-to-soa-vs-
microservices/
● http://microservices.io/patterns/microservices.html
● https://blog.codeship.com/monolithic-core-vs-fully-microservice-architecture/
● http://www.slideshare.net/altoros/microservices-vs-monolithic-architectures-pros-and-cons
● http://martinfowler.com/microservices/

Software architectures

  • 1.
  • 2.
    Table of Contents ●Software Architecture Patterns and its need ● Monolithic Architecture ● SOA (Service Oriented Architecture) ● MSA (Microservices Architecture) ● Summary ● Questions
  • 3.
    What is SoftwareArchitecture Pattern?
  • 4.
    Software Architecture Pattern Softwarearchitecture pattern help define the basic characteristics and behavior of an application. The success of any application or system depends on the architecture pattern you use. Architecture patterns not only guide designers and developers on how to design and structure the software components, but also determine the ways in which those components should interact. The software architecture represents the earliest software design decisions. These design decisions are the most critical to get right and the most difficult to change downstream in the system development life cycle.
  • 5.
    Why Software ArchitecturePatterns are required?
  • 6.
    Software Architectures Patternsare required for the success of any software application. Applications lacking a formal architecture are generally tightly coupled, brittle, difficult to change, and without a clear vision or direction. As a result, it is very difficult to determine the architectural characteristics of the application without fully understanding the inner-workings of every component and module in the system.
  • 7.
    Forces Behind ChoosingBest Architecture Pattern ➢ The application must be easy to understand and modify ➢ You want to practice continuous deployment of the application ➢ You must run multiple copies of the application on multiple machines in order to satisfy scalability and availability requirements ➢ You want to take advantage of emerging technologies (frameworks, programming languages, etc) ➢ New team members must quickly become productive
  • 8.
    Monolithic Architecture (TraditionalWeb Application Architecture) Monolithic architectures are the ones running on a single application layer that tends to bundle together all the functionalities needed by the architecture. At the architectural level, this is the simplest form of architecture simply because it doesn’t involve as many actors as other architectural styles.
  • 9.
    Advantages of MonolithicArchitecture ➢ Simple to develop - the goal of current development tools and IDEs is to support the development of monolithic applications ➢ Simple to test ➢ Simple to deploy - you simply need to deploy the WAR file (or directory hierarchy) on the appropriate runtime ➢ Simple to scale - you can scale the application by running multiple copies of the application behind a load balancer ➢ Can be used for small and midsized applications.
  • 11.
    Disadvantages of MonolithicArchitecture ➢ Difficult to handle when new members introduced in team ➢ Overload IDE ➢ Overloaded web container ➢ Continuous deployment is difficult ➢ Scaling the application can be difficult ➢ Require a long term commitment to a technology stack ➢ Single point of failure
  • 12.
    Service Oriented Architecture Aservice-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components (Web clients, Mobile Apps). A service is a well-defined and self-contained functionality. Services communicate with each other to perform some activity through a predefined communication protocol over a network.
  • 13.
    Service Oriented Architecture Servicesare loosely-coupled i.e., a service need not know the technical details of another service that it is interacting with. Basically, SOA consists of a - service consumer - service provider. The basic principles of service oriented architecture are independent of vendors, products and technologies. Consumer request for some service, and provide returns the result for the requests.
  • 15.
    Advantages of SOAArchitecture ➢ Service Reusability ➢ Easy Maintainability ➢ Greater Reliability ➢ Improved Software Quality ➢ Improved Scalability and Availability ➢ Increased Productivity
  • 16.
    Disadvantages of SOAArchitecture ➢ Requires high availability ➢ Increased Overhead ➢ Single point of failure ➢ High Investment Cost ➢ Complex Service Management
  • 17.
    - A approachto developing a single application as a suite of small services which are fully independently deployable units. - A microservice is an application with a single function, such as routing network traffic, making an online payment or analysing a medical result. - Right now, the microservices architecture pattern is a rising star in the IT industry. It is the architectural evolution of SOA. - Containers are a good way to develop and deploy microservices. What is a MicroService?
  • 19.
    A e-commerce applicationexample that takes orders from customers, verifies inventory and available credit, and ships them.
  • 22.
    Characteristics of MicroServices ➢Each microservice is loosely coupled, relatively small. ➢ Easier for a developer to understand. ➢ Each service has a bounded context means isolated from any other service. ➢ The IDE is faster making developers more productive. ➢ The web container starts faster, which makes developers more productive, and speeds up deployments. ➢ Each service can be developed and deployed independently. ➢ Eliminates any long-term commitment to a technology stack.
  • 23.
    Summary ➢ To choosea best architecture, It is very important to understand the scope and requirements of your application. ➢ Never introduce the architectural level complexity unnecessarily. ➢ Both architectures(MSA and SOA) are focused on breaking up large monolithic applications into collections of smaller independent services, and both come with the promise of simplifying development. ➢ Always look for the scope of improvements into your application. If you will try more… you will gain more…
  • 24.
  • 25.
    Good luck! I Hopethis will help you to increase your knowledge about architectural patterns for software design and You will definitely try to explore it more.
  • 26.
    References ● http://odino.org/on-monoliths-service-oriented-architectures-and-microservices/ ● https://thetechsolo.wordpress.com/2015/07/05/from-monolith-three-tiers-architectures-to-soa-vs- microservices/ ●http://microservices.io/patterns/microservices.html ● https://blog.codeship.com/monolithic-core-vs-fully-microservice-architecture/ ● http://www.slideshare.net/altoros/microservices-vs-monolithic-architectures-pros-and-cons ● http://martinfowler.com/microservices/

Editor's Notes

  • #15 http://www.dimuthu.org/blog/2008/09/20/soa-way-of-writing-php/comment-page-1/
  • #16 http://www.buzzle.com/articles/advantages-and-disadvantages-of-service-oriented-architecture-soa.html
  • #17 http://www.buzzle.com/articles/advantages-and-disadvantages-of-service-oriented-architecture-soa.html