by KANNAN DURAIRAJ, Domain Architect - Digital
Software Engineer and Architect
Software Architecture
● Introduction - Software Architecture
● Forms of Architecture
● Architecture vs Design
● Architectural Patterns
● Design Patterns
● Diagrams
● Agile + Architecture
● Principles - Architecture and Design
● Recap
● References
Agenda
Architecture is it a Perspective?
How to see things in a meaningful way?
Need for Architecture
“Where Business meets Technology”
Definition
The fundamental organization of a system
embodied in its components, their
relationships to each other, and to the
environment, and the principles guiding its
design and evolution. Usually captured as a
diagram.
My Definition
A shared understanding among various team
members (business, product, development,
operations) about an application or a set of
applications that deliver business value by
building platform capabilities that are robust,
flexible - open for extension, composable by
nature, and can be orchestrated to produce an
optimal solutions for a business and add value
to the end user.
In Nutshell
Define
Boundaries / Contracts / Responsibility
of Software Components
Architectural Boundaries
Imagine Success
With Boundary Without Boundary
What are architectural considerations?
● Hard choices in Software
● Expensive part of Development and Delivery
● Important stuff!
● Business Value vs Platform Capability
current vs future
What are those hard choices?
Any thoughts?
Hard things and important stuff:
● Programming Language - Fit, Tools and Skills
● Reversibility - heights of tight coupling
● Building on top of unstable platform or software
● Over Engineering (should be Agile, right?)
● Complex frameworks and dependencies (YAGNI)
● Deployment Environment, DevOps
● Compliance, Security and Performance
Why Architecture is so important?
What & Why Where How
Product Feature Platform Capability Implementation
UX & CX Cross-Cutting Develop & Test
Customer Value Concerns Plays by
Component / System boundaries
Define Boundaries
Forms of Architecture
Forms of Architecture
System Architecture
Component Architecture
Application Architecture
Data / Information Architecture
Integration Architecture
IT / Network / Infrastructure Architecture
Enterprise Architecture
Software Architects = City Planners
city keeps changing… so does software!
Architect Roles
Integration Architect
Application / Technical Architect
Solution Architect / Solution Designer
Domain Architect
Enterprise Architect
Principal / Chief Architect
Software Architecture and Software Design - is it the
same thing?
Which one is more important?
Both are important - one can’t survive without the
other.
Let's look at the Definition of ‘Software Design’
Definition: Software Design
The fundamental organization of
code/modules within a component, and its
relationships to each other, and to the run
time environment, and the principles guiding
its development to deliver a specific
goal/functionality of an overall solutions.
Usually referred to as Application or Module
design.
Patterns
Patterns
In software engineering, a software design pattern is a
general reusable solution to a commonly occurring problem
within a given context in software design. It is not a
finished design that can be transformed directly into source
or machine code.
An architectural pattern is a general reusable solution to a
commonly occurring problem in software architecture
within a given context. Architectural patterns are similar
to software design pattern but have a broader scope.
Architectural Patterns
● Service-Oriented (SOA) and Microservices
● Event-Driven / MOM / ESB
● Layers
● Multi-Tier (2-tier, 3-tier, n-tier) / Client-Server
● Model-View-Controller,
Presentation-Abstraction-Control,
Model-View-Presenter, Model-View-ViewModel
Architecture Styles
Structure
● Component-based, monolithic, Layered, etc
Messaging
● Event Driven, Pub-Sub, Async Messaging, etc
Adaptive
● Plugin, Reflection, etc
Distributed
● Client-Server, REST, SOA, Microservices, etc
Design Patterns
Creational
● Abstract Factory, Builder, Factory Method,
Singleton, Prototype
Structural
● Bridge, Adapter, Composite, Decorator, Facade,
Proxy, Flyweight
Behavioral
● Command, Observer, Visitor, Chain of
Responsibility, etc..
Diagrams
Why Diagrams?
● Nothing but a form of “representation”
● Simple to understand, common language
● Simplifies Complexity (conceptualize)
● Abstracts code/development
● Logical + Data Flow + Integration View
Agile
&
Architecture
Agile + Architecture
Software Architecture in Agile Development Process
● Evolutionary Architecture and Emergent Design
● YAGNI
● Defer until the last responsible moment
● Refactoring
● Spikes, Stripes and Tracers
● Pragmatic
Agile Architecture
It's about “Just Enough”
- Boundaries, Structure, Vision and Leadership
- Understand how the significant elements fit
together
- Provide the foundations and vision to move
forward
- Mitigate the key risks
Agile Architecture “Guiding Principles”
● Last Responsible Moment
● Continuous Integration
● Lightweight, Living Documentation
● Continuous Delivery
● Adapt for Organizational Structure
● Design for Replaceability
Architectural Patterns will evolve over time
● Microservices
● API Layers
- Experience, Gateway, Application / System, Core
● new
Serverless / FaaS
● IoT, Smart Watch, Smart Cars - Tesla / Driverless
● new
Unikernels - Clive, MirageOS, Rump Kernels
Key Enablers
a.k.a
Platform for Business
External Enablers (Industry / Market Push)
Cloud Infrastructure
- Agility
- Elasticity of Compute Resources
SaaS
- Integration is easy, follow standards - REST, SAML
Microservices and API
- deliver faster, deliver frequently
Internal Enablers
The two key enablers are:
● A high-speed culture
○ A poor culture inhibits organisational changes designed to increase
speed.
○ Improve decision-making processes, can’t slow down delivery
● Strategic focus - two critical elements:
○ a clear strategic goal and
○ a focused strategic agenda.
If the culture injects the fuel for speed, strategic focus delivers the grip and
traction.
Recap
● Software Architecture is a shared responsibility
● Ask ‘what, why, where’ before ‘how’
● Patterns and Principles (Architecture & Design)
● Cool Diagrams!!
● Collaboration, close the feedback loop
● Agility in process is only half good without
Architecture agility
● Market Hypes & Internal Culture
Conclusion
Embrace by participation
● Minimum Viable Architecture / Agile Architecture
● Don’t think Architecture as just
● Architecture Solution is a living document just like
API documentation

Modern Agile Software Architecture

  • 1.
    by KANNAN DURAIRAJ,Domain Architect - Digital Software Engineer and Architect Software Architecture
  • 2.
    ● Introduction -Software Architecture ● Forms of Architecture ● Architecture vs Design ● Architectural Patterns ● Design Patterns ● Diagrams ● Agile + Architecture ● Principles - Architecture and Design ● Recap ● References Agenda
  • 4.
    Architecture is ita Perspective? How to see things in a meaningful way?
  • 5.
    Need for Architecture “WhereBusiness meets Technology”
  • 7.
    Definition The fundamental organizationof a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. Usually captured as a diagram.
  • 8.
    My Definition A sharedunderstanding among various team members (business, product, development, operations) about an application or a set of applications that deliver business value by building platform capabilities that are robust, flexible - open for extension, composable by nature, and can be orchestrated to produce an optimal solutions for a business and add value to the end user.
  • 9.
    In Nutshell Define Boundaries /Contracts / Responsibility of Software Components
  • 10.
  • 11.
    What are architecturalconsiderations? ● Hard choices in Software ● Expensive part of Development and Delivery ● Important stuff! ● Business Value vs Platform Capability current vs future
  • 12.
    What are thosehard choices? Any thoughts?
  • 13.
    Hard things andimportant stuff: ● Programming Language - Fit, Tools and Skills ● Reversibility - heights of tight coupling ● Building on top of unstable platform or software ● Over Engineering (should be Agile, right?) ● Complex frameworks and dependencies (YAGNI) ● Deployment Environment, DevOps ● Compliance, Security and Performance
  • 14.
    Why Architecture isso important? What & Why Where How Product Feature Platform Capability Implementation UX & CX Cross-Cutting Develop & Test Customer Value Concerns Plays by Component / System boundaries Define Boundaries
  • 15.
  • 16.
    Forms of Architecture SystemArchitecture Component Architecture Application Architecture Data / Information Architecture Integration Architecture IT / Network / Infrastructure Architecture Enterprise Architecture
  • 17.
    Software Architects =City Planners city keeps changing… so does software!
  • 18.
    Architect Roles Integration Architect Application/ Technical Architect Solution Architect / Solution Designer Domain Architect Enterprise Architect Principal / Chief Architect
  • 19.
    Software Architecture andSoftware Design - is it the same thing? Which one is more important?
  • 20.
    Both are important- one can’t survive without the other. Let's look at the Definition of ‘Software Design’
  • 21.
    Definition: Software Design Thefundamental organization of code/modules within a component, and its relationships to each other, and to the run time environment, and the principles guiding its development to deliver a specific goal/functionality of an overall solutions. Usually referred to as Application or Module design.
  • 22.
  • 23.
    Patterns In software engineering,a software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. An architectural pattern is a general reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope.
  • 24.
    Architectural Patterns ● Service-Oriented(SOA) and Microservices ● Event-Driven / MOM / ESB ● Layers ● Multi-Tier (2-tier, 3-tier, n-tier) / Client-Server ● Model-View-Controller, Presentation-Abstraction-Control, Model-View-Presenter, Model-View-ViewModel
  • 25.
    Architecture Styles Structure ● Component-based,monolithic, Layered, etc Messaging ● Event Driven, Pub-Sub, Async Messaging, etc Adaptive ● Plugin, Reflection, etc Distributed ● Client-Server, REST, SOA, Microservices, etc
  • 26.
    Design Patterns Creational ● AbstractFactory, Builder, Factory Method, Singleton, Prototype Structural ● Bridge, Adapter, Composite, Decorator, Facade, Proxy, Flyweight Behavioral ● Command, Observer, Visitor, Chain of Responsibility, etc..
  • 27.
    Diagrams Why Diagrams? ● Nothingbut a form of “representation” ● Simple to understand, common language ● Simplifies Complexity (conceptualize) ● Abstracts code/development ● Logical + Data Flow + Integration View
  • 28.
  • 29.
    Agile + Architecture SoftwareArchitecture in Agile Development Process ● Evolutionary Architecture and Emergent Design ● YAGNI ● Defer until the last responsible moment ● Refactoring ● Spikes, Stripes and Tracers ● Pragmatic
  • 30.
    Agile Architecture It's about“Just Enough” - Boundaries, Structure, Vision and Leadership - Understand how the significant elements fit together - Provide the foundations and vision to move forward - Mitigate the key risks
  • 31.
    Agile Architecture “GuidingPrinciples” ● Last Responsible Moment ● Continuous Integration ● Lightweight, Living Documentation ● Continuous Delivery ● Adapt for Organizational Structure ● Design for Replaceability
  • 32.
    Architectural Patterns willevolve over time ● Microservices ● API Layers - Experience, Gateway, Application / System, Core ● new Serverless / FaaS ● IoT, Smart Watch, Smart Cars - Tesla / Driverless ● new Unikernels - Clive, MirageOS, Rump Kernels
  • 33.
  • 34.
    External Enablers (Industry/ Market Push) Cloud Infrastructure - Agility - Elasticity of Compute Resources SaaS - Integration is easy, follow standards - REST, SAML Microservices and API - deliver faster, deliver frequently
  • 35.
    Internal Enablers The twokey enablers are: ● A high-speed culture ○ A poor culture inhibits organisational changes designed to increase speed. ○ Improve decision-making processes, can’t slow down delivery ● Strategic focus - two critical elements: ○ a clear strategic goal and ○ a focused strategic agenda. If the culture injects the fuel for speed, strategic focus delivers the grip and traction.
  • 36.
    Recap ● Software Architectureis a shared responsibility ● Ask ‘what, why, where’ before ‘how’ ● Patterns and Principles (Architecture & Design) ● Cool Diagrams!! ● Collaboration, close the feedback loop ● Agility in process is only half good without Architecture agility ● Market Hypes & Internal Culture
  • 37.
    Conclusion Embrace by participation ●Minimum Viable Architecture / Agile Architecture ● Don’t think Architecture as just ● Architecture Solution is a living document just like API documentation