SlideShare a Scribd company logo
1 of 65
Download to read offline
Microservices as an Evolutionary Architecture: Lessons learned
Claudio Eduardo de Oliveira & Luram Archanjo
Who am I?
● Software Engineer @Sensedia
● MBA in Java projects
● Java and Microservice enthusiast
Who am I?
● Lead Solutions Architect @Sensedia
● Book Author
● Spring, Java and Cloud Native enthusiast
Agenda
● Use Case & As Is
● Microservices
● Evolutionary Architecture
● Domain Driven Design
● Communication Patterns & Reactive Programming
● Observability & Database Migration
● Questions
Use case
Use case
Token Service Provider
Tokenization reduces the value of stored payment credentials by removing
consumers’ primary account numbers (PANs) from the transaction process. It
does this by replacing them with a unique identifier called a payment token.
This reduces the appeal of stealing the credentials as they would be largely
useless to hackers.
Source: https://www.rambus.com/blogs/what-is-a-token-service-provider/
Use case
In the beginning
As is
● Single communication pattern
● 50-60% of our commits during the sprint were in the same repository
● Service with different workload requirements (Crypto and Business)
● Traffic east-west in the API Gateway
● Java & Spring everywhere
● Synchronous process everywhere
We were in the wrong way to
adopt microservices architecture!
Let's recap what is the
microservices architecture!
Moving to Microservices
Feature A
Feature B
Feature C
Monolith
Microservice Microservice
Microservices
Microservice
Technological Heterogeneity
Microservice Microservice Microservice
DB DB DB
Evolutionary Architecture
Evolutionary Architecture
An evolutionary architecture supports guided, incremental change as a first
principle across multiple dimensions.
Source: https://www.thoughtworks.com/books/building-evolutionary-architectures
Response time
Microservices as an Evolutionary Architecture: Lessons learned
Throughput
Before make a architectural
decision, we need to be confident!
How?
Regression Tests
Regression Tests
REGRESSION TEST SUITE
REGRESSION SCRIPTS
AUTOMATED REGRESSION TESTING
NEW FEATURES
SCRIPT UPDATES
We have tests coverage and now?
Domain Driven Design (DDD)
Domain Driven Design(DDD)
Domain-driven design (DDD) is an approach to developing software for complex
needs by deeply connecting the implementation to an evolving model of the core
business concepts.
● Place the project’s primary focus on the core domain and domain logic
● Base complex designs on a model
● Initiate a creative collaboration between technical and domain experts to
iteratively cut ever closer to the conceptual heart of the problem.
Source: https://dddcommunity.org/learning-ddd/what_is_ddd/
We are trying to figure out the
technique to divide services,
what part of DDD can help us?
Domain Driven Design - Bounded Context
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of
DDD's strategic design section which is all about dealing with large models and
teams. DDD deals with large models by dividing them into different Bounded
Contexts and being explicit about their interrelationships.
Source: https://martinfowler.com/bliki/BoundedContext.html
We separated the responsibilities
and now?
Communication Patterns
REST API
REST API, EVERYWHERE
Advanced Message Queuing
Protocol (AMQP)
Advanced Message Queuing Protocol (AMQP)
● Introducing Message-Driven Programming with Low Level Events
● Fire & Forget principle
● Durable Messages (avoid Circuit Breakers & Retries)
● Better Scale strategies & Application Decoupling
● Fits well for 3rd partners integrations
Advanced Message Queuing Protocol (AMQP) - Thoughts
● Keep track of events otherwise you will have problems
● We used retries to put message in the queue
● Take care of the data into the message (security concerns)
HTTP / gRPC
HTTP / gRPC
● HTTP Connections are stateful (avoid open & close)
● Static Typed & Well Defined Contracts
● Reduce serialization complexity & improve efficiency
● Easy Peasy to integrate (there is code generation based in .proto)
● Traffic is binary reduce bandwidth usage
HTTP / gRPC - Thoughts
● Load Balancing and Client Load Balancing
● We used in the high throughput solution
● By definition in general we use for internal communication (a.k.a East-West)
● Not for humans, designed by machine communications
HTTP / REST
HTTP / REST
● Well documented Style
● “De-Facto” Pattern for Microservices Architecture
● “Toolability”
● Security
HTTP / REST - Thoughts
● Well documented Style
● For Humans, fits very well for External APIs ( API Strategy )
● API Management provided by Sensedia offers interesting features to
troubleshoot
We have tests, responsibilities
and communication!
It is possible to improve more?
Reactive Programming
Reactive Programming
Reactive programming is an asynchronous programming paradigm concerned
with data streams and the propagation of change.
● Easier to read, maintain and evolute
● Low memory footprint
● Scalability
Source: https://en.wikipedia.org/wiki/Reactive_programming
Reactive Programming
Source: https://craftsmen.nl/memory-usage-6-popular-rest-server-frameworks-compared/
Language
Language
Kotlin is fully compatible with all Java-based frameworks, which lets you stay on
your familiar technology stack while reaping the benefits of a more modern
language.
● 40% less code = Easier to read, maintain and evolute
● Fail fast principle = Time to Market
Source: https://kotlinlang.org/docs/reference/server-overview.html
Everything have been possible,
because we formed a great
Team Mindset
Team Mindset
In a fixed mindset, people believe their basic qualities, like their intelligence or
talent, are simply fixed traits. Contrarily, in a growth mindset, people believe that
their most basic abilities can be developed through dedication and hard work.
Source: https://mindsetonline.com/whatisit/about/
Team Mindset - Thoughts
● Hands-on
● Tech talks
● Lightning talks
● Events
○ The Developer’s Conference (TDC)
○ APIX
○ Meetups
We achieved the challenge!
And now?
sensedia.com
Monitoring & Observability
Monitoring is the practice of collecting signals,
telemetry, traces, etc and aggregating them,
and matching them against some pre-defined
criteria of system states we should carefully
watch. When we find that one of our signals
has crossed a threshold and may be heading
toward a known bad state, we take action to
remedy the system
- Christian Posta
Monitoring is a subset of
Observability
Observability on the other hand supposes up
front that our systems are highly unpredictable
and we cannot know all of the possible failure
modes up front
We need to collect much more data, even
high-cardinality data like userIDs, requestIDs,
source IPs, etc where the entire set could be
exponentially large
With observability, we need
fine-grained data
A user goes to pay for the items in their cart
and experiences a 10s delay choosing a
payment option. All of the pre-defined metric
thresholds (disk usage, queue depth, machine
health, etc) might be at acceptable levels
sensedia.com
Database Migration
Database Migration
SQL databases scale vertically, meaning you’ll need to increase the capacity of
a single server (increasing CPU, RAM, or SSD) to scale your database.
NoSQL databases scale horizontally, meaning you can add more servers to
power your growing database.
Source: https://www.thorntech.com/2019/03/sql-vs-nosql/
Database Migration
Microservice
DB
DBSynchronous, legacy
Asynchronous, new
Event
Before & After
Before
After
Summary
2º Place
1º Place
3º Place
Last responsible
moment
● Decisions
● Experience
● Maturity
Team mindset
● Commitment
● Opportunity to
grow and learn
● Feedbacks
Technologies
● Understand the
technologies
concepts
● Business value
Thanks a million!
Questions?
/larchanjo
/luram-archanjo
/claudioed
/claudioed

More Related Content

Similar to Microservices as an evolutionary architecture: lessons learned

ManuNair_PM_Profile
ManuNair_PM_ProfileManuNair_PM_Profile
ManuNair_PM_Profile
Manu M Nair
 
Agile Gurugram 2023 | Observability for Modern Applications. How does it help...
Agile Gurugram 2023 | Observability for Modern Applications. How does it help...Agile Gurugram 2023 | Observability for Modern Applications. How does it help...
Agile Gurugram 2023 | Observability for Modern Applications. How does it help...
AgileNetwork
 
SynopsisLowLatencySeminar.PDF
SynopsisLowLatencySeminar.PDFSynopsisLowLatencySeminar.PDF
SynopsisLowLatencySeminar.PDF
Anand Narayanan
 

Similar to Microservices as an evolutionary architecture: lessons learned (20)

Cloud Native Batch Processing: Beyond the What and How
Cloud Native Batch Processing: Beyond the What and HowCloud Native Batch Processing: Beyond the What and How
Cloud Native Batch Processing: Beyond the What and How
 
Deconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven DesignDeconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven Design
 
ManuNair_PM_Profile
ManuNair_PM_ProfileManuNair_PM_Profile
ManuNair_PM_Profile
 
Custom ERPNext Solutions
Custom ERPNext SolutionsCustom ERPNext Solutions
Custom ERPNext Solutions
 
Simply Business' Data Platform
Simply Business' Data PlatformSimply Business' Data Platform
Simply Business' Data Platform
 
Modern Agile Software Architecture
Modern Agile Software ArchitectureModern Agile Software Architecture
Modern Agile Software Architecture
 
Building Blockchain Apps: Intro to Dash Platform
Building Blockchain Apps: Intro to Dash PlatformBuilding Blockchain Apps: Intro to Dash Platform
Building Blockchain Apps: Intro to Dash Platform
 
MongoDB .local Chicago 2019: MongoDB – Powering the new age data demands
MongoDB .local Chicago 2019: MongoDB – Powering the new age data demandsMongoDB .local Chicago 2019: MongoDB – Powering the new age data demands
MongoDB .local Chicago 2019: MongoDB – Powering the new age data demands
 
DevSecOps at the GSA
DevSecOps at the GSADevSecOps at the GSA
DevSecOps at the GSA
 
Architecturing the software stack at a small business
Architecturing the software stack at a small businessArchitecturing the software stack at a small business
Architecturing the software stack at a small business
 
Agile Gurugram 2023 | Observability for Modern Applications. How does it help...
Agile Gurugram 2023 | Observability for Modern Applications. How does it help...Agile Gurugram 2023 | Observability for Modern Applications. How does it help...
Agile Gurugram 2023 | Observability for Modern Applications. How does it help...
 
apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber...
apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber...apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber...
apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber...
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
SFSCON23 - Daniele Fontani Daniele Ciulli - CrudIt an opensource framework t...
SFSCON23 - Daniele Fontani Daniele Ciulli - CrudIt  an opensource framework t...SFSCON23 - Daniele Fontani Daniele Ciulli - CrudIt  an opensource framework t...
SFSCON23 - Daniele Fontani Daniele Ciulli - CrudIt an opensource framework t...
 
Domain driven design: a gentle introduction
Domain driven design:  a gentle introductionDomain driven design:  a gentle introduction
Domain driven design: a gentle introduction
 
PralayPatoria
PralayPatoriaPralayPatoria
PralayPatoria
 
SynopsisLowLatencySeminar.PDF
SynopsisLowLatencySeminar.PDFSynopsisLowLatencySeminar.PDF
SynopsisLowLatencySeminar.PDF
 
Overcoming Data Gravity in Multi-Cloud Enterprise Architectures
Overcoming Data Gravity in Multi-Cloud Enterprise ArchitecturesOvercoming Data Gravity in Multi-Cloud Enterprise Architectures
Overcoming Data Gravity in Multi-Cloud Enterprise Architectures
 
Resume
ResumeResume
Resume
 
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
Large drupal site builds   a workshop for sxsw interactive - march 17, 2015Large drupal site builds   a workshop for sxsw interactive - march 17, 2015
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
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
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
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
 
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
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Microservices as an evolutionary architecture: lessons learned

  • 1. Microservices as an Evolutionary Architecture: Lessons learned Claudio Eduardo de Oliveira & Luram Archanjo
  • 2. Who am I? ● Software Engineer @Sensedia ● MBA in Java projects ● Java and Microservice enthusiast
  • 3. Who am I? ● Lead Solutions Architect @Sensedia ● Book Author ● Spring, Java and Cloud Native enthusiast
  • 4. Agenda ● Use Case & As Is ● Microservices ● Evolutionary Architecture ● Domain Driven Design ● Communication Patterns & Reactive Programming ● Observability & Database Migration ● Questions
  • 6. Use case Token Service Provider Tokenization reduces the value of stored payment credentials by removing consumers’ primary account numbers (PANs) from the transaction process. It does this by replacing them with a unique identifier called a payment token. This reduces the appeal of stealing the credentials as they would be largely useless to hackers. Source: https://www.rambus.com/blogs/what-is-a-token-service-provider/
  • 8.
  • 9.
  • 11. As is ● Single communication pattern ● 50-60% of our commits during the sprint were in the same repository ● Service with different workload requirements (Crypto and Business) ● Traffic east-west in the API Gateway ● Java & Spring everywhere ● Synchronous process everywhere
  • 12. We were in the wrong way to adopt microservices architecture!
  • 13. Let's recap what is the microservices architecture!
  • 14. Moving to Microservices Feature A Feature B Feature C Monolith Microservice Microservice Microservices Microservice
  • 17. Evolutionary Architecture An evolutionary architecture supports guided, incremental change as a first principle across multiple dimensions. Source: https://www.thoughtworks.com/books/building-evolutionary-architectures
  • 18. Response time Microservices as an Evolutionary Architecture: Lessons learned Throughput
  • 19. Before make a architectural decision, we need to be confident! How?
  • 21. Regression Tests REGRESSION TEST SUITE REGRESSION SCRIPTS AUTOMATED REGRESSION TESTING NEW FEATURES SCRIPT UPDATES
  • 22. We have tests coverage and now?
  • 24. Domain Driven Design(DDD) Domain-driven design (DDD) is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts. ● Place the project’s primary focus on the core domain and domain logic ● Base complex designs on a model ● Initiate a creative collaboration between technical and domain experts to iteratively cut ever closer to the conceptual heart of the problem. Source: https://dddcommunity.org/learning-ddd/what_is_ddd/
  • 25. We are trying to figure out the technique to divide services, what part of DDD can help us?
  • 26. Domain Driven Design - Bounded Context Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. Source: https://martinfowler.com/bliki/BoundedContext.html
  • 27. We separated the responsibilities and now?
  • 29. REST API REST API, EVERYWHERE
  • 31. Advanced Message Queuing Protocol (AMQP) ● Introducing Message-Driven Programming with Low Level Events ● Fire & Forget principle ● Durable Messages (avoid Circuit Breakers & Retries) ● Better Scale strategies & Application Decoupling ● Fits well for 3rd partners integrations
  • 32. Advanced Message Queuing Protocol (AMQP) - Thoughts ● Keep track of events otherwise you will have problems ● We used retries to put message in the queue ● Take care of the data into the message (security concerns)
  • 34. HTTP / gRPC ● HTTP Connections are stateful (avoid open & close) ● Static Typed & Well Defined Contracts ● Reduce serialization complexity & improve efficiency ● Easy Peasy to integrate (there is code generation based in .proto) ● Traffic is binary reduce bandwidth usage
  • 35. HTTP / gRPC - Thoughts ● Load Balancing and Client Load Balancing ● We used in the high throughput solution ● By definition in general we use for internal communication (a.k.a East-West) ● Not for humans, designed by machine communications
  • 37. HTTP / REST ● Well documented Style ● “De-Facto” Pattern for Microservices Architecture ● “Toolability” ● Security
  • 38. HTTP / REST - Thoughts ● Well documented Style ● For Humans, fits very well for External APIs ( API Strategy ) ● API Management provided by Sensedia offers interesting features to troubleshoot
  • 39. We have tests, responsibilities and communication! It is possible to improve more?
  • 41. Reactive Programming Reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. ● Easier to read, maintain and evolute ● Low memory footprint ● Scalability Source: https://en.wikipedia.org/wiki/Reactive_programming
  • 44. Language Kotlin is fully compatible with all Java-based frameworks, which lets you stay on your familiar technology stack while reaping the benefits of a more modern language. ● 40% less code = Easier to read, maintain and evolute ● Fail fast principle = Time to Market Source: https://kotlinlang.org/docs/reference/server-overview.html
  • 45. Everything have been possible, because we formed a great Team Mindset
  • 46. Team Mindset In a fixed mindset, people believe their basic qualities, like their intelligence or talent, are simply fixed traits. Contrarily, in a growth mindset, people believe that their most basic abilities can be developed through dedication and hard work. Source: https://mindsetonline.com/whatisit/about/
  • 47. Team Mindset - Thoughts ● Hands-on ● Tech talks ● Lightning talks ● Events ○ The Developer’s Conference (TDC) ○ APIX ○ Meetups
  • 48. We achieved the challenge! And now?
  • 49.
  • 51. Monitoring is the practice of collecting signals, telemetry, traces, etc and aggregating them, and matching them against some pre-defined criteria of system states we should carefully watch. When we find that one of our signals has crossed a threshold and may be heading toward a known bad state, we take action to remedy the system - Christian Posta
  • 52. Monitoring is a subset of Observability
  • 53. Observability on the other hand supposes up front that our systems are highly unpredictable and we cannot know all of the possible failure modes up front
  • 54. We need to collect much more data, even high-cardinality data like userIDs, requestIDs, source IPs, etc where the entire set could be exponentially large
  • 55. With observability, we need fine-grained data
  • 56. A user goes to pay for the items in their cart and experiences a 10s delay choosing a payment option. All of the pre-defined metric thresholds (disk usage, queue depth, machine health, etc) might be at acceptable levels
  • 59. Database Migration SQL databases scale vertically, meaning you’ll need to increase the capacity of a single server (increasing CPU, RAM, or SSD) to scale your database. NoSQL databases scale horizontally, meaning you can add more servers to power your growing database. Source: https://www.thorntech.com/2019/03/sql-vs-nosql/
  • 63. After
  • 64. Summary 2º Place 1º Place 3º Place Last responsible moment ● Decisions ● Experience ● Maturity Team mindset ● Commitment ● Opportunity to grow and learn ● Feedbacks Technologies ● Understand the technologies concepts ● Business value