SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Application Architecture

Lars-Erik Kindblad
Senior Consultant
Blog: kindblad.com
Poor Architecture


                         Project Progress
Features Delivered




                                Time




                                            | Sector, Alliance, Offering
Good Architecture


                         Project Progress
Features Delivered




                                Time




                                            | Sector, Alliance, Offering
Foundation For Delivering Good Architecture

       Good communication with the business stakeholders
    •    Meet the needs of the business
       Understand the business processes
    •    Scale with the business
       Experience
    •    Simplify




                                                            | Sector, Alliance, Offering
Some Important Concepts & Principles


   Layered Architecture
   Maintainable code
   Testable code




                                                    | Sector, Alliance, Offering
LAYERED ARCHITECTURE

                       | Sector, Alliance, Offering
Logical Layers and Physical Tiers
 A Logically Layer is how you logically divide the code in the
  application
 A Physical Tier is how you divide your application into multiple sub-
  applications that can run on separate servers




                                                             | Sector, Alliance, Offering
LOGICAL LAYER ARCHITECTURE

                             | Sector, Alliance, Offering
3-Layer Architecture




                       | Sector, Alliance, Offering
Presentation Layer
 Also known as Frontend Layer, User Interface (UI) Layer

 Responsible for creating and displaying the user interface and
  handling user interaction
 Data shown is fetched from the Domain Layer




                                                            | Sector, Alliance, Offering
Service Layer
 Also known as Web Service Layer

 Responsible for exposing a web service API and returning the
  method result as XML or JSON
 Data returned is retrieved from the Domain Layer




                                                          | Sector, Alliance, Offering
Domain Layer
 Also known as Business Layer

 Responsible for all the business logic in the application
 Consists of a Domain Model and Domain Services




                                                              | Sector, Alliance, Offering
Domain Model
 Also known as Business Model, Business Objects, Entities etc.

 Responsible for having a model that reflects how the business
  stakeholders look at the world
 Consists of entities with relationships and behavior
 Similar to a database model but a domain model is richer




                                                          | Sector, Alliance, Offering
Domain Service
 Also known as Business Services, Business Managers etc.

 Business logic that does not belong within an entity




                                                         | Sector, Alliance, Offering
Infrastructure Layer
 Also known as Data Access Layer, Repository Layer etc.

 Responsible for querying a database, calling a web service, sending
  e-mail etc.




                                                           | Sector, Alliance, Offering
Example

 We want to create a banking application with customers and related
  accounts. An account consist of an account number, a balance and
  a credit limit.
  If the account has been overdrawn then the account and customer is
  considered to be “sick”, otherwise “healthy”

 Use Case 1: As a user I want to see if a customer is healthy or sick
 Use Case 2: As a user I want to retrieve if a customer is healthy or
  sick through a web service

 Technology: .NET, ASP.NET MVC, WCF

                                                            | Sector, Alliance, Offering
What do we need?

1. Domain Model for Customer and Account
2. Business logic for deciding if an account and customer is healthy or
   sick
3. 2 Classes: Fetching Customer and fetch list of Accounts from the
   database
4. Service Class for building up a Customer Entity with Accounts
Use Case 1:
1. MVC Controller and a View to display the health status for a given
   customer
Use Case 2:
1. WCF Service for returning whether a customer is healthy or not
                                                            | Sector, Alliance, Offering
Domain Model




               | Sector, Alliance, Offering
Domain Model




               | Sector, Alliance, Offering
Progress




           | Sector, Alliance, Offering
Infrastructure – Fetch Customer




                                  | Sector, Alliance, Offering
Infrastructure – Fetch Accounts




                                  | Sector, Alliance, Offering
Progress




           | Sector, Alliance, Offering
Domain Service – Build a Complete Customer




                                             | Sector, Alliance, Offering
Progress




           | Sector, Alliance, Offering
Use Case 1: Show the result to the user




                                          | Sector, Alliance, Offering
Progress




           | Sector, Alliance, Offering
Use Case 2: Return the result through a Web Service




                                               | Sector, Alliance, Offering
Completed




            | Sector, Alliance, Offering
Visual Studio Project Structure




                                  | Sector, Alliance, Offering
Why should you have many layers?

   Less code per layer
   Reduced complexity
   Easier to maintain code
   Easier to add new functionality
   Easier to test
   Allows for reuse code across the application




                                                   | Sector, Alliance, Offering
PHYSICAL TIER ARCHITECTURE

                             | Sector, Alliance, Offering
2-Tier Windows Client Architecture




                                     | Sector, Alliance, Offering
3-Tier Windows Client Architecture




                                     | Sector, Alliance, Offering
3-Tier Web Architecture




                          | Sector, Alliance, Offering
4-Tier Architecture




                      | Sector, Alliance, Offering
Why have many tiers?
 Reuse logic across applications
 Improve security, e.g. restrict database access for the client by going
  through a service
 Improved performance, the performance critical tiers can be scaled
  across multiple servers




                                                              | Sector, Alliance, Offering
MAINTAINABLE CODE

                    | Sector, Alliance, Offering
Maintainable Code

 Important to write code that is easy to maintain – Many enterprise
  systems can be around for decades




                                                            | Sector, Alliance, Offering
Follow a Coding Standard

 The Team should decide on, write down and follow a strict coding
  standard
 Be consistent on how you name classes, methods, variables etc.
 Be consistent on what architectural patterns to use, when to use it
  and how to structure the code
 = Cleaner code, easier to read and maintain




                                                            | Sector, Alliance, Offering
Single Responsibility Principle (SRP)

 A Class should only have 1 responsibility
  • Preferably only one public method
  • Small in size, preferably no longer than 1 screen size
 = Easier to:
  •   Read
  •   Maintain
  •   Change
  •   Test




                                                             | Sector, Alliance, Offering
A Typical Class




 5 responsibilities, 4 too many…




                                           | Sector, Alliance, Offering
… Converted into 5 Classes with 1 Responsibility Each




                                                | Sector, Alliance, Offering
TESTABLE CODE

                | Sector, Alliance, Offering
2 Main Types of Testing

 Integration Testing
  • Top to bottom testing




 Unit Testing
  • Test a single class without it’s dependencies using Inversion of Control




                                                                        | Sector, Alliance, Offering
Inversion of Control

   Inversion of Control = IOC
   Make code loosely coupled
   Make unit testing possible
   How? Move creation of dependencies outside the class they are
    being used in




 A better name - Inversion of Dependency Creation



                                                           | Sector, Alliance, Offering
Traditional Code




Inversion of Control using Dependency Injection




                                                  | Sector, Alliance, Offering
Traditional Code




Inversion of Control Code




                            | Sector, Alliance, Offering
Traditional Code




                   | Sector, Alliance, Offering
Inversion of Control using Dependency Injection




                                             | Sector, Alliance, Offering
Inversion of Control Container

 A framework that can automatically create a given type with all the
  required dependencies
 Popular frameworks for .NET
  •   Unity
  •   Castle Windsor
  •   Ninject
  •   StructureMap
  •   etc.




                                                            | Sector, Alliance, Offering
Inversion of Control Container

         Manual approach




      Using an IOC Container




                                 | Sector, Alliance, Offering
QUESTIONS?

             | Sector, Alliance, Offering
www.capgemini.com



The information contained in this presentation is proprietary. ©2010 Capgemini. All rights reserved

Weitere ähnliche Inhalte

Was ist angesagt?

Scaling Integration
Scaling IntegrationScaling Integration
Scaling IntegrationKim Clark
 
Vfm corporate presentation v1
Vfm corporate presentation v1Vfm corporate presentation v1
Vfm corporate presentation v1vfmindia
 
OMG CORBA Component Model tutorial
OMG CORBA Component Model tutorialOMG CORBA Component Model tutorial
OMG CORBA Component Model tutorialJohnny Willemsen
 
The Business Case behind Cloud Computing - The risks and rewards
The Business Case behind Cloud Computing - The risks and rewardsThe Business Case behind Cloud Computing - The risks and rewards
The Business Case behind Cloud Computing - The risks and rewardsOptimation
 
Vfm website-projects
Vfm website-projectsVfm website-projects
Vfm website-projectsvfmindia
 
The evolving story for Agile Integration Architecture in 2019
The evolving story for Agile Integration Architecture in 2019The evolving story for Agile Integration Architecture in 2019
The evolving story for Agile Integration Architecture in 2019Kim Clark
 
AXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systemsAXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systemsRemedy IT
 
Enterprise Application Integration Technologies
Enterprise Application Integration TechnologiesEnterprise Application Integration Technologies
Enterprise Application Integration TechnologiesPeter R. Egli
 
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...Valerio Cosentino
 
Implementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for IntegrationImplementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for IntegrationKim Clark
 
Federated Machine Learning Framework
Federated Machine Learning FrameworkFederated Machine Learning Framework
Federated Machine Learning FrameworkAnup kumar
 
Cloud native integration
Cloud native integrationCloud native integration
Cloud native integrationKim Clark
 
Effective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerEffective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerAnt Phillips
 
Building enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolioBuilding enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolioKim Clark
 
Cs 1023 lec 12 soa (week 4)
Cs 1023 lec 12 soa (week 4)Cs 1023 lec 12 soa (week 4)
Cs 1023 lec 12 soa (week 4)stanbridge
 
Agile Integration Architecture: A Containerized and Decentralized Approach to...
Agile Integration Architecture: A Containerized and Decentralized Approach to...Agile Integration Architecture: A Containerized and Decentralized Approach to...
Agile Integration Architecture: A Containerized and Decentralized Approach to...Kim Clark
 

Was ist angesagt? (20)

Scaling Integration
Scaling IntegrationScaling Integration
Scaling Integration
 
Vfm corporate presentation v1
Vfm corporate presentation v1Vfm corporate presentation v1
Vfm corporate presentation v1
 
OMG CORBA Component Model tutorial
OMG CORBA Component Model tutorialOMG CORBA Component Model tutorial
OMG CORBA Component Model tutorial
 
The Business Case behind Cloud Computing - The risks and rewards
The Business Case behind Cloud Computing - The risks and rewardsThe Business Case behind Cloud Computing - The risks and rewards
The Business Case behind Cloud Computing - The risks and rewards
 
Vfm website-projects
Vfm website-projectsVfm website-projects
Vfm website-projects
 
The evolving story for Agile Integration Architecture in 2019
The evolving story for Agile Integration Architecture in 2019The evolving story for Agile Integration Architecture in 2019
The evolving story for Agile Integration Architecture in 2019
 
AXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systemsAXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systems
 
Enterprise Application Integration Technologies
Enterprise Application Integration TechnologiesEnterprise Application Integration Technologies
Enterprise Application Integration Technologies
 
ITI005En-SOA (II)
ITI005En-SOA (II)ITI005En-SOA (II)
ITI005En-SOA (II)
 
SOA Service Reusability for iWay SM
SOA Service Reusability for iWay SMSOA Service Reusability for iWay SM
SOA Service Reusability for iWay SM
 
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
 
Implementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for IntegrationImplementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for Integration
 
Federated Machine Learning Framework
Federated Machine Learning FrameworkFederated Machine Learning Framework
Federated Machine Learning Framework
 
Cloud native integration
Cloud native integrationCloud native integration
Cloud native integration
 
Effective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerEffective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message Broker
 
Building enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolioBuilding enterprise depth APIs with the IBM hybrid integration portfolio
Building enterprise depth APIs with the IBM hybrid integration portfolio
 
Canonical data model
Canonical data modelCanonical data model
Canonical data model
 
Cs 1023 lec 12 soa (week 4)
Cs 1023 lec 12 soa (week 4)Cs 1023 lec 12 soa (week 4)
Cs 1023 lec 12 soa (week 4)
 
Agile Integration Architecture: A Containerized and Decentralized Approach to...
Agile Integration Architecture: A Containerized and Decentralized Approach to...Agile Integration Architecture: A Containerized and Decentralized Approach to...
Agile Integration Architecture: A Containerized and Decentralized Approach to...
 
Resume1
Resume1Resume1
Resume1
 

Andere mochten auch

Publish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorPublish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorLars-Erik Kindblad
 
Application Layer in PHP
Application Layer in PHPApplication Layer in PHP
Application Layer in PHPPer Bernhardt
 
Responsive Design - Quick & Dirty
Responsive Design - Quick & DirtyResponsive Design - Quick & Dirty
Responsive Design - Quick & DirtyArno Selhorst
 
Webinar: Responsive Design
Webinar: Responsive DesignWebinar: Responsive Design
Webinar: Responsive Designkuehlhaus AG
 
Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)Lars-Erik Kindblad
 
Avoid code duplication! Principles & Patterns
Avoid code duplication! Principles & PatternsAvoid code duplication! Principles & Patterns
Avoid code duplication! Principles & PatternsLars-Erik Kindblad
 
How to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systemsHow to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systemsLars-Erik Kindblad
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenChristian Baranowski
 
Domain Driven Design und Nosql
Domain Driven Design und Nosql Domain Driven Design und Nosql
Domain Driven Design und Nosql ArangoDB Database
 
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionierenMobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionierenMarkus Greve
 
The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility PrincipleLars-Erik Kindblad
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8chmoser79
 
Domain-driven design - eine Einführung
Domain-driven design - eine EinführungDomain-driven design - eine Einführung
Domain-driven design - eine Einführungdie.agilen GmbH
 
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User ExperienceSwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User ExperienceNetcetera
 
Beyond GUI - Die Zukunft digitaler Interfaces
Beyond GUI - Die Zukunft digitaler InterfacesBeyond GUI - Die Zukunft digitaler Interfaces
Beyond GUI - Die Zukunft digitaler InterfacesSENSORY-MINDS
 
Message Oriented Architecture using NServiceBus
Message Oriented Architecture using NServiceBusMessage Oriented Architecture using NServiceBus
Message Oriented Architecture using NServiceBusLars-Erik Kindblad
 
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?Thomas Gläser
 

Andere mochten auch (20)

Application Architecture
Application ArchitectureApplication Architecture
Application Architecture
 
Publish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorPublish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event Aggregator
 
Application Layer in PHP
Application Layer in PHPApplication Layer in PHP
Application Layer in PHP
 
Responsive Design - Quick & Dirty
Responsive Design - Quick & DirtyResponsive Design - Quick & Dirty
Responsive Design - Quick & Dirty
 
Ready or not: No UI vom Verschwinden des Graphical User Interfaces
Ready or not: No UI vom Verschwinden des Graphical User InterfacesReady or not: No UI vom Verschwinden des Graphical User Interfaces
Ready or not: No UI vom Verschwinden des Graphical User Interfaces
 
Webinar: Responsive Design
Webinar: Responsive DesignWebinar: Responsive Design
Webinar: Responsive Design
 
Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)
 
Avoid code duplication! Principles & Patterns
Avoid code duplication! Principles & PatternsAvoid code duplication! Principles & Patterns
Avoid code duplication! Principles & Patterns
 
Systementwurf mit UML
Systementwurf mit UMLSystementwurf mit UML
Systementwurf mit UML
 
How to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systemsHow to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systems
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML Grundlagen
 
Domain Driven Design und Nosql
Domain Driven Design und Nosql Domain Driven Design und Nosql
Domain Driven Design und Nosql
 
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionierenMobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
 
The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8
 
Domain-driven design - eine Einführung
Domain-driven design - eine EinführungDomain-driven design - eine Einführung
Domain-driven design - eine Einführung
 
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User ExperienceSwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
 
Beyond GUI - Die Zukunft digitaler Interfaces
Beyond GUI - Die Zukunft digitaler InterfacesBeyond GUI - Die Zukunft digitaler Interfaces
Beyond GUI - Die Zukunft digitaler Interfaces
 
Message Oriented Architecture using NServiceBus
Message Oriented Architecture using NServiceBusMessage Oriented Architecture using NServiceBus
Message Oriented Architecture using NServiceBus
 
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?
 

Ähnlich wie Application Architecture by Lars-Erik Kindblad, Capgemini

#ATAGTR2020 Presentation - Microservices – Explored
#ATAGTR2020 Presentation - Microservices – Explored#ATAGTR2020 Presentation - Microservices – Explored
#ATAGTR2020 Presentation - Microservices – ExploredAgile Testing Alliance
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupMatt Ray
 
Notes from the Field - Cloud Solutions with VMware vCloud Director
Notes from the Field - Cloud Solutions with VMware vCloud DirectorNotes from the Field - Cloud Solutions with VMware vCloud Director
Notes from the Field - Cloud Solutions with VMware vCloud DirectorJames Charter
 
Sa 004 quality_attributes
Sa 004 quality_attributesSa 004 quality_attributes
Sa 004 quality_attributesFrank Gielen
 
Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...
Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...
Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...DineshKumar746335
 
Discussion About Microservices Architecture
Discussion About Microservices ArchitectureDiscussion About Microservices Architecture
Discussion About Microservices ArchitectureRalph Osmond Rimorin
 
Open day competenze digitali boverino v-mware intro
Open day competenze digitali   boverino v-mware introOpen day competenze digitali   boverino v-mware intro
Open day competenze digitali boverino v-mware introRedazione InnovaPuglia
 
InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...
InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...
InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...Daniel Berg
 
Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...
Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...
Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...Michael Elder
 
Microsoft Dynamics
Microsoft DynamicsMicrosoft Dynamics
Microsoft Dynamicscglylesu
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"GlobalLogic Ukraine
 
The elegant way of implementing microservices with istio
The elegant way of implementing microservices with istioThe elegant way of implementing microservices with istio
The elegant way of implementing microservices with istioInho Kang
 
12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클
12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클
12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클Oracle Korea
 
Oracle Cloud Reference Architecture
Oracle Cloud Reference ArchitectureOracle Cloud Reference Architecture
Oracle Cloud Reference ArchitectureBob Rhubart
 
Creating your Hybrid Cloud with AWS -Technical 201
Creating your Hybrid Cloud with AWS -Technical 201Creating your Hybrid Cloud with AWS -Technical 201
Creating your Hybrid Cloud with AWS -Technical 201Amazon Web Services
 
End to-End Monitoring for ITSM and DevOps
End to-End Monitoring for ITSM and DevOpsEnd to-End Monitoring for ITSM and DevOps
End to-End Monitoring for ITSM and DevOpseG Innovations
 
Best Practices for Partnering with AWS
Best Practices for Partnering with AWSBest Practices for Partnering with AWS
Best Practices for Partnering with AWSAmazon Web Services
 

Ähnlich wie Application Architecture by Lars-Erik Kindblad, Capgemini (20)

Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 
#ATAGTR2020 Presentation - Microservices – Explored
#ATAGTR2020 Presentation - Microservices – Explored#ATAGTR2020 Presentation - Microservices – Explored
#ATAGTR2020 Presentation - Microservices – Explored
 
Newt global meetup microservices
Newt global meetup microservicesNewt global meetup microservices
Newt global meetup microservices
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native Meetup
 
Notes from the Field - Cloud Solutions with VMware vCloud Director
Notes from the Field - Cloud Solutions with VMware vCloud DirectorNotes from the Field - Cloud Solutions with VMware vCloud Director
Notes from the Field - Cloud Solutions with VMware vCloud Director
 
Sa 004 quality_attributes
Sa 004 quality_attributesSa 004 quality_attributes
Sa 004 quality_attributes
 
Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...
Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...
Fallsem2021 22 ita2012-eth_vl2021220101938_reference_material_i_06-aug-2021_m...
 
Discussion About Microservices Architecture
Discussion About Microservices ArchitectureDiscussion About Microservices Architecture
Discussion About Microservices Architecture
 
Open day competenze digitali boverino v-mware intro
Open day competenze digitali   boverino v-mware introOpen day competenze digitali   boverino v-mware intro
Open day competenze digitali boverino v-mware intro
 
InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...
InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...
InterConnect 2015: 3045 Hybrid Cloud - How to get a return from an investment...
 
Managed Services Overview
Managed Services OverviewManaged Services Overview
Managed Services Overview
 
Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...
Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...
Hybrid Cloud: How to Get a Return from an Investment Made Three Decades Ago (...
 
Microsoft Dynamics
Microsoft DynamicsMicrosoft Dynamics
Microsoft Dynamics
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
 
The elegant way of implementing microservices with istio
The elegant way of implementing microservices with istioThe elegant way of implementing microservices with istio
The elegant way of implementing microservices with istio
 
12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클
12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클
12월 16일 Meetup [Deep Dive] Microservice 트래픽 관리를 위한 Istio 알아보기 | 강인호 컨설턴트, 오라클
 
Oracle Cloud Reference Architecture
Oracle Cloud Reference ArchitectureOracle Cloud Reference Architecture
Oracle Cloud Reference Architecture
 
Creating your Hybrid Cloud with AWS -Technical 201
Creating your Hybrid Cloud with AWS -Technical 201Creating your Hybrid Cloud with AWS -Technical 201
Creating your Hybrid Cloud with AWS -Technical 201
 
End to-End Monitoring for ITSM and DevOps
End to-End Monitoring for ITSM and DevOpsEnd to-End Monitoring for ITSM and DevOps
End to-End Monitoring for ITSM and DevOps
 
Best Practices for Partnering with AWS
Best Practices for Partnering with AWSBest Practices for Partnering with AWS
Best Practices for Partnering with AWS
 

Kürzlich hochgeladen

Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 

Kürzlich hochgeladen (20)

Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 

Application Architecture by Lars-Erik Kindblad, Capgemini

  • 2. Poor Architecture Project Progress Features Delivered Time | Sector, Alliance, Offering
  • 3. Good Architecture Project Progress Features Delivered Time | Sector, Alliance, Offering
  • 4. Foundation For Delivering Good Architecture  Good communication with the business stakeholders • Meet the needs of the business  Understand the business processes • Scale with the business  Experience • Simplify | Sector, Alliance, Offering
  • 5. Some Important Concepts & Principles  Layered Architecture  Maintainable code  Testable code | Sector, Alliance, Offering
  • 6. LAYERED ARCHITECTURE | Sector, Alliance, Offering
  • 7. Logical Layers and Physical Tiers  A Logically Layer is how you logically divide the code in the application  A Physical Tier is how you divide your application into multiple sub- applications that can run on separate servers | Sector, Alliance, Offering
  • 8. LOGICAL LAYER ARCHITECTURE | Sector, Alliance, Offering
  • 9. 3-Layer Architecture | Sector, Alliance, Offering
  • 10. Presentation Layer  Also known as Frontend Layer, User Interface (UI) Layer  Responsible for creating and displaying the user interface and handling user interaction  Data shown is fetched from the Domain Layer | Sector, Alliance, Offering
  • 11. Service Layer  Also known as Web Service Layer  Responsible for exposing a web service API and returning the method result as XML or JSON  Data returned is retrieved from the Domain Layer | Sector, Alliance, Offering
  • 12. Domain Layer  Also known as Business Layer  Responsible for all the business logic in the application  Consists of a Domain Model and Domain Services | Sector, Alliance, Offering
  • 13. Domain Model  Also known as Business Model, Business Objects, Entities etc.  Responsible for having a model that reflects how the business stakeholders look at the world  Consists of entities with relationships and behavior  Similar to a database model but a domain model is richer | Sector, Alliance, Offering
  • 14. Domain Service  Also known as Business Services, Business Managers etc.  Business logic that does not belong within an entity | Sector, Alliance, Offering
  • 15. Infrastructure Layer  Also known as Data Access Layer, Repository Layer etc.  Responsible for querying a database, calling a web service, sending e-mail etc. | Sector, Alliance, Offering
  • 16. Example  We want to create a banking application with customers and related accounts. An account consist of an account number, a balance and a credit limit. If the account has been overdrawn then the account and customer is considered to be “sick”, otherwise “healthy”  Use Case 1: As a user I want to see if a customer is healthy or sick  Use Case 2: As a user I want to retrieve if a customer is healthy or sick through a web service  Technology: .NET, ASP.NET MVC, WCF | Sector, Alliance, Offering
  • 17. What do we need? 1. Domain Model for Customer and Account 2. Business logic for deciding if an account and customer is healthy or sick 3. 2 Classes: Fetching Customer and fetch list of Accounts from the database 4. Service Class for building up a Customer Entity with Accounts Use Case 1: 1. MVC Controller and a View to display the health status for a given customer Use Case 2: 1. WCF Service for returning whether a customer is healthy or not | Sector, Alliance, Offering
  • 18. Domain Model | Sector, Alliance, Offering
  • 19. Domain Model | Sector, Alliance, Offering
  • 20. Progress | Sector, Alliance, Offering
  • 21. Infrastructure – Fetch Customer | Sector, Alliance, Offering
  • 22. Infrastructure – Fetch Accounts | Sector, Alliance, Offering
  • 23. Progress | Sector, Alliance, Offering
  • 24. Domain Service – Build a Complete Customer | Sector, Alliance, Offering
  • 25. Progress | Sector, Alliance, Offering
  • 26. Use Case 1: Show the result to the user | Sector, Alliance, Offering
  • 27. Progress | Sector, Alliance, Offering
  • 28. Use Case 2: Return the result through a Web Service | Sector, Alliance, Offering
  • 29. Completed | Sector, Alliance, Offering
  • 30. Visual Studio Project Structure | Sector, Alliance, Offering
  • 31. Why should you have many layers?  Less code per layer  Reduced complexity  Easier to maintain code  Easier to add new functionality  Easier to test  Allows for reuse code across the application | Sector, Alliance, Offering
  • 32. PHYSICAL TIER ARCHITECTURE | Sector, Alliance, Offering
  • 33. 2-Tier Windows Client Architecture | Sector, Alliance, Offering
  • 34. 3-Tier Windows Client Architecture | Sector, Alliance, Offering
  • 35. 3-Tier Web Architecture | Sector, Alliance, Offering
  • 36. 4-Tier Architecture | Sector, Alliance, Offering
  • 37. Why have many tiers?  Reuse logic across applications  Improve security, e.g. restrict database access for the client by going through a service  Improved performance, the performance critical tiers can be scaled across multiple servers | Sector, Alliance, Offering
  • 38. MAINTAINABLE CODE | Sector, Alliance, Offering
  • 39. Maintainable Code  Important to write code that is easy to maintain – Many enterprise systems can be around for decades | Sector, Alliance, Offering
  • 40. Follow a Coding Standard  The Team should decide on, write down and follow a strict coding standard  Be consistent on how you name classes, methods, variables etc.  Be consistent on what architectural patterns to use, when to use it and how to structure the code  = Cleaner code, easier to read and maintain | Sector, Alliance, Offering
  • 41. Single Responsibility Principle (SRP)  A Class should only have 1 responsibility • Preferably only one public method • Small in size, preferably no longer than 1 screen size  = Easier to: • Read • Maintain • Change • Test | Sector, Alliance, Offering
  • 42. A Typical Class  5 responsibilities, 4 too many… | Sector, Alliance, Offering
  • 43. … Converted into 5 Classes with 1 Responsibility Each | Sector, Alliance, Offering
  • 44. TESTABLE CODE | Sector, Alliance, Offering
  • 45. 2 Main Types of Testing  Integration Testing • Top to bottom testing  Unit Testing • Test a single class without it’s dependencies using Inversion of Control | Sector, Alliance, Offering
  • 46. Inversion of Control  Inversion of Control = IOC  Make code loosely coupled  Make unit testing possible  How? Move creation of dependencies outside the class they are being used in  A better name - Inversion of Dependency Creation | Sector, Alliance, Offering
  • 47. Traditional Code Inversion of Control using Dependency Injection | Sector, Alliance, Offering
  • 48. Traditional Code Inversion of Control Code | Sector, Alliance, Offering
  • 49. Traditional Code | Sector, Alliance, Offering
  • 50. Inversion of Control using Dependency Injection | Sector, Alliance, Offering
  • 51. Inversion of Control Container  A framework that can automatically create a given type with all the required dependencies  Popular frameworks for .NET • Unity • Castle Windsor • Ninject • StructureMap • etc. | Sector, Alliance, Offering
  • 52. Inversion of Control Container Manual approach Using an IOC Container | Sector, Alliance, Offering
  • 53. QUESTIONS? | Sector, Alliance, Offering
  • 54. www.capgemini.com The information contained in this presentation is proprietary. ©2010 Capgemini. All rights reserved