SlideShare a Scribd company logo
From Monoliths to Services
Gradually paying your Technical Debt
BY DAVID LITVAK (@dlitvakb)
2
TECHNICAL DEBT
“You want to make a “quick change” to
your software […], and it isn’t quick.
Whatever made that happen, that’s tech
debt.”
Dave Diehl
http://jimplush.com/talk/2015/02/
Senior Developer at Fusion Alliance
From Monoliths to Services: Grafually paying your Technical Debt
Metaphor explaining difficulties of shipping software
Like financial debt, technical debt comes with interests.
Failing to pay your debt, interests will come back at you.
Why is it called Debt?
From Monoliths to Services: Grafually paying your Technical Debt
THE SOFTWARE COST TRIAD
Move one corner and the others
will adjust accordingly
If you want to increase Quality, you
will have to spend more Money
and Time
Money Time
Quality
SOFTWARE
COST
Technical Debt comes when
Quality is not taken into account,
prioritising spending less or
working faster
Debt itself is not a bad thing!
Invest and pay back early!
Don’t leave debt hanging!
But Hey! It’s not always bad!
From Monoliths to Services: Grafually paying your Technical Debt
What are the causes?
• Cutting Corners
“I know it looks complicated, but I don’t have time to refactor it.”
https://www.codementor.io/ruby-on-rails/tutorial/staying-on-top-of-your-technical-debt
From Monoliths to Services: Grafually paying your Technical Debt
What are the causes?
• Lack of Testing
“We can write tests for it later.”
https://www.codementor.io/ruby-on-rails/tutorial/staying-on-top-of-your-technical-debt
From Monoliths to Services: Grafually paying your Technical Debt
What are the causes?
• Assuming “False Positives” are Positives
“The build fails sometimes, but it passes most of the time. Let’s just move on.”
https://www.codementor.io/ruby-on-rails/tutorial/staying-on-top-of-your-technical-debt
From Monoliths to Services: Grafually paying your Technical Debt
How to avoid?
• Work Small
Make incremental progress
From Monoliths to Services: Grafually paying your Technical Debt
How to avoid?
• Work Clean
Seek for refactoring opportunities
From Monoliths to Services: Grafually paying your Technical Debt
How to avoid?
• Work Green
Have a Test Suite - Use Continuous Integration Tools
From Monoliths to Services: Grafually paying your Technical Debt
Grades of Debt - James Higgs
• Grade One: Accumulation due to extrinsic changes
Keep up to date with your dependencies and technologies
https://madebymany.com/blog/the-four-grades-of-technical-debt
From Monoliths to Services: Grafually paying your Technical Debt
Grades of Debt - James Higgs
• Grade Two: Developer Comfort
Code for readability - your future self and co-workers will much appreciate it
https://madebymany.com/blog/the-four-grades-of-technical-debt
From Monoliths to Services: Grafually paying your Technical Debt
Grades of Debt - James Higgs
• Grade Three: Cost of Pragmatism
Use debt wisely and prototype - throw away if not successful
https://madebymany.com/blog/the-four-grades-of-technical-debt
From Monoliths to Services: Grafually paying your Technical Debt
Grades of Debt - James Higgs
• Grade Four: The One with the Bite - Impossibility to Move Forward
Point of no return! If you’re here, it may be wise to think about restarting!
https://madebymany.com/blog/the-four-grades-of-technical-debt
From Monoliths to Services: Grafually paying your Technical Debt
31
MICROSERVICES
Architectural Styles
• Monoliths
Single Application - Multiple Responsibilities
• Microservices
Multiple Applications - Single Responsibilities
“The microservice architectural style is an approach
to developing a single application as a suite of
small services, each running in its own process and
communicating with lightweight mechanisms, often
an HTTP resource API.”
Martin Fowler
Chief Scientist at ThoughtWorks
http://martinfowler.com/articles/microservices.html
It's an architectural style that enables us to separate each of our product’s
responsibilities into very small and separate applications
This gives us flexibility
KISS / UNIX
Modern development adopted a similar style
Where does it come from?
https://en.wikipedia.org/wiki/KISS_principle
From Monoliths to Services: Grafually paying your Technical Debt
Why is it useful?
• Service Independence
Independent from one another - they have “contracts”
Why is it useful?
• Deployability
Have a bug in a component - fix and deploy
Why is it useful?
• Team Independence
Each can be owned by a different team
What are the downsides?
• Piping
You have to take into account the inter-connections
• Deployability
Orchestration and Versioning
• Infrastructure
Much more complex setup
41
STATE OF THE CLOUD
“If someone asks me what cloud computing is, I try
not to get bogged down with definitions. I tell them
that, simply put, cloud computing is a better way to
run your business.”
Marc Benioff
CEO of salesforce.com
http://www.mercurynews.com/2009/10/23/2009-qa-marc-benioff-ceo-of-salesforce-com/
2016
From Monoliths to Services: Grafually paying your Technical Debt
“Cloud computing is really a no-brainer for any start-up
because it allows you to test your business plan very
quickly for little money. Every start-up, or even a division
within a company that has an idea for something new,
should be figuring out how to use cloud computing in its
plan.”
Brad Jefferson
CEO & Co-Founder of Animoto
http://www.cio.com/article/2428093/infrastructure/cloud-computing--pros-and-cons.html
What does it provide us? - Infrastructure
• Cheap
Even with pay-on-demand pricing models
What does it provide us? - Infrastructure
• Replaceable
Changed the service? Drop the server and create a new one
What does it provide us? - Infrastructure
• Scalable
When demand raises, automatically spin up new copies to cope with demand
What does it provide us? - Software
• CDNs
Global content caching - Blazing fast websites
From Monoliths to Services: Grafually paying your Technical Debt
What does it provide us? - Software
• Content and Databases
Storage servers with multiple architectures
From Monoliths to Services: Grafually paying your Technical Debt
What does it provide us? - Software
• And EVERYTHING Else
Even sending “Thank You” notes as a Service
From Monoliths to Services: Grafually paying your Technical Debt
Current Options - Infrastructure
• Amazon Web Services
• Microsoft Azure
• Rackspace
• Google Cloud Engine
Current Options - CDNs
• CloudFront
• Akamai
• MaxCDN
• Fastly
Current Options - Services
• Contentful
Content Management as a Service
From Monoliths to Services: Grafually paying your Technical Debt
Current Options - Services
• Snipcart
Shopping Cart as a Service
From Monoliths to Services: Grafually paying your Technical Debt
Current Options - Services
• Auth0
Authentication as a Service
From Monoliths to Services: Grafually paying your Technical Debt
63
GOING SERVERLESS
“Serverless architectures refer to applications that
significantly depend on third-party services (knows as
Backend as a Service or "BaaS") or on custom code that's
run in ephemeral containers (Function as a Service or
“FaaS”). […] By using these ideas, and by moving much
behaviour to the front end, such architectures remove the
need for the traditional 'always on' server system sitting
behind an application”
Mike Roberts
CEO & Co-Founder of Fried Gold Software
http://www.martinfowler.com/articles/serverless.html
TRADITIONAL APPLICATION
Unintelligent Client
Server does most of the
hard work
Source: https://www.martinfowler.com
SERVERLESS APPLICATION
Rich client - Many Frontends
Independent services and
infrastructure
Source: https://www.martinfowler.com
“If your PaaS can efficiently start instances in 20ms
that run for half a second, then call it serverless.”
Adrian Cockcroft
Technology Fellow at Battery Ventures
https://twitter.com/adrianco/status/736553530689998848
68
GOODBYE MONOLITH
“Microservices architecture potentially offers an
easier way to pay down technical debt. Refactoring
a big monolithic application can be the equivalent
of a balloon payment. […] you can pay your
technical debt incrementally by refactoring services
one by one.”
Eric Knorr
Editor in Chief at CNET
http://www.infoworld.com/article/2878659/application-development/reducing-technical-debt-with-microservices.html
Now that we’ve introduced the concepts
Let’s dive into how to apply them in practice
Starting from your Rails App
• Identify
Models usually travel in families - identify these families
From Monoliths to Services: Grafually paying your Technical Debt
Starting from your Rails App
• Categorize
Understand the functionality and responsibility of each component family
From Monoliths to Services: Grafually paying your Technical Debt
Starting from your Rails App
• Split
Create separate API apps exposing them
From Monoliths to Services: Grafually paying your Technical Debt
Starting from your Rails App
• Communicate
Integrate different parts of the application through it’s HTTP Interfaces
From Monoliths to Services: Grafually paying your Technical Debt
Moving away from Rails
• Move Static and Read-first content to a CMS
Marketing, Blogs, Product and non-user generated content moved
From Monoliths to Services: Grafually paying your Technical Debt
Moving away from Rails
• Decouple your Front-End from your business logic
Your HTML or Native app shouldn’t be tied to your server code
From Monoliths to Services: Grafually paying your Technical Debt
Moving away from Rails
• Profit from 3rd party Services
Use cloud based authentication, messaging, mailing, payments to remove burden
from your code
From Monoliths to Services: Grafually paying your Technical Debt
Moving away from Rails
• Leverage Static Sites and Static Assets
Using Static Site Generated websites + CDNs to deliver fast and increase conversion
“It’s much easier mentally to tackle $10,000 of debt
across 4 credit cards at $2500 each than 1 card at
the full $10,000.”
Jim Plush
Sr Director of Engineering at CrowdStrike
http://jimplush.com/talk/2015/02/28/microservices-allow-for-localized-tech-debt/
Keep Security in Check
• Validate
Validate on your Client side code - specially on payment transactions
From Monoliths to Services: Grafually paying your Technical Debt
Keep Security in Check
• Validate
Validate on your Middleware - specially on payment transactions
From Monoliths to Services: Grafually paying your Technical Debt
Keep Security in Check
• Validate
Make sure not to expose your internals
From Monoliths to Services: Grafually paying your Technical Debt
Keep Security in Check
• Validate
Make sure you have retry and fallback mechanisms
From Monoliths to Services: Grafually paying your Technical Debt
Rounding up
• Prototype and test ideas
• Create single responsibility applications
• Test your code
• Keep it safe
Demo Time
From Monoliths to Services: Grafually paying your Technical Debt
We’re Hiring!
Twitter: @dlitvakb
Email: david.litvak@contentful.com
Thanks!

More Related Content

What's hot

Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
Karthik Gaekwad
 
From SOA to MSA
From SOA to MSAFrom SOA to MSA
From SOA to MSA
William Yang
 
Knockout js
Knockout jsKnockout js
Knockout js
Andrey Kolodnitsky
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practice
aegloff
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices
M A Hossain Tonu
 
Creating Effective Mobile Applications with IBM Bluemix
Creating Effective Mobile Applications with IBM BluemixCreating Effective Mobile Applications with IBM Bluemix
Creating Effective Mobile Applications with IBM Bluemix
Andrew Ferrier
 
How We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADFHow We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADF
SeanGraham5
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
Ashwini Kuntamukkala
 
Bluemix and DevOps workshop lab
Bluemix and DevOps workshop labBluemix and DevOps workshop lab
Bluemix and DevOps workshop lab
benm4nn
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
MahmoudZidan41
 
Microservices Architecture (MSA) - Presentation made at The Open Group confer...
Microservices Architecture (MSA) - Presentation made at The Open Group confer...Microservices Architecture (MSA) - Presentation made at The Open Group confer...
Microservices Architecture (MSA) - Presentation made at The Open Group confer...
Somasundram Balakrushnan
 
Voxxed Athens 2018 - Eventing, Serverless, and the Extensible Enterprise
Voxxed Athens 2018 - Eventing, Serverless, and the Extensible EnterpriseVoxxed Athens 2018 - Eventing, Serverless, and the Extensible Enterprise
Voxxed Athens 2018 - Eventing, Serverless, and the Extensible Enterprise
Voxxed Athens
 
App Development Evolution: What has changed?
App Development Evolution: What has changed? App Development Evolution: What has changed?
App Development Evolution: What has changed?
Paula Peña (She, Her, Hers)
 
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other PlatformsAlfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
davidocmillergmailcom
 
Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSS
Daniel Woods
 
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
solidkim
 
The App Evolution
The App EvolutionThe App Evolution
The App Evolution
Dev_Events
 
MS Insights Brazil 2015 containers and devops
MS Insights Brazil 2015   containers and devopsMS Insights Brazil 2015   containers and devops
MS Insights Brazil 2015 containers and devops
Damien Caro
 
What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklug
dominion
 
CloudComputing
CloudComputingCloudComputing
CloudComputing
Adi Challa
 

What's hot (20)

Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
 
From SOA to MSA
From SOA to MSAFrom SOA to MSA
From SOA to MSA
 
Knockout js
Knockout jsKnockout js
Knockout js
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practice
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices
 
Creating Effective Mobile Applications with IBM Bluemix
Creating Effective Mobile Applications with IBM BluemixCreating Effective Mobile Applications with IBM Bluemix
Creating Effective Mobile Applications with IBM Bluemix
 
How We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADFHow We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADF
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
 
Bluemix and DevOps workshop lab
Bluemix and DevOps workshop labBluemix and DevOps workshop lab
Bluemix and DevOps workshop lab
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Microservices Architecture (MSA) - Presentation made at The Open Group confer...
Microservices Architecture (MSA) - Presentation made at The Open Group confer...Microservices Architecture (MSA) - Presentation made at The Open Group confer...
Microservices Architecture (MSA) - Presentation made at The Open Group confer...
 
Voxxed Athens 2018 - Eventing, Serverless, and the Extensible Enterprise
Voxxed Athens 2018 - Eventing, Serverless, and the Extensible EnterpriseVoxxed Athens 2018 - Eventing, Serverless, and the Extensible Enterprise
Voxxed Athens 2018 - Eventing, Serverless, and the Extensible Enterprise
 
App Development Evolution: What has changed?
App Development Evolution: What has changed? App Development Evolution: What has changed?
App Development Evolution: What has changed?
 
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other PlatformsAlfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
 
Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSS
 
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
 
The App Evolution
The App EvolutionThe App Evolution
The App Evolution
 
MS Insights Brazil 2015 containers and devops
MS Insights Brazil 2015   containers and devopsMS Insights Brazil 2015   containers and devops
MS Insights Brazil 2015 containers and devops
 
What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklug
 
CloudComputing
CloudComputingCloudComputing
CloudComputing
 

Similar to From Monoliths to Services: Grafually paying your Technical Debt

Evolving your Architecture to MicroServices
Evolving your Architecture to MicroServicesEvolving your Architecture to MicroServices
Evolving your Architecture to MicroServices
Hector Tapia
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native Meetup
Matt Ray
 
What serverless means for enterprise apps
What serverless means for enterprise appsWhat serverless means for enterprise apps
What serverless means for enterprise apps
Sumit Sarkar
 
Agility and Control from AWS [FutureStack16]
Agility and Control from AWS [FutureStack16]Agility and Control from AWS [FutureStack16]
Agility and Control from AWS [FutureStack16]
New Relic
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
Christian Posta
 
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS
 
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
DevOps.com
 
AWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWSAWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWS
Amazon Web Services
 
MICROSERVICES ARCHITECTURE unit -2.pptx
MICROSERVICES ARCHITECTURE unit -2.pptxMICROSERVICES ARCHITECTURE unit -2.pptx
MICROSERVICES ARCHITECTURE unit -2.pptx
MohammedShahid562503
 
Serverless & Microservices Architecture
Serverless & Microservices ArchitectureServerless & Microservices Architecture
Serverless & Microservices Architecture
Jason Woods
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
ABDEL RAHMAN KARIM
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
Decision Science Community
 
Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application Development
WaveMaker, Inc.
 
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig DicksonAWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
Amazon Web Services Korea
 
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
Amazon Web Services
 
A Microservice Journey
A Microservice JourneyA Microservice Journey
A Microservice Journey
Christian Posta
 
20161220 - microservice
20161220 - microservice20161220 - microservice
20161220 - microservice
Jamie (Taka) Wang
 
Best Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with MicroservicesBest Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with Microservices
Jim (张建军) Zhang
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
TIMETOACT GROUP
 
Micro services overview
Micro services overviewMicro services overview
Micro services overview
Zeeshan Khan
 

Similar to From Monoliths to Services: Grafually paying your Technical Debt (20)

Evolving your Architecture to MicroServices
Evolving your Architecture to MicroServicesEvolving your Architecture to MicroServices
Evolving your Architecture to MicroServices
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native Meetup
 
What serverless means for enterprise apps
What serverless means for enterprise appsWhat serverless means for enterprise apps
What serverless means for enterprise apps
 
Agility and Control from AWS [FutureStack16]
Agility and Control from AWS [FutureStack16]Agility and Control from AWS [FutureStack16]
Agility and Control from AWS [FutureStack16]
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
 
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
 
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
 
AWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWSAWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWS
 
MICROSERVICES ARCHITECTURE unit -2.pptx
MICROSERVICES ARCHITECTURE unit -2.pptxMICROSERVICES ARCHITECTURE unit -2.pptx
MICROSERVICES ARCHITECTURE unit -2.pptx
 
Serverless & Microservices Architecture
Serverless & Microservices ArchitectureServerless & Microservices Architecture
Serverless & Microservices Architecture
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
 
Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application Development
 
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig DicksonAWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
 
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
 
A Microservice Journey
A Microservice JourneyA Microservice Journey
A Microservice Journey
 
20161220 - microservice
20161220 - microservice20161220 - microservice
20161220 - microservice
 
Best Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with MicroservicesBest Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with Microservices
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
Micro services overview
Micro services overviewMicro services overview
Micro services overview
 

Recently uploaded

Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
SimonedeGijt
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
Mindfire Solution
 
A Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdfA Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdf
kalichargn70th171
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
Task Tracker
 
How we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hoursHow we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hours
Ortus Solutions, Corp
 
Development of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML TechnologiesDevelopment of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML Technologies
MaisnamLuwangPibarel
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Livetecs LLC
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
shivamt017
 
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Asher Sterkin
 
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdfWhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
onemonitarsoftware
 
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
ThousandEyes
 
WEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service ProvidersWEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service Providers
Severalnines
 
dachnug51 - Whats new in domino 14 .pdf
dachnug51 - Whats new in domino 14  .pdfdachnug51 - Whats new in domino 14  .pdf
dachnug51 - Whats new in domino 14 .pdf
DNUG e.V.
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
ssuser2b426d1
 
ThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and DjangoThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and Django
akshesh doshi
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
Roshan Dwivedi
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Sparity1
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
onemonitarsoftware
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
sofiafernandezon
 

Recently uploaded (20)

Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
 
A Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdfA Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdf
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
 
How we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hoursHow we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hours
 
Development of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML TechnologiesDevelopment of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML Technologies
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
 
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
 
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdfWhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
 
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
 
WEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service ProvidersWEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service Providers
 
dachnug51 - Whats new in domino 14 .pdf
dachnug51 - Whats new in domino 14  .pdfdachnug51 - Whats new in domino 14  .pdf
dachnug51 - Whats new in domino 14 .pdf
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
 
ThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and DjangoThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and Django
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
 

From Monoliths to Services: Grafually paying your Technical Debt

  • 1. From Monoliths to Services Gradually paying your Technical Debt BY DAVID LITVAK (@dlitvakb)
  • 3. “You want to make a “quick change” to your software […], and it isn’t quick. Whatever made that happen, that’s tech debt.” Dave Diehl http://jimplush.com/talk/2015/02/ Senior Developer at Fusion Alliance
  • 5. Metaphor explaining difficulties of shipping software
  • 6. Like financial debt, technical debt comes with interests. Failing to pay your debt, interests will come back at you. Why is it called Debt?
  • 8. THE SOFTWARE COST TRIAD Move one corner and the others will adjust accordingly If you want to increase Quality, you will have to spend more Money and Time Money Time Quality SOFTWARE COST Technical Debt comes when Quality is not taken into account, prioritising spending less or working faster
  • 9. Debt itself is not a bad thing! Invest and pay back early! Don’t leave debt hanging! But Hey! It’s not always bad!
  • 11. What are the causes? • Cutting Corners “I know it looks complicated, but I don’t have time to refactor it.” https://www.codementor.io/ruby-on-rails/tutorial/staying-on-top-of-your-technical-debt
  • 13. What are the causes? • Lack of Testing “We can write tests for it later.” https://www.codementor.io/ruby-on-rails/tutorial/staying-on-top-of-your-technical-debt
  • 15. What are the causes? • Assuming “False Positives” are Positives “The build fails sometimes, but it passes most of the time. Let’s just move on.” https://www.codementor.io/ruby-on-rails/tutorial/staying-on-top-of-your-technical-debt
  • 17. How to avoid? • Work Small Make incremental progress
  • 19. How to avoid? • Work Clean Seek for refactoring opportunities
  • 21. How to avoid? • Work Green Have a Test Suite - Use Continuous Integration Tools
  • 23. Grades of Debt - James Higgs • Grade One: Accumulation due to extrinsic changes Keep up to date with your dependencies and technologies https://madebymany.com/blog/the-four-grades-of-technical-debt
  • 25. Grades of Debt - James Higgs • Grade Two: Developer Comfort Code for readability - your future self and co-workers will much appreciate it https://madebymany.com/blog/the-four-grades-of-technical-debt
  • 27. Grades of Debt - James Higgs • Grade Three: Cost of Pragmatism Use debt wisely and prototype - throw away if not successful https://madebymany.com/blog/the-four-grades-of-technical-debt
  • 29. Grades of Debt - James Higgs • Grade Four: The One with the Bite - Impossibility to Move Forward Point of no return! If you’re here, it may be wise to think about restarting! https://madebymany.com/blog/the-four-grades-of-technical-debt
  • 32. Architectural Styles • Monoliths Single Application - Multiple Responsibilities • Microservices Multiple Applications - Single Responsibilities
  • 33. “The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.” Martin Fowler Chief Scientist at ThoughtWorks http://martinfowler.com/articles/microservices.html
  • 34. It's an architectural style that enables us to separate each of our product’s responsibilities into very small and separate applications This gives us flexibility
  • 35. KISS / UNIX Modern development adopted a similar style Where does it come from? https://en.wikipedia.org/wiki/KISS_principle
  • 37. Why is it useful? • Service Independence Independent from one another - they have “contracts”
  • 38. Why is it useful? • Deployability Have a bug in a component - fix and deploy
  • 39. Why is it useful? • Team Independence Each can be owned by a different team
  • 40. What are the downsides? • Piping You have to take into account the inter-connections • Deployability Orchestration and Versioning • Infrastructure Much more complex setup
  • 42. “If someone asks me what cloud computing is, I try not to get bogged down with definitions. I tell them that, simply put, cloud computing is a better way to run your business.” Marc Benioff CEO of salesforce.com http://www.mercurynews.com/2009/10/23/2009-qa-marc-benioff-ceo-of-salesforce-com/
  • 43. 2016
  • 45. “Cloud computing is really a no-brainer for any start-up because it allows you to test your business plan very quickly for little money. Every start-up, or even a division within a company that has an idea for something new, should be figuring out how to use cloud computing in its plan.” Brad Jefferson CEO & Co-Founder of Animoto http://www.cio.com/article/2428093/infrastructure/cloud-computing--pros-and-cons.html
  • 46. What does it provide us? - Infrastructure • Cheap Even with pay-on-demand pricing models
  • 47. What does it provide us? - Infrastructure • Replaceable Changed the service? Drop the server and create a new one
  • 48. What does it provide us? - Infrastructure • Scalable When demand raises, automatically spin up new copies to cope with demand
  • 49. What does it provide us? - Software • CDNs Global content caching - Blazing fast websites
  • 51. What does it provide us? - Software • Content and Databases Storage servers with multiple architectures
  • 53. What does it provide us? - Software • And EVERYTHING Else Even sending “Thank You” notes as a Service
  • 55. Current Options - Infrastructure • Amazon Web Services • Microsoft Azure • Rackspace • Google Cloud Engine
  • 56. Current Options - CDNs • CloudFront • Akamai • MaxCDN • Fastly
  • 57. Current Options - Services • Contentful Content Management as a Service
  • 59. Current Options - Services • Snipcart Shopping Cart as a Service
  • 61. Current Options - Services • Auth0 Authentication as a Service
  • 64. “Serverless architectures refer to applications that significantly depend on third-party services (knows as Backend as a Service or "BaaS") or on custom code that's run in ephemeral containers (Function as a Service or “FaaS”). […] By using these ideas, and by moving much behaviour to the front end, such architectures remove the need for the traditional 'always on' server system sitting behind an application” Mike Roberts CEO & Co-Founder of Fried Gold Software http://www.martinfowler.com/articles/serverless.html
  • 65. TRADITIONAL APPLICATION Unintelligent Client Server does most of the hard work Source: https://www.martinfowler.com
  • 66. SERVERLESS APPLICATION Rich client - Many Frontends Independent services and infrastructure Source: https://www.martinfowler.com
  • 67. “If your PaaS can efficiently start instances in 20ms that run for half a second, then call it serverless.” Adrian Cockcroft Technology Fellow at Battery Ventures https://twitter.com/adrianco/status/736553530689998848
  • 69. “Microservices architecture potentially offers an easier way to pay down technical debt. Refactoring a big monolithic application can be the equivalent of a balloon payment. […] you can pay your technical debt incrementally by refactoring services one by one.” Eric Knorr Editor in Chief at CNET http://www.infoworld.com/article/2878659/application-development/reducing-technical-debt-with-microservices.html
  • 70. Now that we’ve introduced the concepts Let’s dive into how to apply them in practice
  • 71. Starting from your Rails App • Identify Models usually travel in families - identify these families
  • 73. Starting from your Rails App • Categorize Understand the functionality and responsibility of each component family
  • 75. Starting from your Rails App • Split Create separate API apps exposing them
  • 77. Starting from your Rails App • Communicate Integrate different parts of the application through it’s HTTP Interfaces
  • 79. Moving away from Rails • Move Static and Read-first content to a CMS Marketing, Blogs, Product and non-user generated content moved
  • 81. Moving away from Rails • Decouple your Front-End from your business logic Your HTML or Native app shouldn’t be tied to your server code
  • 83. Moving away from Rails • Profit from 3rd party Services Use cloud based authentication, messaging, mailing, payments to remove burden from your code
  • 85. Moving away from Rails • Leverage Static Sites and Static Assets Using Static Site Generated websites + CDNs to deliver fast and increase conversion
  • 86. “It’s much easier mentally to tackle $10,000 of debt across 4 credit cards at $2500 each than 1 card at the full $10,000.” Jim Plush Sr Director of Engineering at CrowdStrike http://jimplush.com/talk/2015/02/28/microservices-allow-for-localized-tech-debt/
  • 87. Keep Security in Check • Validate Validate on your Client side code - specially on payment transactions
  • 89. Keep Security in Check • Validate Validate on your Middleware - specially on payment transactions
  • 91. Keep Security in Check • Validate Make sure not to expose your internals
  • 93. Keep Security in Check • Validate Make sure you have retry and fallback mechanisms
  • 95. Rounding up • Prototype and test ideas • Create single responsibility applications • Test your code • Keep it safe
  • 98. We’re Hiring! Twitter: @dlitvakb Email: david.litvak@contentful.com Thanks!