SlideShare ist ein Scribd-Unternehmen logo
1 von 79
Downloaden Sie, um offline zu lesen
Architecture and Architectors - useless vs
valuable
Andrei Shakirin
Agenda
• Architector rolle and Architecture definitions
• Cases, when architecture decisions hurt team (*)
– Context
– Observations (what happens)
– Solution and lesson learned
• Conclusion
* Examples was taken from VMWare, TYMIQ GmbH and INNOQ projects
About Me
• Software Engineer at VMWare Tanzu Labs
• Committer in Spring and Apache projects
• Speaker at technical conferences
Architecture Definitions
⟨system⟩ fundamental concepts or
properties of a system in its
environment embodied in its
elements, relationships, and in the
principles of its design and evolution
(ISO 42010)
Architecture represents the significant
design decisions that shape a system,
where significant is measured by cost
of change." -- Grady Booch.
Architecture is anything that team
considers important enough for
the system development and
evolving
Architecture is NOT:
Upfront activity performed by somebody in charge of telling
everyone else what to do
It is no a description or document, it is a property of your system
or even: it is your system (intentional or accidental)
What is Good Architecture?
What is the good car?
Quality
Sounds clear and obvious, but people still missing this
Simple
Admin GUI
Twitter
Netflix
Facebook
Amazon
Insurance policy
managment system
Scaling vs Complexity
Written over weekend
Some users
Half of planet
German tax low
Google Search
ChatGTP
Cases Structure
• Context
• Observation
• Lesson learned
#1 Painful sharing
Context
• E-Commerce shop
• Migration from E-Commerce framework
• Development team about 30 persons
Online Shop Design
Customer Domain Article Domain Order Domain
User Service Cart Service Article Service Order Service
SAP
Messaging
REST REST REST REST
Core Domain
DAOs
DB DB DB
SAP Connector Messaging Connector
Online Shop Design
Customer Domain Article Domain Order Domain
User Service Cart Service Article Service Order Service
SAP
ActiveMQ
REST REST REST REST
Core Domain
DAOs
DB DB DB
SAP Connector Messaging Connector
• Modification and maintenance of common domains
is hard
• Deployment in single container causes dependencies
and fragility between teams
• Migrations to new versions of Java, Hibernate, CXF
are extremely difficult and took very long time
Observation
Step 1: Split Codebase due Domain Code Duplication
User Customer
Domain
Checkout
Article Domain
Order Domain
User Service Cart Service Checkout Service Order Service
SAP
Messaging
REST REST REST REST
User Core
Domain
DAOs
DB
Container
Cart Customer
Domain
Cart Core
Domain
Core Order
Domain
Cart Article
Domain
Checkout Core
Domain
Core
framework as
thridparty
16
Step 2: Extract Services with High Availability Requirements
Gateway
Old Service2
inside Monolith
Price&Availability
Microservice
Monolith container
Consumer 1 Consumer 2 Consumer 3
Routing / Canary release
90% 10%
Old Service1
inside Monolith
Old Service3
inside Mnolith
• Request load is essentially higher
(or lower) as rest monolith
components
Step 4: Decentralize Data Management
Docker
Order Service
REST
R
E
S
T
Docker
Checkout
Service
REST
R
E
S
T
Docker
Cart Service
REST
R
E
S
T
Docker
User Service
REST
R
E
S
T
SAP
Messaging
DB
DB
DB DB
• Think twice before share module, especially across
bounded contexts
• Duplication is less critical as common dependencies
• Treat common utils dependencies as third party libraries
and make them as thin as possible
• Making decisions, system evolving and maintenance
inside team is a lot of easier as a cross teams
Lessons Learned
#2 Non-extensible extensibility
Context
• E-Commerce (retail) provider
• Global customer base
• Platform for the clients that served their clients
• Catalog/CMS/Shop/Fulfilment
• Multi-tenant
• Highly customizable
Large
strategic
customers
Small
customers
The solution
General
Low
High
Specific
Costs
Customization
grade
• If you attempt to satisfy everyone, you will likely end
up to satisfying no one
• Specific solution is often more preferable as highly
configurable one
Lessons Learned
#3 Microservices is the solution for all problems
• Bookkeeping software
• Synchronization with online payment transactions
• 6 developers team
Context
Architecture
Transaction
Service
Transaction
Fetcher
Scheduled
Job
REST API
Internal
Storage
Online
Payment
Provider
Consumer Consumer Consumer
• Legacy technology
• Code difficult to support and maintain
• Hard to extend for new payment providers
Problems reported by customer
• Split to microservices to make code maintainable
• Microservices architecture will help to make architecture
more extensible
Initial plan from customer
• There is only single bounded context
• Both modules service and job belong to this bounded
context
• There is single business domain model
• Splitting to other modules / microservices doesn’t make
sense at all and can make problems even worse
Analyse shows
• Service and Job were rewritten using TDD and pair
programming
• Both modules were migrated to SpringBoot, Spring Batch was
used for Job to get monitoring out of the box
• Huge amount of optimizations were done
• Both modules shared the same database and data model
Final Solution
• Unnecessary splitting of modules belonging in the same
bounded context can cause more problems in
architecture
• Microservices is not universal solution and wouldn’t
improved bad design automatically
• The main reasons of splitting are: business subdomain,
scalability requirements, lifecycle, failure isolation,
different technology stack
Lessons Learned
#4 Your system WILL be dynamic
• Large scale insurance system
• Model driven development
• 2 releases per year
• > 100 developers (more maintain)
Lessons learned
• Centralized responsibity hurts
• Faced too much rigidity, people always find a way around
the rules
#5 Over fine-grained
• Large scale B2B food retailer
• New company wide shop and international logistic system
• 40 in the beginning, > 200 developers
Context
Tiny small Microservices:
Problem is overlapping:
Order Service
Order Service
Checkout Support Fullfilment Billing
Order Service
Checkout Support Fullfilment Billing
Eeverybody wants to be a Netflix, but nobody is
Order Service
Checkout Support Fullfilment Billing
Lessons learned
• Small is not always beatifull
• Refactoring inside team boundaries became much easier
#6 Cargo Cult
Melanesian Islanders Cargo Cult
Symtpoms
• Ritual inclusion of code or program structures that serve no
real purpose (redundant checks for null values, testing
whether a collection is empty before iterating )
• Copying existing code with little understanding of how it
works
• Applying a design pattern or coding style blindly without
understanding the reasons behind that design principle
• Trying to make system too flexible: adopting different types
of databases, configuration sources, communication
protocols even if they do not really needed
Context
• Framework to discover, configure and secure web
services
• Customer is flight modelling company
• 10 developers
Design
Database
Repository Layer
Model Layer
Configuration
Layer
API Layer
Configuration technical
service
Repository
Repository Layer
Wiring Layer
Artifact Layer
API Layer
Service Registry
SQL, Non-SQL DBs
Impl 2, 3
File, DB, Git
Other repos
Other wirings
Impl 2, 3
Mapping
Mapping
Mapping
Mapping
Mapping
Mapping
… …
Communication
abstraction
Communication
abstraction
http://
Queue
Lessons learned
• Abstractions in system design are often leaky
• Build new layers carefully: not because of fashion, coolness or
dreams
• Be pragmatic for now, but predict system evolving
#7 Horizontal Split
Context
• Platfom for trains control
• Straightforward business logic
• High scalability requirements
• 10 developers
Group 2
„You can‘t build reliable progams with
Java Script“
Group 1
„Java is legacy programming
language: Cobol of these days“
JSON API
Java Backend
HTML/CSS/JavaScript/Frontend
• Any feature requires communication between the teams
• One group should wait for another one
• If backend systems are unresponsive, frontend teams
quickly becomes secret „full stack“
From a Layered System …
… to a system of systems
and backend only split …
#8 Improve with less intelligence
Context
• Bank with multiple collection of the shelf systems
• Highly proprietary integration solution phased out
by vendor
Visual Mapping Tool
• No Unit Test
• No CI/CD
• It is not a software development, it is a disaster
Java
adapters
Lessons learned
• Smart endpoints, dumb pipes (even with cool names)
• Value of specific over generic solutions
Takeaways
• Don‘t be afraid about architecture
• Choose the simplest thing that will work
• Create evolvable structures, manage architecural evolution
• Don‘t built road blocks, create value and get out of the way
#5 Free style architecture
Context
• E-Commerce online shop / retail
• 100-120 developers
• 10 self contained teams
Coupling
methods
modules
components
micro services
systems
Decoupling
Number of
develpers
From a Layered System …
Module
Module
Module
… to a system of systems
But …
• Luck of standartization led to ineffecient UI integration at
runtime (integration was done at hock)
• Vast differences in API style, formats, documentation created
needless extra work (json+hal, json+saron)
• Despite not centralized frontend, centralized frontend team
creates new bottleneck (centrailzed tool chain)
You cannot decide to not have an architecture; if you don‘t
actively create it, be prepare to deal with the one what emerges
There is a fine line between diversity (that adds value) and chaos
(that doesn‘t)
Extremely loose coupling requires a few rules, but they need to
be enforced strictly

Weitere ähnliche Inhalte

Was ist angesagt?

ITSM and Service Catalog Overview
ITSM and Service Catalog OverviewITSM and Service Catalog Overview
ITSM and Service Catalog OverviewChristopher Glennon
 
Enterprise Service Management & IT Operations Management Coming Together
Enterprise Service Management & IT Operations Management Coming TogetherEnterprise Service Management & IT Operations Management Coming Together
Enterprise Service Management & IT Operations Management Coming TogetherOpsRamp
 
Composale DXP with MACH architecture.pptx
Composale DXP with MACH architecture.pptxComposale DXP with MACH architecture.pptx
Composale DXP with MACH architecture.pptxPieter Brinkman
 
Best Practices for Implementing a Service Catalog and Enhanced ITSM
Best Practices for Implementing a Service Catalog and Enhanced ITSMBest Practices for Implementing a Service Catalog and Enhanced ITSM
Best Practices for Implementing a Service Catalog and Enhanced ITSMhdicapitalarea
 
Managed it services
Managed it servicesManaged it services
Managed it servicesGss America
 
Managed Services
Managed ServicesManaged Services
Managed ServicesRishu Mehra
 
Top 3 Help Desk Challenges & What You Can Do About Them
Top 3 Help Desk Challenges & What You Can Do About ThemTop 3 Help Desk Challenges & What You Can Do About Them
Top 3 Help Desk Challenges & What You Can Do About ThemSolarWinds
 
Service Catalog & Request Fulfillment, the cornerstone of IT Service Management
Service Catalog & Request Fulfillment, the cornerstone of IT Service ManagementService Catalog & Request Fulfillment, the cornerstone of IT Service Management
Service Catalog & Request Fulfillment, the cornerstone of IT Service ManagementBMC Software
 
OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...
OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...
OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...OpenText
 
Principles of microservices XP Days Ukraine
Principles of microservices   XP Days UkrainePrinciples of microservices   XP Days Ukraine
Principles of microservices XP Days UkraineSam Newman
 
ServiceNow ITSM Overview
ServiceNow ITSM OverviewServiceNow ITSM Overview
ServiceNow ITSM OverviewJade Global
 
[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...
[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...
[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...WSO2
 
Managed Services Model For IT Services
Managed Services Model For IT Services Managed Services Model For IT Services
Managed Services Model For IT Services Ajay Rathi
 
Introduction to Event-Driven Architecture
Introduction to Event-Driven Architecture Introduction to Event-Driven Architecture
Introduction to Event-Driven Architecture Solace
 
Product Catalog and IT Service Management
Product Catalog and IT Service ManagementProduct Catalog and IT Service Management
Product Catalog and IT Service ManagementDrew Madelung
 
How to build an integrated and actionable IT Service Catalog
How to build an integrated and actionable IT Service CatalogHow to build an integrated and actionable IT Service Catalog
How to build an integrated and actionable IT Service Catalogmboyle
 
ITSM Project
ITSM ProjectITSM Project
ITSM ProjectOleksandr
 
Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...
Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...
Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...Evergreen Systems
 
ITIL Introduction
ITIL IntroductionITIL Introduction
ITIL IntroductionRavi Kiran
 

Was ist angesagt? (20)

ITSM and Service Catalog Overview
ITSM and Service Catalog OverviewITSM and Service Catalog Overview
ITSM and Service Catalog Overview
 
Enterprise Service Management & IT Operations Management Coming Together
Enterprise Service Management & IT Operations Management Coming TogetherEnterprise Service Management & IT Operations Management Coming Together
Enterprise Service Management & IT Operations Management Coming Together
 
Composale DXP with MACH architecture.pptx
Composale DXP with MACH architecture.pptxComposale DXP with MACH architecture.pptx
Composale DXP with MACH architecture.pptx
 
Best Practices for Implementing a Service Catalog and Enhanced ITSM
Best Practices for Implementing a Service Catalog and Enhanced ITSMBest Practices for Implementing a Service Catalog and Enhanced ITSM
Best Practices for Implementing a Service Catalog and Enhanced ITSM
 
Managed it services
Managed it servicesManaged it services
Managed it services
 
Managed Services
Managed ServicesManaged Services
Managed Services
 
Top 3 Help Desk Challenges & What You Can Do About Them
Top 3 Help Desk Challenges & What You Can Do About ThemTop 3 Help Desk Challenges & What You Can Do About Them
Top 3 Help Desk Challenges & What You Can Do About Them
 
Service Catalog & Request Fulfillment, the cornerstone of IT Service Management
Service Catalog & Request Fulfillment, the cornerstone of IT Service ManagementService Catalog & Request Fulfillment, the cornerstone of IT Service Management
Service Catalog & Request Fulfillment, the cornerstone of IT Service Management
 
OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...
OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...
OpenText Content Suite Platform and OpenText Extended ECM: What’s New in Rele...
 
Principles of microservices XP Days Ukraine
Principles of microservices   XP Days UkrainePrinciples of microservices   XP Days Ukraine
Principles of microservices XP Days Ukraine
 
ServiceNow ITSM Overview
ServiceNow ITSM OverviewServiceNow ITSM Overview
ServiceNow ITSM Overview
 
[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...
[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...
[WSO2Con EU 2018] The Hybrid Integration Platform: Can You Be in Business Wit...
 
Managed Services Model For IT Services
Managed Services Model For IT Services Managed Services Model For IT Services
Managed Services Model For IT Services
 
Introduction to Event-Driven Architecture
Introduction to Event-Driven Architecture Introduction to Event-Driven Architecture
Introduction to Event-Driven Architecture
 
Product Catalog and IT Service Management
Product Catalog and IT Service ManagementProduct Catalog and IT Service Management
Product Catalog and IT Service Management
 
How to build an integrated and actionable IT Service Catalog
How to build an integrated and actionable IT Service CatalogHow to build an integrated and actionable IT Service Catalog
How to build an integrated and actionable IT Service Catalog
 
Solution Architecture
Solution ArchitectureSolution Architecture
Solution Architecture
 
ITSM Project
ITSM ProjectITSM Project
ITSM Project
 
Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...
Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...
Service Catalog, Service Portfolio, Service Taxonomy - Big 3 of Customer Cent...
 
ITIL Introduction
ITIL IntroductionITIL Introduction
ITIL Introduction
 

Ähnlich wie Software Architecture and Architectors: useless VS valuable

Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitectureAshwini Kuntamukkala
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices M A Hossain Tonu
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cachecornelia davis
 
Building FoundationDB
Building FoundationDBBuilding FoundationDB
Building FoundationDBFoundationDB
 
2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use itMark Windholtz
 
170215 msa intro
170215 msa intro170215 msa intro
170215 msa introSonic leigh
 
Why we got to Docker
Why we got to DockerWhy we got to Docker
Why we got to Dockerallingeek
 
Serverless microservices
Serverless microservicesServerless microservices
Serverless microservicesLalit Kale
 
The Need of Cloud-Native Application
The Need of Cloud-Native ApplicationThe Need of Cloud-Native Application
The Need of Cloud-Native ApplicationEmiliano Pecis
 
Iot cloud service v2.0
Iot cloud service v2.0Iot cloud service v2.0
Iot cloud service v2.0Vinod Wilson
 
When small problems become big problems
When small problems become big problemsWhen small problems become big problems
When small problems become big problemsAdrian Cole
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsŁukasz Sowa
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realistsKarthik Gaekwad
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterpriseBert Poller
 
Enhancing clean architecture: 2 n-dimensional layers
Enhancing clean architecture: 2 n-dimensional layersEnhancing clean architecture: 2 n-dimensional layers
Enhancing clean architecture: 2 n-dimensional layersValentin-Tudor Mocanu
 

Ähnlich wie Software Architecture and Architectors: useless VS valuable (20)

Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
Microservices.pdf
Microservices.pdfMicroservices.pdf
Microservices.pdf
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cache
 
Building FoundationDB
Building FoundationDBBuilding FoundationDB
Building FoundationDB
 
2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it
 
170215 msa intro
170215 msa intro170215 msa intro
170215 msa intro
 
Why we got to Docker
Why we got to DockerWhy we got to Docker
Why we got to Docker
 
Migrate to microservices
Migrate to microservicesMigrate to microservices
Migrate to microservices
 
Serverless microservices
Serverless microservicesServerless microservices
Serverless microservices
 
The Need of Cloud-Native Application
The Need of Cloud-Native ApplicationThe Need of Cloud-Native Application
The Need of Cloud-Native Application
 
Iot cloud service v2.0
Iot cloud service v2.0Iot cloud service v2.0
Iot cloud service v2.0
 
When small problems become big problems
When small problems become big problemsWhen small problems become big problems
When small problems become big problems
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problems
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
Enhancing clean architecture: 2 n-dimensional layers
Enhancing clean architecture: 2 n-dimensional layersEnhancing clean architecture: 2 n-dimensional layers
Enhancing clean architecture: 2 n-dimensional layers
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 

Mehr von Comsysto Reply GmbH

ljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdfljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdfComsysto Reply GmbH
 
Invited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdfInvited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdfComsysto Reply GmbH
 
MicroFrontends für Microservices
MicroFrontends für MicroservicesMicroFrontends für Microservices
MicroFrontends für MicroservicesComsysto Reply GmbH
 
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...Comsysto Reply GmbH
 
Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup Comsysto Reply GmbH
 
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...Comsysto Reply GmbH
 
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo..."Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...Comsysto Reply GmbH
 
Data lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid ArchitecturesData lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid ArchitecturesComsysto Reply GmbH
 
Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawComsysto Reply GmbH
 
Distributed Computing and Caching in the Cloud: Hazelcast and Microsoft
Distributed Computing and Caching in the Cloud: Hazelcast and MicrosoftDistributed Computing and Caching in the Cloud: Hazelcast and Microsoft
Distributed Computing and Caching in the Cloud: Hazelcast and MicrosoftComsysto Reply GmbH
 
Grundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich
Grundlegende Konzepte von Elm, React und AngularDart 2 im VergleichGrundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich
Grundlegende Konzepte von Elm, React und AngularDart 2 im VergleichComsysto Reply GmbH
 
Building a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformBuilding a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformComsysto Reply GmbH
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Comsysto Reply GmbH
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNComsysto Reply GmbH
 
Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)Comsysto Reply GmbH
 
Java cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica KrizanicJava cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica KrizanicComsysto Reply GmbH
 
21.04.2016 Meetup: Spark vs. Flink
21.04.2016 Meetup: Spark vs. Flink21.04.2016 Meetup: Spark vs. Flink
21.04.2016 Meetup: Spark vs. FlinkComsysto Reply GmbH
 
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016Comsysto Reply GmbH
 
Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016Comsysto Reply GmbH
 

Mehr von Comsysto Reply GmbH (20)

ljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdfljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdf
 
Invited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdfInvited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdf
 
MicroFrontends für Microservices
MicroFrontends für MicroservicesMicroFrontends für Microservices
MicroFrontends für Microservices
 
Alles offen = gut(ai)
Alles offen = gut(ai)Alles offen = gut(ai)
Alles offen = gut(ai)
 
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
 
Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup
 
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
 
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo..."Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
 
Data lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid ArchitecturesData lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid Architectures
 
Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project Jigsaw
 
Distributed Computing and Caching in the Cloud: Hazelcast and Microsoft
Distributed Computing and Caching in the Cloud: Hazelcast and MicrosoftDistributed Computing and Caching in the Cloud: Hazelcast and Microsoft
Distributed Computing and Caching in the Cloud: Hazelcast and Microsoft
 
Grundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich
Grundlegende Konzepte von Elm, React und AngularDart 2 im VergleichGrundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich
Grundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich
 
Building a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformBuilding a fully-automated Fast Data Platform
Building a fully-automated Fast Data Platform
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
 
Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)
 
Java cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica KrizanicJava cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica Krizanic
 
21.04.2016 Meetup: Spark vs. Flink
21.04.2016 Meetup: Spark vs. Flink21.04.2016 Meetup: Spark vs. Flink
21.04.2016 Meetup: Spark vs. Flink
 
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
 
Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016
 

Kürzlich hochgeladen

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Kürzlich hochgeladen (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Software Architecture and Architectors: useless VS valuable

  • 1. Architecture and Architectors - useless vs valuable Andrei Shakirin
  • 2. Agenda • Architector rolle and Architecture definitions • Cases, when architecture decisions hurt team (*) – Context – Observations (what happens) – Solution and lesson learned • Conclusion * Examples was taken from VMWare, TYMIQ GmbH and INNOQ projects
  • 3. About Me • Software Engineer at VMWare Tanzu Labs • Committer in Spring and Apache projects • Speaker at technical conferences
  • 4. Architecture Definitions ⟨system⟩ fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution (ISO 42010) Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change." -- Grady Booch. Architecture is anything that team considers important enough for the system development and evolving
  • 5. Architecture is NOT: Upfront activity performed by somebody in charge of telling everyone else what to do It is no a description or document, it is a property of your system or even: it is your system (intentional or accidental)
  • 6. What is Good Architecture? What is the good car?
  • 7. Quality Sounds clear and obvious, but people still missing this
  • 8. Simple Admin GUI Twitter Netflix Facebook Amazon Insurance policy managment system Scaling vs Complexity Written over weekend Some users Half of planet German tax low Google Search ChatGTP
  • 9. Cases Structure • Context • Observation • Lesson learned
  • 11. Context • E-Commerce shop • Migration from E-Commerce framework • Development team about 30 persons
  • 12. Online Shop Design Customer Domain Article Domain Order Domain User Service Cart Service Article Service Order Service SAP Messaging REST REST REST REST Core Domain DAOs DB DB DB SAP Connector Messaging Connector
  • 13. Online Shop Design Customer Domain Article Domain Order Domain User Service Cart Service Article Service Order Service SAP ActiveMQ REST REST REST REST Core Domain DAOs DB DB DB SAP Connector Messaging Connector
  • 14. • Modification and maintenance of common domains is hard • Deployment in single container causes dependencies and fragility between teams • Migrations to new versions of Java, Hibernate, CXF are extremely difficult and took very long time Observation
  • 15. Step 1: Split Codebase due Domain Code Duplication User Customer Domain Checkout Article Domain Order Domain User Service Cart Service Checkout Service Order Service SAP Messaging REST REST REST REST User Core Domain DAOs DB Container Cart Customer Domain Cart Core Domain Core Order Domain Cart Article Domain Checkout Core Domain Core framework as thridparty
  • 16. 16 Step 2: Extract Services with High Availability Requirements Gateway Old Service2 inside Monolith Price&Availability Microservice Monolith container Consumer 1 Consumer 2 Consumer 3 Routing / Canary release 90% 10% Old Service1 inside Monolith Old Service3 inside Mnolith • Request load is essentially higher (or lower) as rest monolith components
  • 17. Step 4: Decentralize Data Management Docker Order Service REST R E S T Docker Checkout Service REST R E S T Docker Cart Service REST R E S T Docker User Service REST R E S T SAP Messaging DB DB DB DB
  • 18. • Think twice before share module, especially across bounded contexts • Duplication is less critical as common dependencies • Treat common utils dependencies as third party libraries and make them as thin as possible • Making decisions, system evolving and maintenance inside team is a lot of easier as a cross teams Lessons Learned
  • 20. Context • E-Commerce (retail) provider • Global customer base • Platform for the clients that served their clients • Catalog/CMS/Shop/Fulfilment • Multi-tenant • Highly customizable
  • 22. • If you attempt to satisfy everyone, you will likely end up to satisfying no one • Specific solution is often more preferable as highly configurable one Lessons Learned
  • 23. #3 Microservices is the solution for all problems
  • 24. • Bookkeeping software • Synchronization with online payment transactions • 6 developers team Context
  • 26. • Legacy technology • Code difficult to support and maintain • Hard to extend for new payment providers Problems reported by customer
  • 27. • Split to microservices to make code maintainable • Microservices architecture will help to make architecture more extensible Initial plan from customer
  • 28. • There is only single bounded context • Both modules service and job belong to this bounded context • There is single business domain model • Splitting to other modules / microservices doesn’t make sense at all and can make problems even worse Analyse shows
  • 29. • Service and Job were rewritten using TDD and pair programming • Both modules were migrated to SpringBoot, Spring Batch was used for Job to get monitoring out of the box • Huge amount of optimizations were done • Both modules shared the same database and data model Final Solution
  • 30. • Unnecessary splitting of modules belonging in the same bounded context can cause more problems in architecture • Microservices is not universal solution and wouldn’t improved bad design automatically • The main reasons of splitting are: business subdomain, scalability requirements, lifecycle, failure isolation, different technology stack Lessons Learned
  • 31. #4 Your system WILL be dynamic • Large scale insurance system • Model driven development • 2 releases per year • > 100 developers (more maintain)
  • 32.
  • 33.
  • 34.
  • 35. Lessons learned • Centralized responsibity hurts • Faced too much rigidity, people always find a way around the rules
  • 37. • Large scale B2B food retailer • New company wide shop and international logistic system • 40 in the beginning, > 200 developers Context
  • 39.
  • 42. Order Service Checkout Support Fullfilment Billing
  • 43. Order Service Checkout Support Fullfilment Billing
  • 44.
  • 45.
  • 46. Eeverybody wants to be a Netflix, but nobody is
  • 47. Order Service Checkout Support Fullfilment Billing
  • 48. Lessons learned • Small is not always beatifull • Refactoring inside team boundaries became much easier
  • 51. Symtpoms • Ritual inclusion of code or program structures that serve no real purpose (redundant checks for null values, testing whether a collection is empty before iterating ) • Copying existing code with little understanding of how it works • Applying a design pattern or coding style blindly without understanding the reasons behind that design principle • Trying to make system too flexible: adopting different types of databases, configuration sources, communication protocols even if they do not really needed
  • 52. Context • Framework to discover, configure and secure web services • Customer is flight modelling company • 10 developers
  • 53. Design Database Repository Layer Model Layer Configuration Layer API Layer Configuration technical service Repository Repository Layer Wiring Layer Artifact Layer API Layer Service Registry SQL, Non-SQL DBs Impl 2, 3 File, DB, Git Other repos Other wirings Impl 2, 3 Mapping Mapping Mapping Mapping Mapping Mapping … … Communication abstraction Communication abstraction http:// Queue
  • 54. Lessons learned • Abstractions in system design are often leaky • Build new layers carefully: not because of fashion, coolness or dreams • Be pragmatic for now, but predict system evolving
  • 56. Context • Platfom for trains control • Straightforward business logic • High scalability requirements • 10 developers
  • 57. Group 2 „You can‘t build reliable progams with Java Script“ Group 1 „Java is legacy programming language: Cobol of these days“
  • 59. • Any feature requires communication between the teams • One group should wait for another one • If backend systems are unresponsive, frontend teams quickly becomes secret „full stack“
  • 60. From a Layered System …
  • 61. … to a system of systems
  • 62. and backend only split …
  • 63. #8 Improve with less intelligence
  • 64. Context • Bank with multiple collection of the shelf systems • Highly proprietary integration solution phased out by vendor
  • 65.
  • 66.
  • 67. Visual Mapping Tool • No Unit Test • No CI/CD • It is not a software development, it is a disaster
  • 69.
  • 70. Lessons learned • Smart endpoints, dumb pipes (even with cool names) • Value of specific over generic solutions
  • 71. Takeaways • Don‘t be afraid about architecture • Choose the simplest thing that will work • Create evolvable structures, manage architecural evolution • Don‘t built road blocks, create value and get out of the way
  • 72. #5 Free style architecture
  • 73. Context • E-Commerce online shop / retail • 100-120 developers • 10 self contained teams
  • 75. From a Layered System … Module Module Module
  • 76. … to a system of systems
  • 77.
  • 78. But … • Luck of standartization led to ineffecient UI integration at runtime (integration was done at hock) • Vast differences in API style, formats, documentation created needless extra work (json+hal, json+saron) • Despite not centralized frontend, centralized frontend team creates new bottleneck (centrailzed tool chain)
  • 79. You cannot decide to not have an architecture; if you don‘t actively create it, be prepare to deal with the one what emerges There is a fine line between diversity (that adds value) and chaos (that doesn‘t) Extremely loose coupling requires a few rules, but they need to be enforced strictly