modern agile software architecture

37
by KANNAN DURAIRAJ, Domain Architect - Digital Software Engineer and Architect Software Architecture

Upload: kannan-durairaj

Post on 14-Apr-2017

119 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Modern Agile Software Architecture

by KANNAN DURAIRAJ, Domain Architect - DigitalSoftware Engineer and Architect

Software Architecture

Page 2: Modern Agile 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

Page 3: Modern Agile Software Architecture
Page 4: Modern Agile Software Architecture

Architecture is it a Perspective? How to see things in a meaningful way?

Page 5: Modern Agile Software Architecture

Need for Architecture

“Where Business meets Technology”

Page 6: Modern Agile Software Architecture
Page 7: Modern Agile Software Architecture

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

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

In Nutshell

Define Boundaries / Contracts / Responsibility

of Software Components

Page 10: Modern Agile Software Architecture

Architectural Boundaries

Imagine Success With Boundary Without Boundary

Page 11: Modern Agile Software Architecture

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

What are those hard choices?

Any thoughts?

Page 13: Modern Agile Software Architecture

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

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

Forms of Architecture

Page 16: Modern Agile Software Architecture

Forms of Architecture

System ArchitectureComponent ArchitectureApplication ArchitectureData / Information ArchitectureIntegration ArchitectureIT / Network / Infrastructure ArchitectureEnterprise Architecture

Page 17: Modern Agile Software Architecture

Software Architects = City Planners

city keeps changing… so does software!

Page 18: Modern Agile Software Architecture

Architect Roles

Integration ArchitectApplication / Technical ArchitectSolution Architect / Solution DesignerDomain ArchitectEnterprise Architect Principal / Chief Architect

Page 19: Modern Agile Software Architecture

Software Architecture and Software Design - is it the same thing?

Which one is more important?

Page 20: Modern Agile Software Architecture

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

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

Patterns

Page 23: Modern Agile Software Architecture

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

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

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

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

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

Agile &

Architecture

Page 29: Modern Agile Software 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

Page 30: Modern Agile Software Architecture

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

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

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

Key Enablersa.k.a

Platform for Business

Page 34: Modern Agile Software Architecture

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

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

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

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