Modern Agile Software Architecture
-
Upload
kannan-durairaj -
Category
Technology
-
view
121 -
download
0
Transcript of Modern Agile Software Architecture
![Page 1: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/1.jpg)
by KANNAN DURAIRAJ, Domain Architect - DigitalSoftware Engineer and Architect
Software Architecture
![Page 2: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/2.jpg)
● Introduction - Software Architecture● Forms of Architecture ● Architecture vs Design ● Architectural Patterns● Design Patterns● Diagrams● Agile + Architecture● Principles - Architecture and Design● Recap● References
Agenda
![Page 3: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/3.jpg)
![Page 4: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/4.jpg)
Architecture is it a Perspective? How to see things in a meaningful way?
![Page 5: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/5.jpg)
Need for Architecture
“Where Business meets Technology”
![Page 6: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/6.jpg)
![Page 7: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/7.jpg)
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.
![Page 8: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/8.jpg)
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.
![Page 9: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/9.jpg)
In Nutshell
Define Boundaries / Contracts / Responsibility
of Software Components
![Page 10: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/10.jpg)
Architectural Boundaries
Imagine Success With Boundary Without Boundary
![Page 11: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/11.jpg)
What are architectural considerations?
● Hard choices in Software● Expensive part of Development and Delivery● Important stuff! ● Business Value vs Platform Capability
current vs future
![Page 12: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/12.jpg)
What are those hard choices?
Any thoughts?
![Page 13: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/13.jpg)
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
![Page 14: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/14.jpg)
Why Architecture is so important?
What & Why Where How Product Feature Platform Capability ImplementationUX & CX Cross-Cutting Develop & Test Customer Value Concerns Plays by Component / System boundaries
Define Boundaries
![Page 15: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/15.jpg)
Forms of Architecture
![Page 16: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/16.jpg)
Forms of Architecture
System ArchitectureComponent ArchitectureApplication ArchitectureData / Information ArchitectureIntegration ArchitectureIT / Network / Infrastructure ArchitectureEnterprise Architecture
![Page 17: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/17.jpg)
Software Architects = City Planners
city keeps changing… so does software!
![Page 18: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/18.jpg)
Architect Roles
Integration ArchitectApplication / Technical ArchitectSolution Architect / Solution DesignerDomain ArchitectEnterprise Architect Principal / Chief Architect
![Page 19: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/19.jpg)
Software Architecture and Software Design - is it the same thing?
Which one is more important?
![Page 20: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/20.jpg)
Both are important - one can’t survive without the other.
Let's look at the Definition of ‘Software Design’
![Page 21: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/21.jpg)
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.
![Page 22: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/22.jpg)
Patterns
![Page 23: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/23.jpg)
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.
![Page 24: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/24.jpg)
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
![Page 25: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/25.jpg)
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
![Page 26: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/26.jpg)
Design Patterns
Creational ● Abstract Factory, Builder, Factory Method,
Singleton, PrototypeStructural
● Bridge, Adapter, Composite, Decorator, Facade, Proxy, Flyweight
Behavioral ● Command, Observer, Visitor, Chain of
Responsibility, etc..
![Page 27: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/27.jpg)
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
![Page 28: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/28.jpg)
Agile &
Architecture
![Page 29: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/29.jpg)
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
![Page 30: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/30.jpg)
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
![Page 31: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/31.jpg)
Agile Architecture “Guiding Principles”
● Last Responsible Moment● Continuous Integration● Lightweight, Living Documentation● Continuous Delivery● Adapt for Organizational Structure● Design for Replaceability
![Page 32: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/32.jpg)
Architectural Patterns will evolve over time
● Microservices● API Layers
- Experience, Gateway, Application / System, Core● newServerless / FaaS● IoT, Smart Watch, Smart Cars - Tesla / Driverless● new Unikernels - Clive, MirageOS, Rump Kernels
![Page 33: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/33.jpg)
Key Enablersa.k.a
Platform for Business
![Page 34: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/34.jpg)
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
![Page 35: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/35.jpg)
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.
![Page 36: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/36.jpg)
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
![Page 37: Modern Agile Software Architecture](https://reader031.fdocuments.us/reader031/viewer/2022030315/5883f65a1a28ab34428b739f/html5/thumbnails/37.jpg)
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