SlideShare a Scribd company logo
Antifragile
Software Design
Hayim Makabee
http://EffectiveSoftwareDesign.com
About Me:
Education:
Experience:
Current:
Antifragile
 This presentation is inspired on the
book “Antifragile” by Nassim Taleb.
The Triad: Antifragility,
Robustness, and Fragility
 Fragile things are exposed
to volatility, so that volatility
is prejudicial to them.
 Robust things are immune
to volatility, so that volatility
does not affect them.
 Antifragile things enjoy
volatility, so that volatility is
beneficial to them.
The Triad Over Time
 Fragile things: Break, erode or deteriorate.
 Robust things: Stay the same.
 Antifragile things: Evolve, improve, get
better.
Antifragility vs. Resilience
 “Antifragility is beyond resilience or
robustness. The resilient resists
shocks and stays the same; the
antifragile gets better.”
Nonpredictive Decision
Making
“Sensitivity to harm from volatility is
tractable, more so than forecasting the
event that would cause the harm.”
Aligned with Agile principle:
“Responding to change over following a
plan.”
Volatility in Software Design
In the case of software systems,
volatility appears in the form of changes
over time.
Changes are unavoidable, as
expressed in the Lehman laws of
software evolution:
“Continuing Change — A software
system must be continually adapted or
it becomes progressively less
satisfactory.”
Changes in Software Design
 Functional changes:
◦ Required to implement new requirements, or
to implement modifications in the
requirements.
◦ Have an impact on the system’s behavior
and functionality.
 Non-functional changes:
◦ Required to improve the quality of the design.
◦ Are normally the result of Refactoring and
focus on the reduction of Technical Debt.
◦ Should not affect the system’s behavior or
functionality.
Barbell Strategy
“Barbell Strategy: A dual strategy, a
combination of two extremes, one safe
and one speculative, deemed more
robust than a ‘monomodal’ strategy.”
Example of Barbell Strategy
“An investment strategy in which half
the portfolio is made up of long-term
bonds and the other half of very short-
term bonds.”
Barbell Strategy in Software
What is the software equivalent of a
Barbell Strategy?
The answer is: Abstraction. Software
systems should have a structure and
organization based on different levels of
abstraction.
The duality of the Barbell Strategy is
expressed as the separation between
high-level abstract elements and
concrete implementation details.
Abstract and Concrete
Elements
 Abstract elements: Are robust, and
should not be easily affected by
changes.
 Concrete implementation details: Are
fragile, directly affected by changes.
 Software systems should be built in
such a way that the volatility
(changes):
◦ Does not affect its structure and
organization, preserving the main, high-
level abstractions.
◦ Requires modifications only on the low-
Applications of the Barbell
Strategy
 Information Hiding
 Encapsulation
 Open/Closed Principle
 TDD
 Inheritance Hierarchies
 Frameworks
Information Hiding
Information Hiding was defined by
David Parnas as a criterion to
decompose a system into modules:
“Every module … is characterized by its
knowledge of a design decision which it
hides from all others. Its interface or
definition was chosen to reveal as little
as possible about its inner workings.”
Encapsulation
The mechanism of Encapsulation in Object
Oriented Programming (OOP) is a direct
application of Information Hiding.
The interface of a class is separated from
its implementation, and thus the
implementation may be changed without
affecting the clients of the class.
Thanks to encapsulation, the clients of a
class become less fragile to changes in its
implementation details.
Open/Closed Principle
The Open-Closed Principle (OCP) was
defined by Bertrand Meyer as:
“Software entities (classes, modules,
functions, etc.) should be open for
extension, but closed for modification.”
The implementation of the OCP
requires the definition of an abstraction,
so that each possible extension is a
specialization of this abstraction.
Strategy Design Pattern
TDD: Test-Driven
Development
The fundamental idea of TDD is to write the
tests before writing the code.
 TDD focuses on the early separation
between abstractions and concrete
implementation details.
 Requires the definition of abstract interfaces
and behavior for the classes being tested.
 Allows the code to be easily refactored,
because the unit tests would catch any
mistake.
 The unit tests are less fragile to volatility
(changes) because they are based on
abstractions.
Inheritance Hierarchies
In OOP, an inheritance
hierarchy organizes classes according to a
generalization-specialization rationale.
Classes near the root of the hierarchy are
more abstract than the classes on the
leaves of the inheritance tree.
The abstract classes should be less fragile
than the concrete classes, meaning that
they should be less subject to impact
caused by volatility, such as changes in
the requirements or changes in the
implementation details.
Frameworks
Frameworks provide reusable code that is
not application-specific, defining
abstractions and the relationships among
them.
The software developer extends the
framework, deriving concrete subclasses,
and writing the implementation details to
satisfy the requirements of a specific
application.
These implementation details are fragile,
but the framework is not, and may be
reused with no changes on many
Robust vs. Fragile
Robust Fragile
Dependency on interface Dependency on
implementation details
Client of encapsulated
class
Client of class with public
members
Class that may be
extended without
modifications
Class that needs to be
modified to be extended
Unit Tests Implementation of the
classes being tested
Abstract Class Concrete Class
Generic Framework Application-specific
extension of the
Conclusions so far
 Software systems are subject to volatility
in the form of changing requirements.
 Concrete implementation details are
fragile and directly affected by these
changes
 A Barbell Strategy defines concrete
details as the specialization of higher-
level abstractions.
 Proper abstractions should be robust,
surviving the impact of changes.
 Details change over time, but the system
structure and organization may be
preserved because it is based on
abstractions.
Antifragile Whole, Fragile
Parts
“The antifragility of the whole often
depends on the fragility of the parts.”
Componentization
It is common knowledge that systems
should be divided into components.
The reaction to a change in the
environment should only affect a few
components, and not the entire system.
Thus, component-based systems are
more robust than monolithic systems.
Antifragility through
Componentization
To be Antifragile, a system must be able
to benefit from changes in the
environment.
Antifragility may be achieved when
several systems share the same
components.
When a specific component is
improved, all systems using this
component can benefit from this
improvement.
Example: Rechargeable
Batteries
All users of traditional AA batteries can
benefit from improved technology of
rechargeable ones.
Coupling and Cohesion
Principles to guide the decomposition of
large software systems into modules:
 Coupling: The degree of dependency
between two modules. We always
want low coupling.
 Cohesion: The measure of how
strongly-related is the set of functions
performed by a module. We always
want high cohesion.
Applications of
Componentization
 DLLs
 ORBs
 SOA
 Microservices
 Software Product Lines
DLL: Dynamic Link Library
“DLLs provide a mechanism for shared code
and data, allowing a developer of shared
code/data to upgrade functionality without
requiring applications to be re-linked or re-
compiled.”
ORB: Object Request Broker
“An ORB acts as a broker between a client
request for a service from a distributed object
or component and the completion of that
request.”
SOA: Service-Oriented
Architecture
SOA Principles
1. Standardized Service Contracts
2. Service Loose Coupling
3. Service Abstraction
4. Service Reusability
5. Service Autonomy
6. Service Statelessness
7. Service Discoverability
8. Service Composability
9. Service Interoperability
Service Reusability
“Services contain and express agnostic
logic and can be positioned as reusable
enterprise resources.”
“Logic is divided into services with the
intent of maximizing reuse.”
Thus services should not be part of a
single system, they should be reused in
multiple systems.
Microservices
Microservices Practices (I)
1. Separated Build:
◦ Each Microservice is built independently
and has its own version.
2. Independent Deployment:
◦ Each Microservice may be deployed
without affecting the others.
3. Separated Data Stores:
◦ Microservices should not share data stores.
4. Independence of Platform:
◦ Microservices should be deployed in
containers.
Microservices Practices (II)
5. Individual Technology Choice:
◦ Each Microservice may be implemented
using a different technology.
6. Confinement of Failure:
◦ If a failure occurs in a particular
Microservice it should not propagate to
the other ones.
7. Independent Scalability:
◦ It should be possible to scale each
Microservice independently of the others.
Systems, Services and
Antifragility
At any point in time it is possible to deploy
an enhanced version of one of the
services without affecting the other ones.
If there are several systems based on
shared services, each time one of these
services is improved all the systems will be
able to immediately benefit from the
improvement.
While each system is robust, the collection
of systems is Antifragile, because they
benefit from the same changes at no
added cost.
Software Product Lines
In a Software Product Line (SPL), a
series of software products are based
on the same components and differ only
on their configuration.
In the case of SPLs there may be
several coexisting versions for each
component.
Each time a new component version is
created, all the products using previous
versions may benefit through simple
configuration updates.
Antifragile vs. Fragile
Antifragile Fragile
Several programs linking
to the same DLLs
A specific version of a
Dynamic Link Library
Several Client objects
calling the same Servant
object
The implementation
details of a specific
Servant object
Several Systems
accessing the same
Services
The implementation
details of a specific
Service
Several Applications using
shared Microservices
The implementation
details of a specific
Microservice
Several Products based A specific version of a
Conclusions
 A simple strategy for Antifragility is:
Build component-based systems with
shared components.
 When one of the shared components
is improved all the systems will be
able to benefit from this improvement
at no additional cost.
Thanks!
Q&A
http://EffectiveSoftwareDesign.com

More Related Content

What's hot

Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data PlatformsData Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data PlatformsAnant Corporation
 
Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...
Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...
Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...Susanne Kaiser
 
Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...
Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...
Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...Susanne Kaiser
 
Demystifying data engineering
Demystifying data engineeringDemystifying data engineering
Demystifying data engineeringThang Bui (Bob)
 
Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...
Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...
Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...Amazon Web Services
 
Putting the Ops in DataOps: Orchestrate the Flow of Data Across Data Pipelines
Putting the Ops in DataOps: Orchestrate the Flow of Data Across Data PipelinesPutting the Ops in DataOps: Orchestrate the Flow of Data Across Data Pipelines
Putting the Ops in DataOps: Orchestrate the Flow of Data Across Data PipelinesDATAVERSITY
 
Building Modern Data Platform with Microsoft Azure
Building Modern Data Platform with Microsoft AzureBuilding Modern Data Platform with Microsoft Azure
Building Modern Data Platform with Microsoft AzureDmitry Anoshin
 
Modern Data Warehousing with the Microsoft Analytics Platform System
Modern Data Warehousing with the Microsoft Analytics Platform SystemModern Data Warehousing with the Microsoft Analytics Platform System
Modern Data Warehousing with the Microsoft Analytics Platform SystemJames Serra
 
DataOps: Nine steps to transform your data science impact Strata London May 18
DataOps: Nine steps to transform your data science impact  Strata London May 18DataOps: Nine steps to transform your data science impact  Strata London May 18
DataOps: Nine steps to transform your data science impact Strata London May 18Harvinder Atwal
 
Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)Adrien Blind
 
Big Data - Applications and Technologies Overview
Big Data - Applications and Technologies OverviewBig Data - Applications and Technologies Overview
Big Data - Applications and Technologies OverviewSivashankar Ganapathy
 
Feature store: Solving anti-patterns in ML-systems
Feature store: Solving anti-patterns in ML-systemsFeature store: Solving anti-patterns in ML-systems
Feature store: Solving anti-patterns in ML-systemsAndrzej Michałowski
 
Azure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu Ganta
Azure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu GantaAzure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu Ganta
Azure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu GantaDatabricks
 
Cassandra consistency
Cassandra consistencyCassandra consistency
Cassandra consistencyzqhxuyuan
 
Agile transformation best practices
Agile transformation best practicesAgile transformation best practices
Agile transformation best practicesAllyson Chiarini
 
Using Databricks as an Analysis Platform
Using Databricks as an Analysis PlatformUsing Databricks as an Analysis Platform
Using Databricks as an Analysis PlatformDatabricks
 

What's hot (20)

Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data PlatformsData Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
 
Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...
Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...
Architecture for Flow w/ Wardley Mapping, Domain-Driven Design, and Team Topo...
 
Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...
Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...
Building Adaptive Systems with Wardley Mapping, Domain-Driven Design, and Tea...
 
Demystifying data engineering
Demystifying data engineeringDemystifying data engineering
Demystifying data engineering
 
Data ops in practice
Data ops in practiceData ops in practice
Data ops in practice
 
Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...
Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...
Next generation intelligent data lakes, powered by GraphQL & AWS AppSync - MA...
 
Big Data in Azure
Big Data in AzureBig Data in Azure
Big Data in Azure
 
Putting the Ops in DataOps: Orchestrate the Flow of Data Across Data Pipelines
Putting the Ops in DataOps: Orchestrate the Flow of Data Across Data PipelinesPutting the Ops in DataOps: Orchestrate the Flow of Data Across Data Pipelines
Putting the Ops in DataOps: Orchestrate the Flow of Data Across Data Pipelines
 
Agile Mindset Shifting: Agile For All
Agile Mindset Shifting: Agile For AllAgile Mindset Shifting: Agile For All
Agile Mindset Shifting: Agile For All
 
Building Modern Data Platform with Microsoft Azure
Building Modern Data Platform with Microsoft AzureBuilding Modern Data Platform with Microsoft Azure
Building Modern Data Platform with Microsoft Azure
 
Modern Data Warehousing with the Microsoft Analytics Platform System
Modern Data Warehousing with the Microsoft Analytics Platform SystemModern Data Warehousing with the Microsoft Analytics Platform System
Modern Data Warehousing with the Microsoft Analytics Platform System
 
DataOps: Nine steps to transform your data science impact Strata London May 18
DataOps: Nine steps to transform your data science impact  Strata London May 18DataOps: Nine steps to transform your data science impact  Strata London May 18
DataOps: Nine steps to transform your data science impact Strata London May 18
 
Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)
 
Big Data - Applications and Technologies Overview
Big Data - Applications and Technologies OverviewBig Data - Applications and Technologies Overview
Big Data - Applications and Technologies Overview
 
Feature store: Solving anti-patterns in ML-systems
Feature store: Solving anti-patterns in ML-systemsFeature store: Solving anti-patterns in ML-systems
Feature store: Solving anti-patterns in ML-systems
 
Azure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu Ganta
Azure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu GantaAzure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu Ganta
Azure Databricks – Customer Experiences and Lessons Denzil Ribeiro Madhu Ganta
 
Agile Team structure-roles
Agile Team structure-rolesAgile Team structure-roles
Agile Team structure-roles
 
Cassandra consistency
Cassandra consistencyCassandra consistency
Cassandra consistency
 
Agile transformation best practices
Agile transformation best practicesAgile transformation best practices
Agile transformation best practices
 
Using Databricks as an Analysis Platform
Using Databricks as an Analysis PlatformUsing Databricks as an Analysis Platform
Using Databricks as an Analysis Platform
 

Similar to Antifragile Software Design

Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and AnswersBala Ganesh
 
Software design principles - jinal desai
Software design principles - jinal desaiSoftware design principles - jinal desai
Software design principles - jinal desaijinaldesailive
 
effective modular design.pptx
effective modular design.pptxeffective modular design.pptx
effective modular design.pptxDr.Shweta
 
Reactive Architecture
Reactive ArchitectureReactive Architecture
Reactive ArchitectureKnoldus Inc.
 
Reactive - Is it really a Magic Pill?
Reactive - Is it really a Magic Pill?Reactive - Is it really a Magic Pill?
Reactive - Is it really a Magic Pill?Tech Triveni
 
Ports adapters architecture (hexagonal architecture)
Ports adapters architecture (hexagonal architecture)Ports adapters architecture (hexagonal architecture)
Ports adapters architecture (hexagonal architecture)Farhad Taran
 
RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...
RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...
RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...IJNSA Journal
 
System design process.pptx
System design process.pptxSystem design process.pptx
System design process.pptxNajibMuhammad16
 
Clean Code .Net Cheetsheets
Clean Code .Net CheetsheetsClean Code .Net Cheetsheets
Clean Code .Net CheetsheetsNikitaGoncharuk1
 
Software Design abtic.pptx
Software Design abtic.pptxSoftware Design abtic.pptx
Software Design abtic.pptxssuser8c0d24
 
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design PatternsNina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design Patternsiasaglobal
 
Lecture 11
Lecture 11Lecture 11
Lecture 11Rana Ali
 
Requirement Engineering for Dependable Systems
Requirement Engineering for Dependable SystemsRequirement Engineering for Dependable Systems
Requirement Engineering for Dependable SystemsKamalika Guha Roy
 
An ultimate guide to SOLID Principles, developers must know.
An ultimate guide to SOLID Principles, developers must know.An ultimate guide to SOLID Principles, developers must know.
An ultimate guide to SOLID Principles, developers must know.ONE BCG
 
The Clean Architecture
The Clean ArchitectureThe Clean Architecture
The Clean ArchitectureDmytro Turskyi
 
Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Kuwait10
 

Similar to Antifragile Software Design (20)

Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
 
Software design principles - jinal desai
Software design principles - jinal desaiSoftware design principles - jinal desai
Software design principles - jinal desai
 
effective modular design.pptx
effective modular design.pptxeffective modular design.pptx
effective modular design.pptx
 
Reactive Architecture
Reactive ArchitectureReactive Architecture
Reactive Architecture
 
Reactive - Is it really a Magic Pill?
Reactive - Is it really a Magic Pill?Reactive - Is it really a Magic Pill?
Reactive - Is it really a Magic Pill?
 
Ports adapters architecture (hexagonal architecture)
Ports adapters architecture (hexagonal architecture)Ports adapters architecture (hexagonal architecture)
Ports adapters architecture (hexagonal architecture)
 
RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...
RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...
RESILIENT VOTING MECHANISMS FOR MISSION SURVIVABILITY IN CYBERSPACE: COMBININ...
 
114 425-433
114 425-433114 425-433
114 425-433
 
5. oose design new copy
5. oose design new   copy5. oose design new   copy
5. oose design new copy
 
System design process.pptx
System design process.pptxSystem design process.pptx
System design process.pptx
 
Clean Code .Net Cheetsheets
Clean Code .Net CheetsheetsClean Code .Net Cheetsheets
Clean Code .Net Cheetsheets
 
Software Design abtic.pptx
Software Design abtic.pptxSoftware Design abtic.pptx
Software Design abtic.pptx
 
dist_systems.pdf
dist_systems.pdfdist_systems.pdf
dist_systems.pdf
 
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design PatternsNina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
 
Software Engineering CSE/IT.pptx
 Software Engineering CSE/IT.pptx Software Engineering CSE/IT.pptx
Software Engineering CSE/IT.pptx
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
 
Requirement Engineering for Dependable Systems
Requirement Engineering for Dependable SystemsRequirement Engineering for Dependable Systems
Requirement Engineering for Dependable Systems
 
An ultimate guide to SOLID Principles, developers must know.
An ultimate guide to SOLID Principles, developers must know.An ultimate guide to SOLID Principles, developers must know.
An ultimate guide to SOLID Principles, developers must know.
 
The Clean Architecture
The Clean ArchitectureThe Clean Architecture
The Clean Architecture
 
Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10
 

More from Hayim Makabee

Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your ReputationHayim Makabee
 
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarApplications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarHayim Makabee
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine LearningHayim Makabee
 
Blue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseBlue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseHayim Makabee
 
Managing your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarManaging your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarHayim Makabee
 
Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Hayim Makabee
 
Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Hayim Makabee
 
Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your ReputationHayim Makabee
 
The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)Hayim Makabee
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile DevelopmentHayim Makabee
 
Adaptable Designs for Agile Software Development
Adaptable Designs for Agile  Software DevelopmentAdaptable Designs for Agile  Software Development
Adaptable Designs for Agile Software DevelopmentHayim Makabee
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine LearningHayim Makabee
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...Hayim Makabee
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...Hayim Makabee
 
The SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsThe SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsHayim Makabee
 
Aliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelAliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelHayim Makabee
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)Hayim Makabee
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality AttributesHayim Makabee
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software ArchitectHayim Makabee
 
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Hayim Makabee
 

More from Hayim Makabee (20)

Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your Reputation
 
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarApplications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT Webinar
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine Learning
 
Blue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseBlue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use Case
 
Managing your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarManaging your Reputation Gvahim Webinar
Managing your Reputation Gvahim Webinar
 
Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)
 
Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)
 
Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your Reputation
 
The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
 
Adaptable Designs for Agile Software Development
Adaptable Designs for Agile  Software DevelopmentAdaptable Designs for Agile  Software Development
Adaptable Designs for Agile Software Development
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine Learning
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
The SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsThe SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design Patterns
 
Aliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelAliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in Israel
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality Attributes
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
 
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
 

Recently uploaded

AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAlluxio, Inc.
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...rajkumar669520
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfkalichargn70th171
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareinfo611746
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEJelle | Nordend
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandIES VE
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion Clinic
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAlluxio, Inc.
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAlluxio, Inc.
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownloadvrstrong314
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?XfilesPro
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationWave PLM
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
 

Recently uploaded (20)

AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 

Antifragile Software Design

  • 3. Antifragile  This presentation is inspired on the book “Antifragile” by Nassim Taleb.
  • 4. The Triad: Antifragility, Robustness, and Fragility  Fragile things are exposed to volatility, so that volatility is prejudicial to them.  Robust things are immune to volatility, so that volatility does not affect them.  Antifragile things enjoy volatility, so that volatility is beneficial to them.
  • 5. The Triad Over Time  Fragile things: Break, erode or deteriorate.  Robust things: Stay the same.  Antifragile things: Evolve, improve, get better.
  • 6. Antifragility vs. Resilience  “Antifragility is beyond resilience or robustness. The resilient resists shocks and stays the same; the antifragile gets better.”
  • 7. Nonpredictive Decision Making “Sensitivity to harm from volatility is tractable, more so than forecasting the event that would cause the harm.” Aligned with Agile principle: “Responding to change over following a plan.”
  • 8. Volatility in Software Design In the case of software systems, volatility appears in the form of changes over time. Changes are unavoidable, as expressed in the Lehman laws of software evolution: “Continuing Change — A software system must be continually adapted or it becomes progressively less satisfactory.”
  • 9. Changes in Software Design  Functional changes: ◦ Required to implement new requirements, or to implement modifications in the requirements. ◦ Have an impact on the system’s behavior and functionality.  Non-functional changes: ◦ Required to improve the quality of the design. ◦ Are normally the result of Refactoring and focus on the reduction of Technical Debt. ◦ Should not affect the system’s behavior or functionality.
  • 10. Barbell Strategy “Barbell Strategy: A dual strategy, a combination of two extremes, one safe and one speculative, deemed more robust than a ‘monomodal’ strategy.”
  • 11. Example of Barbell Strategy “An investment strategy in which half the portfolio is made up of long-term bonds and the other half of very short- term bonds.”
  • 12. Barbell Strategy in Software What is the software equivalent of a Barbell Strategy? The answer is: Abstraction. Software systems should have a structure and organization based on different levels of abstraction. The duality of the Barbell Strategy is expressed as the separation between high-level abstract elements and concrete implementation details.
  • 13. Abstract and Concrete Elements  Abstract elements: Are robust, and should not be easily affected by changes.  Concrete implementation details: Are fragile, directly affected by changes.  Software systems should be built in such a way that the volatility (changes): ◦ Does not affect its structure and organization, preserving the main, high- level abstractions. ◦ Requires modifications only on the low-
  • 14. Applications of the Barbell Strategy  Information Hiding  Encapsulation  Open/Closed Principle  TDD  Inheritance Hierarchies  Frameworks
  • 15. Information Hiding Information Hiding was defined by David Parnas as a criterion to decompose a system into modules: “Every module … is characterized by its knowledge of a design decision which it hides from all others. Its interface or definition was chosen to reveal as little as possible about its inner workings.”
  • 16. Encapsulation The mechanism of Encapsulation in Object Oriented Programming (OOP) is a direct application of Information Hiding. The interface of a class is separated from its implementation, and thus the implementation may be changed without affecting the clients of the class. Thanks to encapsulation, the clients of a class become less fragile to changes in its implementation details.
  • 17. Open/Closed Principle The Open-Closed Principle (OCP) was defined by Bertrand Meyer as: “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.” The implementation of the OCP requires the definition of an abstraction, so that each possible extension is a specialization of this abstraction.
  • 19. TDD: Test-Driven Development The fundamental idea of TDD is to write the tests before writing the code.  TDD focuses on the early separation between abstractions and concrete implementation details.  Requires the definition of abstract interfaces and behavior for the classes being tested.  Allows the code to be easily refactored, because the unit tests would catch any mistake.  The unit tests are less fragile to volatility (changes) because they are based on abstractions.
  • 20. Inheritance Hierarchies In OOP, an inheritance hierarchy organizes classes according to a generalization-specialization rationale. Classes near the root of the hierarchy are more abstract than the classes on the leaves of the inheritance tree. The abstract classes should be less fragile than the concrete classes, meaning that they should be less subject to impact caused by volatility, such as changes in the requirements or changes in the implementation details.
  • 21. Frameworks Frameworks provide reusable code that is not application-specific, defining abstractions and the relationships among them. The software developer extends the framework, deriving concrete subclasses, and writing the implementation details to satisfy the requirements of a specific application. These implementation details are fragile, but the framework is not, and may be reused with no changes on many
  • 22. Robust vs. Fragile Robust Fragile Dependency on interface Dependency on implementation details Client of encapsulated class Client of class with public members Class that may be extended without modifications Class that needs to be modified to be extended Unit Tests Implementation of the classes being tested Abstract Class Concrete Class Generic Framework Application-specific extension of the
  • 23. Conclusions so far  Software systems are subject to volatility in the form of changing requirements.  Concrete implementation details are fragile and directly affected by these changes  A Barbell Strategy defines concrete details as the specialization of higher- level abstractions.  Proper abstractions should be robust, surviving the impact of changes.  Details change over time, but the system structure and organization may be preserved because it is based on abstractions.
  • 24. Antifragile Whole, Fragile Parts “The antifragility of the whole often depends on the fragility of the parts.”
  • 25. Componentization It is common knowledge that systems should be divided into components. The reaction to a change in the environment should only affect a few components, and not the entire system. Thus, component-based systems are more robust than monolithic systems.
  • 26. Antifragility through Componentization To be Antifragile, a system must be able to benefit from changes in the environment. Antifragility may be achieved when several systems share the same components. When a specific component is improved, all systems using this component can benefit from this improvement.
  • 27. Example: Rechargeable Batteries All users of traditional AA batteries can benefit from improved technology of rechargeable ones.
  • 28. Coupling and Cohesion Principles to guide the decomposition of large software systems into modules:  Coupling: The degree of dependency between two modules. We always want low coupling.  Cohesion: The measure of how strongly-related is the set of functions performed by a module. We always want high cohesion.
  • 29. Applications of Componentization  DLLs  ORBs  SOA  Microservices  Software Product Lines
  • 30. DLL: Dynamic Link Library “DLLs provide a mechanism for shared code and data, allowing a developer of shared code/data to upgrade functionality without requiring applications to be re-linked or re- compiled.”
  • 31. ORB: Object Request Broker “An ORB acts as a broker between a client request for a service from a distributed object or component and the completion of that request.”
  • 33. SOA Principles 1. Standardized Service Contracts 2. Service Loose Coupling 3. Service Abstraction 4. Service Reusability 5. Service Autonomy 6. Service Statelessness 7. Service Discoverability 8. Service Composability 9. Service Interoperability
  • 34. Service Reusability “Services contain and express agnostic logic and can be positioned as reusable enterprise resources.” “Logic is divided into services with the intent of maximizing reuse.” Thus services should not be part of a single system, they should be reused in multiple systems.
  • 36. Microservices Practices (I) 1. Separated Build: ◦ Each Microservice is built independently and has its own version. 2. Independent Deployment: ◦ Each Microservice may be deployed without affecting the others. 3. Separated Data Stores: ◦ Microservices should not share data stores. 4. Independence of Platform: ◦ Microservices should be deployed in containers.
  • 37. Microservices Practices (II) 5. Individual Technology Choice: ◦ Each Microservice may be implemented using a different technology. 6. Confinement of Failure: ◦ If a failure occurs in a particular Microservice it should not propagate to the other ones. 7. Independent Scalability: ◦ It should be possible to scale each Microservice independently of the others.
  • 38. Systems, Services and Antifragility At any point in time it is possible to deploy an enhanced version of one of the services without affecting the other ones. If there are several systems based on shared services, each time one of these services is improved all the systems will be able to immediately benefit from the improvement. While each system is robust, the collection of systems is Antifragile, because they benefit from the same changes at no added cost.
  • 39. Software Product Lines In a Software Product Line (SPL), a series of software products are based on the same components and differ only on their configuration. In the case of SPLs there may be several coexisting versions for each component. Each time a new component version is created, all the products using previous versions may benefit through simple configuration updates.
  • 40. Antifragile vs. Fragile Antifragile Fragile Several programs linking to the same DLLs A specific version of a Dynamic Link Library Several Client objects calling the same Servant object The implementation details of a specific Servant object Several Systems accessing the same Services The implementation details of a specific Service Several Applications using shared Microservices The implementation details of a specific Microservice Several Products based A specific version of a
  • 41. Conclusions  A simple strategy for Antifragility is: Build component-based systems with shared components.  When one of the shared components is improved all the systems will be able to benefit from this improvement at no additional cost.