SlideShare a Scribd company logo
1 of 57
Download to read offline
From Monolithic to Microservices to
Serverless
Davide Taibi
CloWEE – Cloud and Web Engineering
http://research.tuni.fi/clowee
13.03.2020
From monolithic to microservices to serverless
From monolithic to microservices to serverless
From monolithic to microservices to serverless
From monolithic to microservices to serverless
Research Interest
• Cloud-Native Migration: Patterns, Motivations, Issues
• Microservice and FaaS Architectural Patterns
• Monolithic Decomposition
• Microservice Measurement
• Service Orchestration
• Anomaly Detection in Cloud-Native Systems
• Cloud Visualization / Reengineering
Software Systems Evolution
10@davidetaibi
Serverless
Computing
Function as a
Service
Software Architecture Evolution
@davidetaibi
2015s
Function as a Service
Highly Decoupled
Microservices Adoption Motivations
Top 3:
• Improve Maintainability
• Scalability
• Reduce architectural complexity
Main Issues Identified
• Decoupling from the monolithic system
• Architectural Patterns and Anti-Patterns are not clears
• Service orchestration complexity
• Higher effort (at least 20% more)
• Dev-Ops infrastructure
• Library conversion
• …
Microservice Migration Process (1/2)
Migration Process (2/2)
D. Taibi, Lenarduzzi, V. , and Pahl, C. , “Processes, Motivations and Issues for
Migrating to Microservices Architectures: An Empirical Investigation”, IEEE Cloud
Computing Journal, vol. 4, no. 5, 2017.
Microservices Architectural Patterns
• Goal
• Classify the architectural Patterns proposed in the Literature
• D. Taibi, Lenarduzzi, V. , and Pahl, C. , “Architectural Patterns for Microservices: A Systematic Mapping Study”, in 8th
International Conference on Cloud Computing and Services Science, CLOSER , 2018.
Pattern Categories
• Orchestration and Coordination
• Deployment strategies
• Data management / Data Storage
Shopping
Cart
Product
Catalog
Recommender
System
API
Gateway
Client-
Specific APIs
Protocol
Translatio
n
API Gateway Pattern
Orchestration and Coordination
Server-Side Discovery Pattern
Orchestration and Coordination
Microservice Antipatterns and Bad Smells
FOCUS: MICROSERVICES
56 IE E E S O F T WA R E | PU BLI S H E D BY T H E I E E E CO M PU T E R S O CI E T Y 074 0 -74 5 9/18 / $ 3 3.0 0 © 2 018 I E E E
On the Definition
of Microservice
Bad Smells
Davide Taibi and Valentina Lenarduzzi, Tampere University of
Technology
// To identify microservice-specific bad
smells, researchers collected evidence of
bad practices by interviewing developers
experienced with microservice-based systems.
They then classified the bad practices into
11 microservice bad smells frequently
considered harmful by practitioners. //
MICROSERVICES ARE CURRENTLY
enjoying increasing popularity and
diffusion in industrial environments,
being adopted by several big players
such as Amazon, LinkedIn, Netflix,
and SoundCloud. Microservices are
relatively small and autonomous ser-
vices that work together, are mod-
eled around a business capability,
and have a single and clearly defined
purpose.1,2 Microservices enable
independent deployment, allowing
small teams to work on separated
and focused services by using the
most suitable technologies for their
job that can be deployed and scaled
independently.1,2 Microservices are
a newly developed architectural
style. Several patterns and platforms
such as nginx (www.nginx.org) and
Kubernetes (kubernetes.io) exist on
the market. During the migration
process, practitioners often face com-
mon problems, which are due mainly
to their lack of knowledge regarding
bad practices and patterns.3,4
In this article, we provide a cata-
log of bad smells that are specific to
systems developed using a micro-
service architectural style, together
with possible solutions to overcome
these smells. To produce this catalog,
we surveyed and interviewed 72 ex-
perienced developers over the course
of two years, focusing on bad prac-
tices they found during the develop-
ment of microservice-based systems
and on how they overcame them. We
identified a catalog of 11 microservice-
specific bad smells by applying an
open and selective coding5 proce-
dure to derive the smell catalog from
the practitioners’ answers.
The goal of this work is to help
practitioners avoid these bad prac-
tices altogether or deal with them
more efficiently when developing or
migrating monoliths to microservice-
based systems.
As with code and architectural
smells, which are patterns com-
monly considered symptoms of bad
design,1,6 we define microservice-
specific bad smells (called “micro-
service smells” hereafter) as
indicators of situations—such as un-
desired patterns, antipatterns, or bad
practices—that negatively affect
software quality attributes such as
understandability, testability, extensi-
bility, reusability, and maintainability
of the system under development.
Background
Several generic architectural-smell
detection tools and practices have
been defined in the past years.7–9
Moreover, several microservice-
specific architectural patterns have
been defined.10 However, to the best
of our knowledge, no peer-reviewed
work and, in particular, no empirical
studies have proposed bad practices,
antipatterns, or smells specifically
concerning microservices.
However, some practitioners have
started to discuss bad practices in
microservices. In his ebook Micro-
services AntiPatterns and Pitfalls,
D. Taibi and Lenarduzzi, V. , “On the
Definition of Microservice Bad
Smells”, IEEE Software , vol. 35, no. 3,
2018.
D. Taibi, V.Lenarduzzi, C.Pahl.
"Microservices Antipatterns: A
Taxonomy" Microservices - Science and
Engineering, Springer, 2019.
Microservices Bad Smells
• Exploratory Survey (72 practitioners) [2]
• 11 Smells identified
• Cyclic Dependencies
• Problem of Microservices Explosion
• More than 50 connected microservices become unmanageable
Microservice bad-smells
• Wrong Cuts
• Hard-Coded Endpoints
• Cyclic Dependency
• Shared Persistency
• API Versioning
• ESB Usage
• Not Having an API Gateway
• Inappropriate Service Intimacy
• Shared Libraries
• Too Many Standards
• Microservice Greedy
Microservice Bad Smells
Microservice Decomposition
• Idea
• Mining log files to identify business processes
• Identify potential MS candidate
• Low coupling
• High Cohesion
D.Taibi, K. Systä. From monolithic systems to
microservices: A decomposition framework based
on process mining. CLOSER 2019
5-steps process
Execution Path
Analysis
(Process
Mining Tools)
Path
Frequency
analysis
Circular
Depend.
Removal
Identification of
Decompos.
Alternatives
Metric-based
ranking
Selection of
Decompos.
Alternatives
Log Files Example
ID Start Timestamp Complete
Timestamp
Activity Class Method
1 02.01.2018
12:00:00:00
02.01.2018
12:00:00:36
Create
Invoice
MainInvoice createInvoice()
2 02.01.2018
12:00:01:00
02.01.2018
12:00:01:39
Validate
Invoice
ValidateInvoice validate()
3 02.01.2018
12:00:01:40
02.01.2018
12:00:01:45
Save Invoice MainInvoice save()
4 02.01.2018
12:00:01:45
02.01.2018
12:00:01:55
Save Invoice DB INVOICE
5 02.01.2018
12:00:01:56
02.01.2018
12:00:02:05
Save Invoice DB ACCOUNTANT
Slicing Example
InvoiceForm.submitButtonClick
MainInvoice.createInvoice() ValidateInvoice.validate()
MainInvoice.save()
MainInvoice.sendToMinistry() SDI Webservice
(Ministry of Finance Information System)
INVOICE
ACCOUNTANT
CUSTOMER
MainInvoice.updateStatus() AmazonGlacier.storePermanently()
DBManager.read()
InvoiceForm.getInvoiceDetails()
MainInvoice.getInvoice()
DBManager.save()
DBManager
WebApp
MainInvoice
Microservice 1
Microservice 2
Open Questions - Microservices
• How to refactor a monolithic system into microservices?
• Which anti-patterns are actually harmful and when?
• How to evaluate coupling and cohesion between Microservices?
• How to efficiently orchestrate a system?
• Is a microservices-based system more understandable, and more maintainable?
• How to measure them?
• Lack of large-scale open source projects
Ongoing Works
- Microservice Call Graph – Reengineering
- Static analysis (MicroDepGraph)
- Dynamic analysis
Ongoing Work
Serverless Computing
Function-as-a-service
O’Reilly SW Architecture Conference 2018
Stop using microservices!
Move to serverless functions as soon as possible!
What is Serverless [3]
a cloud-native platform
for
short-running, stateless computation
and
event-driven applications
which
scales up and down instantly and automatically
and
charges for actual usage at a millisecond granularity
What is Serverless?
[3] Baldini I. et al. (2017) Serverless Computing: Current Trends and Open Problems. In: Chaudhary S., Somani G., Buyya
R. (eds) Research Advances in Cloud Computing. Springer, Singapore
How does it work
Runs code only on-demand on a
per-request basis
Serverless
deployment &
operations model No servers Just code
Server-less means no servers?
Or worry-less about servers?
@davidetaibi
Runscode in response to events
Event-programming
model
What triggers code execution?
Current Platforms for Serverless
Azure Functions
AWS Lambda
Kubernetes
Google Functions
Red-Hat
Why practitioners are moving to
serverless
Migration Motivations
Companies Already moved to Microservices
• OPS Effort for Microservices
• Get rid of Kubernetes
• No OPS
Companies Migrating from Monolithic systems
• New (hype) technology
• Promising technology
• No initial infrastructural costs (pay as you use)
• Automatic scaling
• Lack of skilled OPS personnel
Preliminary Results – Migration Issues
Developers are not used to the event-oriented programming
Very hard to test
Debug almost impossible
Unknown Patterns and antipatterns
Anomalies can generate unexpected costs!
Serverless Anti-Patterns
Preliminary Results presented
@ICSA 2020
Serverless Anti-Patterns Summary
#1 Async Calls
#2 Functions calling other functions
#3 Shared Code
#4 Shared Libraries as Functions
#5 Too many libraries
#6 Too Many technologies
#7 Too many functions
EXTRA: The distributed Monolith
Open Questions - Serverless
• When is better to use serverless and when microservices
• How to architect a system based on serverless functions?
• Or to combine functions to create a microservice?
• Architectural Patterns? Anti-Patterns?
• How to prevent anomalies?
Microservices and FaaS
• Practitioners started migrate to microservices and FaaS
• Mixed Approach (microservices + Functions)
• Open Issues
• When and Why Extract a feature as Function or as Microservice?
• Which pattern should be adopted
New IEEE Special Theme Issue
Micro-Frontends
From Microservices to Micro-Frontends
Micro-Frontends
• Adopted by several large-companies
• SAP, Zalando, Springer, NewRelic, Ikea, Starbucks, Spotify, DAZN, …
• Increase the team velocity
• But… create duplications in common parts
Micro-frontends - Motivations
• Decompose the front-end into individual and semi-independent micro applications.
• In microservice-based systems, the frontend is implemented as a monolithic (or fat)
• Microservice and frontend teams need to synchronize changes
Micro-Frontends – How they are implemented
• One micro-frontend per page
• Each team develop a page completely
• Common parts are duplicated (sidebar, header, footers, …)
• Multiple micro-frontends per page
• Client-side composition
• Edge-side composition
• Server-side composition
Micro-Frontends – How they are implemented
• One micro-frontend per page
• Each team develop a page completely
• Common parts are duplicated (sidebar, header, footers, …)
• Multiple micro-frontends per page
• Client-side orchestration
• Edge-side orchestration
Micro-Frontends – Open Issues
• When and why they should be used?
• Not for every project.
• Are duplications “beneficial”?
• How about coupling between teams
• Increased application complexity due to page composition at run-time.
• Increased observability complexity, due to the increased number of moving parts.
New Trends
• Serverless and micro-frontends adoption is increasing
• Companies are trying to move the computation closer to the data è Edge Computing
• New on-premise solutions for edge computing
• Hybrid cloud/on-premise solutions
Conclusion
• Serverless and Microservices are very powerful and useful technologies
• Still several open questions
• Developers should carefully consider the “old fashioned” software engineering practices
• Properly design a modular system
• Pay attention to coupling and cohesion
• Think about long-term maintenance
• Avoid the distributed monolith
• Some companies are moving back to on-premise, other are considering hybrid approaches
• Edge computing is coming
BACKUP SLIDES
Exception
details
Continuous Exception
Monitoring (server)
Issue Tracker
Codesmells/metricsthatgenerated
theissues
Continuous Inspection
Developer
Prediction
Models (AI)
Continuous
Integration
SCM
Issue details
Commit details
Test execution details
RecommendationsData-
Collection
Platform Researcher
Data-Scientist
The Continuous Monitoring Data-Ops Platform
Project
Data
Chronjob / Listener
Code Quality Issues Code Reviews CI/CD Commit Classif. Other
SonarQube
Kiuwan
Coverity
Jira
GitHub
Gerrit
Jenkins
TravisCI
Swanson
ChangeDistiller
Listener
Listening Topics
Tools
Message Queue (Publish/Subscribe) - RabbitMQ
Listen for new events on DevOps tools
(commits, faults, reviews, …)
One worker per project
Refacgtoring
Miner
PySpark or Flink Reasoner
Listen for new events
Create Topics Classifying new events
Containers:
- Message-subscriber listening for new topics
- Save results into Cassandra translating results into Key Value store
SZZ
Jira
Pronto
Fault
Postgres Data
Storage
Scheduler
Worker
(tool)
Requirements
•Possibility to add projects with metadata
• SCM, issue tracker, code review, …
•Launch all “Dockerized” tools on all the metadata
• Analyze all SCM commits, all issues, …
•Update the analysis whenever new metadata exists
• New commits, new faults, …
Container Example 1
Message-subscriber
Listen for new Topics
Is the topic
interesting to me?
Execute
Sonar-Scanner
Translate SonarQube Data
into Key Value store
Send Message (data)
to Rabbit MQ
Execute SonarQube
export
SonarQube Data
The “Extensible” DataSet
PROJECT
COMMIT
FAULT
[2] SZZ FAULT_INDUCING
COMMIT
[1] COMMIT CHANGES
SONAR ISSUESONAR MEASURE SONAR RULES
SONARQUBE
[1] Andreas Mauczka, Florian Brosch, Christian Schanes, and Thomas Grechenig. 2015. Dataset of developer-labeled commit messages. In Proceedings of the 12th Working Conference on Mining Software Repositories (MSR '15).
[2] . Sliwerski, T. Zimmermann, and A. Zeller ”When Do Changes Induce Fixes”. International Workshop on Mining software repositories (MSR’05). pp. 1-5. 2005
[3] Nikolaos Tsantalis, Matin Mansouri, Laleh Eshkevari, Davood Mazinanian, and Danny Dig, "Accurate and Efficient Refactoring Detection in Commit History," ICSE 2018. https://github.com/tsantalis/RefactoringMiner
[3] REFACTORING MINER
ChangeDistiller
Commit-Analysis Tools
REVIEW [4] GERRIT MINER
Review-Analysis Tools
[4] Git Miner
Tool Implementation
Scheduler
Worker_PRJ1 (eg. Sonar-scanner)
Worker_PRJ2
Worker_PRJn
LISTENER
Job Queue
In some case, we may want to slow
down or pause the workers to avoid
resource issues
(eg. Too many open files)
Listen to the message queue
If there are new “interesting`” event
(eg. If a tool is listening for new
commits of “Java” projects)
- Get Project Metadata
- Send the list of tasks to the scheduler
together with the metadata
(eg, list of commits to be analyzed)
• Execute the tool as is. Eg. Execute Sonar-Scanner
• Send the results to the message queue as “blob” reporting project ID and commit ID (or Fault ID,
or any other information to identify the analysis) Eg:
Project-id: Ambari
Commit-sha=12344
ToolName=PMD
Results = <xml…. >
• Send the “analysis done” messafge to the queue
Project-id:ambari
Commit-sha=12344
ToolName=PMD
Finished = true

More Related Content

What's hot

Challenges in cloud computing to enable future internet of things v0.3
Challenges in cloud computing to enable future internet of things v0.3Challenges in cloud computing to enable future internet of things v0.3
Challenges in cloud computing to enable future internet of things v0.3Ignacio M. Llorente
 
Cloud computing security from single to multi clouds
Cloud computing security from single to multi cloudsCloud computing security from single to multi clouds
Cloud computing security from single to multi cloudsCholavaram Sai
 
18 applied architectures_part_2
18 applied architectures_part_218 applied architectures_part_2
18 applied architectures_part_2Majong DevJfu
 
Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...
Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...
Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...Dion Hinchcliffe
 
Cloud Computing Security
Cloud Computing SecurityCloud Computing Security
Cloud Computing SecurityDhaval Dave
 

What's hot (6)

Challenges in cloud computing to enable future internet of things v0.3
Challenges in cloud computing to enable future internet of things v0.3Challenges in cloud computing to enable future internet of things v0.3
Challenges in cloud computing to enable future internet of things v0.3
 
Cloud computing security from single to multi clouds
Cloud computing security from single to multi cloudsCloud computing security from single to multi clouds
Cloud computing security from single to multi clouds
 
18 applied architectures_part_2
18 applied architectures_part_218 applied architectures_part_2
18 applied architectures_part_2
 
Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...
Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...
Enterprise 2.0 Summit 2012 Closing Keynote - Next-Generation Ecosystems And i...
 
Cloud Computing Security
Cloud Computing SecurityCloud Computing Security
Cloud Computing Security
 
Testing with the Cloud
Testing with the CloudTesting with the Cloud
Testing with the Cloud
 

Similar to From monolithic to microservices to serverless

From Microservices to Serverless. A new hype or a new hope?
From Microservices to Serverless. A new hype or a new hope?From Microservices to Serverless. A new hype or a new hope?
From Microservices to Serverless. A new hype or a new hope?Davide Taibi
 
Microservices Patterns, Issues, Migration Processes
Microservices Patterns, Issues, Migration ProcessesMicroservices Patterns, Issues, Migration Processes
Microservices Patterns, Issues, Migration ProcessesDavide Taibi
 
Containing your microservice sprawl
Containing your microservice sprawlContaining your microservice sprawl
Containing your microservice sprawlLibbySchulze
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineThe Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineDevOps.com
 
CWIN17 Utrecht / cg u services - frank van der wal
CWIN17 Utrecht / cg u services - frank van der walCWIN17 Utrecht / cg u services - frank van der wal
CWIN17 Utrecht / cg u services - frank van der walCapgemini
 
Microservices Interview Questions and Answers | Microservices Architecture Tr...
Microservices Interview Questions and Answers | Microservices Architecture Tr...Microservices Interview Questions and Answers | Microservices Architecture Tr...
Microservices Interview Questions and Answers | Microservices Architecture Tr...Edureka!
 
A Systematic Literature Review On Microservices
A Systematic Literature Review On MicroservicesA Systematic Literature Review On Microservices
A Systematic Literature Review On MicroservicesRichard Hogue
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...3gamma
 
Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfAhmed Misbah
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Jesper Nordström
 
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and MicroservicesAccelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and MicroservicesRick Hightower
 
I Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at AmazonI Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at AmazonApigee | Google Cloud
 
Pitfalls & Challenges Faced During a Microservices Architecture Implementation
Pitfalls & Challenges Faced During a Microservices Architecture ImplementationPitfalls & Challenges Faced During a Microservices Architecture Implementation
Pitfalls & Challenges Faced During a Microservices Architecture ImplementationCognizant
 
Microserces Architecture
Microserces ArchitectureMicroserces Architecture
Microserces ArchitectureHadi Rasouli
 
OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...
OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...
OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...Turja Narayan Chaudhuri
 
NGINX MRA Fabric Model Release and Ask Me Anything Part 4
NGINX MRA Fabric Model Release and Ask Me Anything Part 4NGINX MRA Fabric Model Release and Ask Me Anything Part 4
NGINX MRA Fabric Model Release and Ask Me Anything Part 4NGINX, Inc.
 

Similar to From monolithic to microservices to serverless (20)

From Microservices to Serverless. A new hype or a new hope?
From Microservices to Serverless. A new hype or a new hope?From Microservices to Serverless. A new hype or a new hope?
From Microservices to Serverless. A new hype or a new hope?
 
Microservices Patterns, Issues, Migration Processes
Microservices Patterns, Issues, Migration ProcessesMicroservices Patterns, Issues, Migration Processes
Microservices Patterns, Issues, Migration Processes
 
Containing your microservice sprawl
Containing your microservice sprawlContaining your microservice sprawl
Containing your microservice sprawl
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineThe Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD Pipeline
 
CWIN17 Utrecht / cg u services - frank van der wal
CWIN17 Utrecht / cg u services - frank van der walCWIN17 Utrecht / cg u services - frank van der wal
CWIN17 Utrecht / cg u services - frank van der wal
 
Microservices Interview Questions and Answers | Microservices Architecture Tr...
Microservices Interview Questions and Answers | Microservices Architecture Tr...Microservices Interview Questions and Answers | Microservices Architecture Tr...
Microservices Interview Questions and Answers | Microservices Architecture Tr...
 
Applying Microservices in Webservices, with An Implementation Idea
Applying Microservices in Webservices, with An Implementation IdeaApplying Microservices in Webservices, with An Implementation Idea
Applying Microservices in Webservices, with An Implementation Idea
 
A Systematic Literature Review On Microservices
A Systematic Literature Review On MicroservicesA Systematic Literature Review On Microservices
A Systematic Literature Review On Microservices
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 
Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdf
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and MicroservicesAccelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
 
I Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at AmazonI Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at Amazon
 
Pitfalls & Challenges Faced During a Microservices Architecture Implementation
Pitfalls & Challenges Faced During a Microservices Architecture ImplementationPitfalls & Challenges Faced During a Microservices Architecture Implementation
Pitfalls & Challenges Faced During a Microservices Architecture Implementation
 
Microserces Architecture
Microserces ArchitectureMicroserces Architecture
Microserces Architecture
 
20161220 - microservice
20161220 - microservice20161220 - microservice
20161220 - microservice
 
OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...
OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...
OrteliusMicroserviceVisionaries2022_Why do you need a microservice catalog to...
 
NGINX MRA Fabric Model Release and Ask Me Anything Part 4
NGINX MRA Fabric Model Release and Ask Me Anything Part 4NGINX MRA Fabric Model Release and Ask Me Anything Part 4
NGINX MRA Fabric Model Release and Ask Me Anything Part 4
 
Microservices: Detailed Guide
Microservices: Detailed GuideMicroservices: Detailed Guide
Microservices: Detailed Guide
 
Microservices
MicroservicesMicroservices
Microservices
 

More from Davide Taibi

On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint
On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint
On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint Davide Taibi
 
From monolithic systems to microservices. a decomposition framework based on ...
From monolithic systems to microservices. a decomposition framework based on ...From monolithic systems to microservices. a decomposition framework based on ...
From monolithic systems to microservices. a decomposition framework based on ...Davide Taibi
 
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019 Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019 Davide Taibi
 
Asterism: A Decentralized File Sharing for Mobile Devices
Asterism: A Decentralized File Sharing for Mobile DevicesAsterism: A Decentralized File Sharing for Mobile Devices
Asterism: A Decentralized File Sharing for Mobile DevicesDavide Taibi
 
Prioritizing Corrective Maintenance Activities for Android Applications: An I...
Prioritizing Corrective Maintenance Activities for Android Applications: An I...Prioritizing Corrective Maintenance Activities for Android Applications: An I...
Prioritizing Corrective Maintenance Activities for Android Applications: An I...Davide Taibi
 
Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...
Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...
Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...Davide Taibi
 
EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...
EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...
EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...Davide Taibi
 
Uno studio sulle strategie di marketing e comunicazione per il software libero
Uno studio sulle strategie di marketing e comunicazione per il software liberoUno studio sulle strategie di marketing e comunicazione per il software libero
Uno studio sulle strategie di marketing e comunicazione per il software liberoDavide Taibi
 
Un’esempio concreto di interazione tra pubblica amministrazione e pmi
Un’esempio concreto di interazione tra pubblica amministrazione e pmiUn’esempio concreto di interazione tra pubblica amministrazione e pmi
Un’esempio concreto di interazione tra pubblica amministrazione e pmiDavide Taibi
 
OSS Marketing: How to make your product attractive
OSS Marketing: How to make your product attractiveOSS Marketing: How to make your product attractive
OSS Marketing: How to make your product attractiveDavide Taibi
 
20070619 javaday quali_p_so
20070619 javaday  quali_p_so20070619 javaday  quali_p_so
20070619 javaday quali_p_soDavide Taibi
 
Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model Davide Taibi
 
Open Bqr an Open Framework for the assessment of Open Source Software
Open Bqr an Open Framework for the assessment of Open Source SoftwareOpen Bqr an Open Framework for the assessment of Open Source Software
Open Bqr an Open Framework for the assessment of Open Source SoftwareDavide Taibi
 
A GQM plan for the evaluation of the trustworthiness of open-source software
A GQM plan for the evaluation of the trustworthiness of open-source softwareA GQM plan for the evaluation of the trustworthiness of open-source software
A GQM plan for the evaluation of the trustworthiness of open-source softwareDavide Taibi
 

More from Davide Taibi (18)

On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint
On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint
On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint
 
From monolithic systems to microservices. a decomposition framework based on ...
From monolithic systems to microservices. a decomposition framework based on ...From monolithic systems to microservices. a decomposition framework based on ...
From monolithic systems to microservices. a decomposition framework based on ...
 
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019 Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
 
Asterism: A Decentralized File Sharing for Mobile Devices
Asterism: A Decentralized File Sharing for Mobile DevicesAsterism: A Decentralized File Sharing for Mobile Devices
Asterism: A Decentralized File Sharing for Mobile Devices
 
Prioritizing Corrective Maintenance Activities for Android Applications: An I...
Prioritizing Corrective Maintenance Activities for Android Applications: An I...Prioritizing Corrective Maintenance Activities for Android Applications: An I...
Prioritizing Corrective Maintenance Activities for Android Applications: An I...
 
Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...
Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...
Ease2017 - Operationalizing the Experience Factory for Effort Estimation in A...
 
EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...
EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...
EASE2017 - Comparing Communication Effort within the Scrum, Scrum with Kanban...
 
Uno studio sulle strategie di marketing e comunicazione per il software libero
Uno studio sulle strategie di marketing e comunicazione per il software liberoUno studio sulle strategie di marketing e comunicazione per il software libero
Uno studio sulle strategie di marketing e comunicazione per il software libero
 
Un’esempio concreto di interazione tra pubblica amministrazione e pmi
Un’esempio concreto di interazione tra pubblica amministrazione e pmiUn’esempio concreto di interazione tra pubblica amministrazione e pmi
Un’esempio concreto di interazione tra pubblica amministrazione e pmi
 
OSS Marketing: How to make your product attractive
OSS Marketing: How to make your product attractiveOSS Marketing: How to make your product attractive
OSS Marketing: How to make your product attractive
 
20070619 javaday quali_p_so
20070619 javaday  quali_p_so20070619 javaday  quali_p_so
20070619 javaday quali_p_so
 
Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model
 
Os Mi Devo Fidare
Os   Mi Devo FidareOs   Mi Devo Fidare
Os Mi Devo Fidare
 
Open Bqr an Open Framework for the assessment of Open Source Software
Open Bqr an Open Framework for the assessment of Open Source SoftwareOpen Bqr an Open Framework for the assessment of Open Source Software
Open Bqr an Open Framework for the assessment of Open Source Software
 
A GQM plan for the evaluation of the trustworthiness of open-source software
A GQM plan for the evaluation of the trustworthiness of open-source softwareA GQM plan for the evaluation of the trustworthiness of open-source software
A GQM plan for the evaluation of the trustworthiness of open-source software
 
Blogmeter
BlogmeterBlogmeter
Blogmeter
 
Open Bqr
Open BqrOpen Bqr
Open Bqr
 
Open Bqr
Open BqrOpen Bqr
Open Bqr
 

Recently uploaded

UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 

Recently uploaded (20)

UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 

From monolithic to microservices to serverless

  • 1. From Monolithic to Microservices to Serverless Davide Taibi CloWEE – Cloud and Web Engineering http://research.tuni.fi/clowee 13.03.2020
  • 6. Research Interest • Cloud-Native Migration: Patterns, Motivations, Issues • Microservice and FaaS Architectural Patterns • Monolithic Decomposition • Microservice Measurement • Service Orchestration • Anomaly Detection in Cloud-Native Systems • Cloud Visualization / Reengineering
  • 9. Microservices Adoption Motivations Top 3: • Improve Maintainability • Scalability • Reduce architectural complexity
  • 10. Main Issues Identified • Decoupling from the monolithic system • Architectural Patterns and Anti-Patterns are not clears • Service orchestration complexity • Higher effort (at least 20% more) • Dev-Ops infrastructure • Library conversion • …
  • 12. Migration Process (2/2) D. Taibi, Lenarduzzi, V. , and Pahl, C. , “Processes, Motivations and Issues for Migrating to Microservices Architectures: An Empirical Investigation”, IEEE Cloud Computing Journal, vol. 4, no. 5, 2017.
  • 13. Microservices Architectural Patterns • Goal • Classify the architectural Patterns proposed in the Literature • D. Taibi, Lenarduzzi, V. , and Pahl, C. , “Architectural Patterns for Microservices: A Systematic Mapping Study”, in 8th International Conference on Cloud Computing and Services Science, CLOSER , 2018.
  • 14. Pattern Categories • Orchestration and Coordination • Deployment strategies • Data management / Data Storage
  • 17. Microservice Antipatterns and Bad Smells FOCUS: MICROSERVICES 56 IE E E S O F T WA R E | PU BLI S H E D BY T H E I E E E CO M PU T E R S O CI E T Y 074 0 -74 5 9/18 / $ 3 3.0 0 © 2 018 I E E E On the Definition of Microservice Bad Smells Davide Taibi and Valentina Lenarduzzi, Tampere University of Technology // To identify microservice-specific bad smells, researchers collected evidence of bad practices by interviewing developers experienced with microservice-based systems. They then classified the bad practices into 11 microservice bad smells frequently considered harmful by practitioners. // MICROSERVICES ARE CURRENTLY enjoying increasing popularity and diffusion in industrial environments, being adopted by several big players such as Amazon, LinkedIn, Netflix, and SoundCloud. Microservices are relatively small and autonomous ser- vices that work together, are mod- eled around a business capability, and have a single and clearly defined purpose.1,2 Microservices enable independent deployment, allowing small teams to work on separated and focused services by using the most suitable technologies for their job that can be deployed and scaled independently.1,2 Microservices are a newly developed architectural style. Several patterns and platforms such as nginx (www.nginx.org) and Kubernetes (kubernetes.io) exist on the market. During the migration process, practitioners often face com- mon problems, which are due mainly to their lack of knowledge regarding bad practices and patterns.3,4 In this article, we provide a cata- log of bad smells that are specific to systems developed using a micro- service architectural style, together with possible solutions to overcome these smells. To produce this catalog, we surveyed and interviewed 72 ex- perienced developers over the course of two years, focusing on bad prac- tices they found during the develop- ment of microservice-based systems and on how they overcame them. We identified a catalog of 11 microservice- specific bad smells by applying an open and selective coding5 proce- dure to derive the smell catalog from the practitioners’ answers. The goal of this work is to help practitioners avoid these bad prac- tices altogether or deal with them more efficiently when developing or migrating monoliths to microservice- based systems. As with code and architectural smells, which are patterns com- monly considered symptoms of bad design,1,6 we define microservice- specific bad smells (called “micro- service smells” hereafter) as indicators of situations—such as un- desired patterns, antipatterns, or bad practices—that negatively affect software quality attributes such as understandability, testability, extensi- bility, reusability, and maintainability of the system under development. Background Several generic architectural-smell detection tools and practices have been defined in the past years.7–9 Moreover, several microservice- specific architectural patterns have been defined.10 However, to the best of our knowledge, no peer-reviewed work and, in particular, no empirical studies have proposed bad practices, antipatterns, or smells specifically concerning microservices. However, some practitioners have started to discuss bad practices in microservices. In his ebook Micro- services AntiPatterns and Pitfalls, D. Taibi and Lenarduzzi, V. , “On the Definition of Microservice Bad Smells”, IEEE Software , vol. 35, no. 3, 2018. D. Taibi, V.Lenarduzzi, C.Pahl. "Microservices Antipatterns: A Taxonomy" Microservices - Science and Engineering, Springer, 2019.
  • 18. Microservices Bad Smells • Exploratory Survey (72 practitioners) [2] • 11 Smells identified • Cyclic Dependencies • Problem of Microservices Explosion • More than 50 connected microservices become unmanageable
  • 19. Microservice bad-smells • Wrong Cuts • Hard-Coded Endpoints • Cyclic Dependency • Shared Persistency • API Versioning • ESB Usage • Not Having an API Gateway • Inappropriate Service Intimacy • Shared Libraries • Too Many Standards • Microservice Greedy
  • 21. Microservice Decomposition • Idea • Mining log files to identify business processes • Identify potential MS candidate • Low coupling • High Cohesion D.Taibi, K. Systä. From monolithic systems to microservices: A decomposition framework based on process mining. CLOSER 2019
  • 22. 5-steps process Execution Path Analysis (Process Mining Tools) Path Frequency analysis Circular Depend. Removal Identification of Decompos. Alternatives Metric-based ranking Selection of Decompos. Alternatives
  • 23. Log Files Example ID Start Timestamp Complete Timestamp Activity Class Method 1 02.01.2018 12:00:00:00 02.01.2018 12:00:00:36 Create Invoice MainInvoice createInvoice() 2 02.01.2018 12:00:01:00 02.01.2018 12:00:01:39 Validate Invoice ValidateInvoice validate() 3 02.01.2018 12:00:01:40 02.01.2018 12:00:01:45 Save Invoice MainInvoice save() 4 02.01.2018 12:00:01:45 02.01.2018 12:00:01:55 Save Invoice DB INVOICE 5 02.01.2018 12:00:01:56 02.01.2018 12:00:02:05 Save Invoice DB ACCOUNTANT
  • 24. Slicing Example InvoiceForm.submitButtonClick MainInvoice.createInvoice() ValidateInvoice.validate() MainInvoice.save() MainInvoice.sendToMinistry() SDI Webservice (Ministry of Finance Information System) INVOICE ACCOUNTANT CUSTOMER MainInvoice.updateStatus() AmazonGlacier.storePermanently() DBManager.read() InvoiceForm.getInvoiceDetails() MainInvoice.getInvoice() DBManager.save() DBManager WebApp MainInvoice Microservice 1 Microservice 2
  • 25. Open Questions - Microservices • How to refactor a monolithic system into microservices? • Which anti-patterns are actually harmful and when? • How to evaluate coupling and cohesion between Microservices? • How to efficiently orchestrate a system? • Is a microservices-based system more understandable, and more maintainable? • How to measure them? • Lack of large-scale open source projects
  • 26. Ongoing Works - Microservice Call Graph – Reengineering - Static analysis (MicroDepGraph) - Dynamic analysis
  • 29. O’Reilly SW Architecture Conference 2018 Stop using microservices! Move to serverless functions as soon as possible!
  • 30. What is Serverless [3] a cloud-native platform for short-running, stateless computation and event-driven applications which scales up and down instantly and automatically and charges for actual usage at a millisecond granularity What is Serverless? [3] Baldini I. et al. (2017) Serverless Computing: Current Trends and Open Problems. In: Chaudhary S., Somani G., Buyya R. (eds) Research Advances in Cloud Computing. Springer, Singapore
  • 31. How does it work Runs code only on-demand on a per-request basis Serverless deployment & operations model No servers Just code Server-less means no servers? Or worry-less about servers? @davidetaibi
  • 32. Runscode in response to events Event-programming model What triggers code execution?
  • 33. Current Platforms for Serverless Azure Functions AWS Lambda Kubernetes Google Functions Red-Hat
  • 34. Why practitioners are moving to serverless
  • 35. Migration Motivations Companies Already moved to Microservices • OPS Effort for Microservices • Get rid of Kubernetes • No OPS Companies Migrating from Monolithic systems • New (hype) technology • Promising technology • No initial infrastructural costs (pay as you use) • Automatic scaling • Lack of skilled OPS personnel
  • 36. Preliminary Results – Migration Issues Developers are not used to the event-oriented programming Very hard to test Debug almost impossible Unknown Patterns and antipatterns Anomalies can generate unexpected costs!
  • 38. Serverless Anti-Patterns Summary #1 Async Calls #2 Functions calling other functions #3 Shared Code #4 Shared Libraries as Functions #5 Too many libraries #6 Too Many technologies #7 Too many functions EXTRA: The distributed Monolith
  • 39. Open Questions - Serverless • When is better to use serverless and when microservices • How to architect a system based on serverless functions? • Or to combine functions to create a microservice? • Architectural Patterns? Anti-Patterns? • How to prevent anomalies?
  • 40. Microservices and FaaS • Practitioners started migrate to microservices and FaaS • Mixed Approach (microservices + Functions) • Open Issues • When and Why Extract a feature as Function or as Microservice? • Which pattern should be adopted
  • 41. New IEEE Special Theme Issue
  • 43. From Microservices to Micro-Frontends
  • 44. Micro-Frontends • Adopted by several large-companies • SAP, Zalando, Springer, NewRelic, Ikea, Starbucks, Spotify, DAZN, … • Increase the team velocity • But… create duplications in common parts
  • 45. Micro-frontends - Motivations • Decompose the front-end into individual and semi-independent micro applications. • In microservice-based systems, the frontend is implemented as a monolithic (or fat) • Microservice and frontend teams need to synchronize changes
  • 46. Micro-Frontends – How they are implemented • One micro-frontend per page • Each team develop a page completely • Common parts are duplicated (sidebar, header, footers, …) • Multiple micro-frontends per page • Client-side composition • Edge-side composition • Server-side composition
  • 47. Micro-Frontends – How they are implemented • One micro-frontend per page • Each team develop a page completely • Common parts are duplicated (sidebar, header, footers, …) • Multiple micro-frontends per page • Client-side orchestration • Edge-side orchestration
  • 48. Micro-Frontends – Open Issues • When and why they should be used? • Not for every project. • Are duplications “beneficial”? • How about coupling between teams • Increased application complexity due to page composition at run-time. • Increased observability complexity, due to the increased number of moving parts.
  • 49. New Trends • Serverless and micro-frontends adoption is increasing • Companies are trying to move the computation closer to the data è Edge Computing • New on-premise solutions for edge computing • Hybrid cloud/on-premise solutions
  • 50. Conclusion • Serverless and Microservices are very powerful and useful technologies • Still several open questions • Developers should carefully consider the “old fashioned” software engineering practices • Properly design a modular system • Pay attention to coupling and cohesion • Think about long-term maintenance • Avoid the distributed monolith • Some companies are moving back to on-premise, other are considering hybrid approaches • Edge computing is coming
  • 52. Exception details Continuous Exception Monitoring (server) Issue Tracker Codesmells/metricsthatgenerated theissues Continuous Inspection Developer Prediction Models (AI) Continuous Integration SCM Issue details Commit details Test execution details RecommendationsData- Collection Platform Researcher Data-Scientist
  • 53. The Continuous Monitoring Data-Ops Platform Project Data Chronjob / Listener Code Quality Issues Code Reviews CI/CD Commit Classif. Other SonarQube Kiuwan Coverity Jira GitHub Gerrit Jenkins TravisCI Swanson ChangeDistiller Listener Listening Topics Tools Message Queue (Publish/Subscribe) - RabbitMQ Listen for new events on DevOps tools (commits, faults, reviews, …) One worker per project Refacgtoring Miner PySpark or Flink Reasoner Listen for new events Create Topics Classifying new events Containers: - Message-subscriber listening for new topics - Save results into Cassandra translating results into Key Value store SZZ Jira Pronto Fault Postgres Data Storage Scheduler Worker (tool)
  • 54. Requirements •Possibility to add projects with metadata • SCM, issue tracker, code review, … •Launch all “Dockerized” tools on all the metadata • Analyze all SCM commits, all issues, … •Update the analysis whenever new metadata exists • New commits, new faults, …
  • 55. Container Example 1 Message-subscriber Listen for new Topics Is the topic interesting to me? Execute Sonar-Scanner Translate SonarQube Data into Key Value store Send Message (data) to Rabbit MQ Execute SonarQube export SonarQube Data
  • 56. The “Extensible” DataSet PROJECT COMMIT FAULT [2] SZZ FAULT_INDUCING COMMIT [1] COMMIT CHANGES SONAR ISSUESONAR MEASURE SONAR RULES SONARQUBE [1] Andreas Mauczka, Florian Brosch, Christian Schanes, and Thomas Grechenig. 2015. Dataset of developer-labeled commit messages. In Proceedings of the 12th Working Conference on Mining Software Repositories (MSR '15). [2] . Sliwerski, T. Zimmermann, and A. Zeller ”When Do Changes Induce Fixes”. International Workshop on Mining software repositories (MSR’05). pp. 1-5. 2005 [3] Nikolaos Tsantalis, Matin Mansouri, Laleh Eshkevari, Davood Mazinanian, and Danny Dig, "Accurate and Efficient Refactoring Detection in Commit History," ICSE 2018. https://github.com/tsantalis/RefactoringMiner [3] REFACTORING MINER ChangeDistiller Commit-Analysis Tools REVIEW [4] GERRIT MINER Review-Analysis Tools [4] Git Miner
  • 57. Tool Implementation Scheduler Worker_PRJ1 (eg. Sonar-scanner) Worker_PRJ2 Worker_PRJn LISTENER Job Queue In some case, we may want to slow down or pause the workers to avoid resource issues (eg. Too many open files) Listen to the message queue If there are new “interesting`” event (eg. If a tool is listening for new commits of “Java” projects) - Get Project Metadata - Send the list of tasks to the scheduler together with the metadata (eg, list of commits to be analyzed) • Execute the tool as is. Eg. Execute Sonar-Scanner • Send the results to the message queue as “blob” reporting project ID and commit ID (or Fault ID, or any other information to identify the analysis) Eg: Project-id: Ambari Commit-sha=12344 ToolName=PMD Results = <xml…. > • Send the “analysis done” messafge to the queue Project-id:ambari Commit-sha=12344 ToolName=PMD Finished = true