7. 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.
8. 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.
11. What are architectural considerations?
● Hard choices in Software
● Expensive part of Development and Delivery
● Important stuff!
● Business Value vs Platform Capability
current vs future
13. 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
14. 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
16. Forms of Architecture
System Architecture
Component Architecture
Application Architecture
Data / Information Architecture
Integration Architecture
IT / Network / Infrastructure Architecture
Enterprise Architecture
20. Both are important - one can’t survive without the
other.
Let's look at the Definition of ‘Software Design’
21. 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.
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.
27. 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
29. 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
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 “Guiding Principles”
● Last Responsible Moment
● Continuous Integration
● Lightweight, Living Documentation
● Continuous Delivery
● Adapt for Organizational Structure
● Design for Replaceability
32. 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
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 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.
36. 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
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