SlideShare uma empresa Scribd logo
1 de 30
Art Of Refactoring
by El Mahdi Benzekri06/2019
Summary
• Refactoring for code simplicity
• Code smells
• Microservices bad smells
• Example
Refactoring for code
simplicity
Quésaco?
• Process of improving code without
creating new functionality
• Fundamental step of TDD
• Fundamental concept in XP
Refactoring for code simplicity
• Every code is good until we need to change it
• Always write simple code
• Simple code = easy to refactor
Refactoring – Why? When? How?
• Why?
• Technical debt
• Dirty code
• Lot of bugs
• Changes are slow
Refactoring – Why? When? How?
• When?
• Rule of three
• When adding a feature
• When fixing a bug
• During code review
Computer Science is the discipline that believes all problems can be solved with one more layer of indirection.
—Dennis DeBruler
Refactoring – Why? When? How?
• How?
• The code should become cleaner.
• New functionality shouldn’t be
created during refactoring.
• All existing tests must pass after
refactoring.
ZENO’s Paradox
• Databases
• Published interfaces
• Refactor vs rebuild
• Flexibility vs complexity and cost
Refactoring In Sonar
• SonarQube version 5.5 introduces
the concept of Code Smell
Large-Scale Automated Refactoring Using
ClangMR
• https://ai.google/research/pubs/pub41342
• refactor large C++ codebases
• combination of the Clang compiler framework and the MapReduce parallel
processor
Code smells
Code Smells
Psychology:
• a piece of code contains some issues VS a piece of code contains some smells, that it is
"smelly"
Code Smells – The Dispensables
• Comments/duplicate code/dead code
• P: uncessary, less clarity
• S: Rename Method, Extract Method
• Payoff: Simplification + shortness = code
that’s easier to simplify and cheaper to
support.
Code Smells – The Bloaters
• Data Clumps
• P: poor program structure
• S: Introduce Parameter Object, Preserve
Whole Object.
• Payoff: Operations on particular data are
now gathered in a single place, reduced
code size.
Warning: undesirable dependency between the
classes.
Code Smells – Object-Orientation Abusers
• Switch Statements
• P: poor program structure
• S: Polymorphism, Replace Type Code with
State/Strategy, Introduce Null Object.
• Payoff: Improved code organization.
Ignore when: simple actions, factory
method/Abstract factory.
Code Smells – Change Preventers
• Data Clumps
• P: poor program structure
• S: Introduce Parameter Object, Preserve
Whole Object.
• Payoff: Operations on particular data are
now gathered in a single place, reduced
code size.
Warning: undesirable dependency between the
classes.
Code Smells – Couplers
• Feature Envy
• P: A method accesses the data of another
object more than it’s own.
• S: Move Method, Extract Method, Move
Field.
• Payoff: Less code duplication, higher
cohesion.
Warning: intentionnally keeping data away, e.g
: Strategy, Visitor...
Refactoring and Performance
• != school of thought that ignores performance in favor of design purity or in
hopes of faster hardware.
• If you optimize all the code equally, you end up with 90 percent of the
optimizations wasted
• Profiling ensures you focus that time on the right place
Microservices Bad Smells
Microservice Bad Smells - Survey
• Microservice Smells: indicators of situations—such as undesired patterns,
antipatterns, or bad practices—that negatively affect software quality attributes such
as understandability, testability, extensibility, reusability, and maintainability of the
system under development.
• Interviewed 72 experienced developers
• Duration of the survey: two years
• Detected 11 bad smells
Microservice Bad Smells - Survey results
• Very harmful:
• Wrong Cuts, Hard-Coded Endpoints,
and Shared Persistency
• Difficult to remove:
• Wrong Cuts, Microservice Greedy, and
Too Many Standards
Microservice Bad Smells - Why
• lack of experience
• most problems in the early stage (6 months to year)
• Architecture & Design issues, e.g ESB
Wrong Cuts
• Desc: wrong split
• Problem: wrong separation of concerns and increased data-splitting
complexity
• Solution: clear analysis of business, DDD
Hard-Coded Endpoints
• Desc: Hardcoded IP addresses and ports
• Problem: locations need to be changed
• Solution: service discovery
Shared Persistency
• Desc: same relational database or worst same entities
• Problem: reducing team and service independence
• Solution: private database or private schema
Microservice Greedy
• Desc: needless microservices
• Problem: useless huge system that will easily
become unmaintainable
• Solution: clear analysis of the need, DDD
Too Many Standards
• Desc: many development languages,
protocols, frameworks..
• Problem: lot of required skills, developer
turnover..
• Solution: use carefully, don’t follow the latest
hype.
Example
https://github.com/emilybache/GildedRose-Refactoring-Kata
References
• Refactoring: Improving the Design of Existing Code - Book
• Microservices AntiPatterns and Pitfalls - Book
• On the Definition of Microservice Bad Smells – Research
• Refactoring: Improving the Design of Existing Code – Book
• https://refactoring.guru

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systems
 
Git training v10
Git training v10Git training v10
Git training v10
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
 
軟體架構模式
軟體架構模式軟體架構模式
軟體架構模式
 
MuleSoft RPA Automation as APIs.pdf
MuleSoft RPA Automation as APIs.pdfMuleSoft RPA Automation as APIs.pdf
MuleSoft RPA Automation as APIs.pdf
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Design functional solutions in Java, a practical example
Design functional solutions in Java, a practical exampleDesign functional solutions in Java, a practical example
Design functional solutions in Java, a practical example
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | EdurekaDocker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
 

Semelhante a Art of refactoring - Code Smells and Microservices Antipatterns

Semelhante a Art of refactoring - Code Smells and Microservices Antipatterns (20)

Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy Projects
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Client Technical Analysis of Legacy Software and Future Replacement
Client Technical Analysis of Legacy Software and Future ReplacementClient Technical Analysis of Legacy Software and Future Replacement
Client Technical Analysis of Legacy Software and Future Replacement
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
 
Clean Code
Clean CodeClean Code
Clean Code
 
Mixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting exampleMixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting example
 
Refactoring.pdf
Refactoring.pdfRefactoring.pdf
Refactoring.pdf
 
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
 
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
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?
 
Eurosport's Kodakademi #2
Eurosport's Kodakademi #2Eurosport's Kodakademi #2
Eurosport's Kodakademi #2
 
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of SimplicityLarge Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
 
Refactoring, Therapeutic Attitude to Programming.
Refactoring, Therapeutic Attitude to Programming.Refactoring, Therapeutic Attitude to Programming.
Refactoring, Therapeutic Attitude to Programming.
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny day
 
Friday final test
Friday final testFriday final test
Friday final test
 
Webinar: How MongoDB is Used to Manage Reference Data - May 2014
Webinar: How MongoDB is Used to Manage Reference Data - May 2014Webinar: How MongoDB is Used to Manage Reference Data - May 2014
Webinar: How MongoDB is Used to Manage Reference Data - May 2014
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
 

Último

Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 

Último (20)

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

Art of refactoring - Code Smells and Microservices Antipatterns

  • 1. Art Of Refactoring by El Mahdi Benzekri06/2019
  • 2. Summary • Refactoring for code simplicity • Code smells • Microservices bad smells • Example
  • 4. Quésaco? • Process of improving code without creating new functionality • Fundamental step of TDD • Fundamental concept in XP
  • 5. Refactoring for code simplicity • Every code is good until we need to change it • Always write simple code • Simple code = easy to refactor
  • 6. Refactoring – Why? When? How? • Why? • Technical debt • Dirty code • Lot of bugs • Changes are slow
  • 7. Refactoring – Why? When? How? • When? • Rule of three • When adding a feature • When fixing a bug • During code review Computer Science is the discipline that believes all problems can be solved with one more layer of indirection. —Dennis DeBruler
  • 8. Refactoring – Why? When? How? • How? • The code should become cleaner. • New functionality shouldn’t be created during refactoring. • All existing tests must pass after refactoring.
  • 9. ZENO’s Paradox • Databases • Published interfaces • Refactor vs rebuild • Flexibility vs complexity and cost
  • 10. Refactoring In Sonar • SonarQube version 5.5 introduces the concept of Code Smell
  • 11. Large-Scale Automated Refactoring Using ClangMR • https://ai.google/research/pubs/pub41342 • refactor large C++ codebases • combination of the Clang compiler framework and the MapReduce parallel processor
  • 13. Code Smells Psychology: • a piece of code contains some issues VS a piece of code contains some smells, that it is "smelly"
  • 14. Code Smells – The Dispensables • Comments/duplicate code/dead code • P: uncessary, less clarity • S: Rename Method, Extract Method • Payoff: Simplification + shortness = code that’s easier to simplify and cheaper to support.
  • 15. Code Smells – The Bloaters • Data Clumps • P: poor program structure • S: Introduce Parameter Object, Preserve Whole Object. • Payoff: Operations on particular data are now gathered in a single place, reduced code size. Warning: undesirable dependency between the classes.
  • 16. Code Smells – Object-Orientation Abusers • Switch Statements • P: poor program structure • S: Polymorphism, Replace Type Code with State/Strategy, Introduce Null Object. • Payoff: Improved code organization. Ignore when: simple actions, factory method/Abstract factory.
  • 17. Code Smells – Change Preventers • Data Clumps • P: poor program structure • S: Introduce Parameter Object, Preserve Whole Object. • Payoff: Operations on particular data are now gathered in a single place, reduced code size. Warning: undesirable dependency between the classes.
  • 18. Code Smells – Couplers • Feature Envy • P: A method accesses the data of another object more than it’s own. • S: Move Method, Extract Method, Move Field. • Payoff: Less code duplication, higher cohesion. Warning: intentionnally keeping data away, e.g : Strategy, Visitor...
  • 19. Refactoring and Performance • != school of thought that ignores performance in favor of design purity or in hopes of faster hardware. • If you optimize all the code equally, you end up with 90 percent of the optimizations wasted • Profiling ensures you focus that time on the right place
  • 21. Microservice Bad Smells - Survey • Microservice Smells: indicators of situations—such as undesired patterns, antipatterns, or bad practices—that negatively affect software quality attributes such as understandability, testability, extensibility, reusability, and maintainability of the system under development. • Interviewed 72 experienced developers • Duration of the survey: two years • Detected 11 bad smells
  • 22. Microservice Bad Smells - Survey results • Very harmful: • Wrong Cuts, Hard-Coded Endpoints, and Shared Persistency • Difficult to remove: • Wrong Cuts, Microservice Greedy, and Too Many Standards
  • 23. Microservice Bad Smells - Why • lack of experience • most problems in the early stage (6 months to year) • Architecture & Design issues, e.g ESB
  • 24. Wrong Cuts • Desc: wrong split • Problem: wrong separation of concerns and increased data-splitting complexity • Solution: clear analysis of business, DDD
  • 25. Hard-Coded Endpoints • Desc: Hardcoded IP addresses and ports • Problem: locations need to be changed • Solution: service discovery
  • 26. Shared Persistency • Desc: same relational database or worst same entities • Problem: reducing team and service independence • Solution: private database or private schema
  • 27. Microservice Greedy • Desc: needless microservices • Problem: useless huge system that will easily become unmaintainable • Solution: clear analysis of the need, DDD
  • 28. Too Many Standards • Desc: many development languages, protocols, frameworks.. • Problem: lot of required skills, developer turnover.. • Solution: use carefully, don’t follow the latest hype.
  • 30. References • Refactoring: Improving the Design of Existing Code - Book • Microservices AntiPatterns and Pitfalls - Book • On the Definition of Microservice Bad Smells – Research • Refactoring: Improving the Design of Existing Code – Book • https://refactoring.guru