last 20 years. • Software Architecture is often counter-intuitive, generally hard and has steep learning curve. There is no single right way how to do it and there are no stupid questions. • This is a gentle introduction to Software Architecture and an overview of basic architectural styles. • Should you want to dig deeper into anything and everything, let me know and I will prepare a session to discuss more specific topic.
STAKEHOLDERS? • WHAT ARE THEIR NEEDS / INTERESTS / STAKEHOLDER VALUES? • HOW DO WE MAKE SURE THAT OUR SYSTEM IS AS SIMPLE AS POSSIBLE? • WHAT DO WE DO TO KEEP COST OF CHANGE UNDER CONTROL? • HOW DO WE ENSURE THAT OUR ARCHITECTURE IS REPLACEABLE?
wrong? Is it important? What are the risks? Who knows them? How can we manage risk? • Software Architect needs to start this discussion (if no one else does) • Software Architect needs to make sure we have the answers
is isolated from client and server. • Business layer often historically hosted in application servers with obscure technologies (j2ee, Microsoft ASP, PHP, ColdFusion, etc.). • How is it different from 2-Tier? https://en.wikipedia.org/wiki/Multitier_architecture#/media/File:Overview_of_a_three-tier_application_vectorVersion.svg
all interfaces are alike. • Outer layers depend on inner layers. • Inner layers must not depend on outer layers. • Enforces Inversion of Control. • How is it different from N-Tier?
and Hexagonal are viewed as the same. • Hexagonal Architecture is more explicit and structured. • Recommended reading: https://herbertograca.com/2017/11/16/ explicit-architecture-01-ddd-hexagonal- onion-clean-cqrs-how-i-put-it-all-together/
of Frameworks. • Testable: all parts and as a whole. • Independent of Interfaces. • Independent of the data store / database / object persistence. • Independent of any external impact.
you look at the top level directory structure, and the source files in the highest level package; do they scream: Health Care System, or Accounting System, or Inventory Management System? Do they scream global, distributed, consistent or available? Or do they scream: Rails, or Spring/Hibernate, or ASP? Recommended viewing: https://www.youtube.com/watch?v=ZsHMHukIlJY
services. • Each service does only one thing and does it well. • Each service is represented only by its API. • Each service has its own data. Microservices https://medium.com/hashmapinc/the-what-why-and-how-of-a-microservices-architecture-4179579423a9
monoliths? • Duplication and lack of consistency • Difficult or wrong decoupling of functional units • Lack of discipline • Teams only accept responsibility for “their" services • Diversity in technologies increases costs