SlideShare uma empresa Scribd logo
1 de 132
Subverting the
Monolith
With Principles and Tooling
@girlnamedsophia
We’ve been told the
future is…
Automated
Serverless
In the cloud
Distributed
Scalable
Flexible
Resilient
Secure
How do you go from here
to there?
Here There
What’s here?
Here
…where were we?
• Apps aren’t 12 factor
…where were we?
• Apps aren’t 12 factor
• Not all hosts are ephemeral
…where were we?
• Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
…where were we?
• Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
…where were we?
• Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
• High onboarding cost for new apps
…where were we?
• Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
• High onboarding cost for new apps
…where were we?
• Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
• High onboarding cost for new apps
…where were we?
What’s 12 factor?
• Code in VCS
• Dependencies declared and
isolated
• Config stored in the
environment
• Backing services communicated
over an API
• Internal Services available
via an API
• Concurrency and scaling
through the process model
• Ephemeral
• Environment agnostic
• Logs as event stream
• Admin tasks in production
So what is “there”?
There
Serverless!
Containerized!
Environment Agnostic!
Declarative Dependencies!
Backing services
communicated over an API!
Automated Goats
Consumer Contract
CI pipeline
CD pipeline
Onboard new apps
And when do we want it?
...Eventually!
How do we want it to
happen?
...Gradually!
Why don’t we have it
already?
How we built the platform
today, thinking of tomorrow
Solved one problem at a time
Solved one problem at a time
Implemented Configuration as Code
How we built the platform
today, thinking of tomorrow
Solved one problem at a time
Implemented Configuration as Code
Prioritized an engineers-first approach
How we built the platform
today, thinking of tomorrow
Solved one problem at a time
Implemented Configuration as Code
Prioritized an engineers-first approach
How we built the platform
today, thinking of tomorrow
…okay, engineers second, Principles first
Legacy System
App
Which problem to solve
first?
Consumer Contract
CI Pipeline
CD Pipeline
Onboard new apps
Generic solution
Generic solution
Varying needs
Generic solution
Varying needs
Usable Value right off the
bat
GitHub Jenkins GitHub Jenkins
Slack
AWS
JenkinsJenkinsJenkinsJenkins
Sad engineers
shake fists
CI/CD not in VCS
Onboarding new
apps is
difficult
Sad
Engineer
CI fumbles
Not Atomic!
GitHub Jenkins GitHub Jenkins
Slack
AWS
JenkinsJenkinsJenkinsJenkins
Sad
Engineer
CI fumbles
Configuration As Code
Configuration As Code
Automation
Configuration As Code
Automation
Opinionated AF
As engineers, what’s your go to
language of choice? What do you
write most of your tools things in?
1. Ruby
2. Elixir
3. Golang
You’re wrong!
It’s YAML.
So what did we do?
We wrote YAML…
WITH RUBY
Enforces a set of conventions
What’s the tool do?
What’s the tool do?
Enforces a set of conventions
Defines a predetermined contract
Enforces a set of conventions
Defines a predetermined contract
Automates configuration generation
What’s the tool do?
Why did we do it?
Externalized Configuration
Why a contract?
Externalized Configuration
Automation
Why a contract?
Externalized Configuration
Automation
Scalability
Why a contract?
Why a contract?
Externalized Configuration
Automation
Scalability
Standardization
Why a contract?
Externalized Configuration
Automation
Scalability
Standardization
Predictability
Why a contract?
Externalized Configuration
Automation
Scalability
Standardization
Predictability
Why a contract?
Externalized Configuration
Automation
Scalability
Standardization
Predictability
RSpec
Rubocop
Integration Tests
Error Screenshots
Standardized Builds
Conventionally stored artifacts
Next, Enforce the
Contract
How’s it work?
ruby_app java_appjava_library
…
Coach CLI
How’s it work?
ruby_app
ruby_library
java_library
How’s it work?
ruby_app
ruby_library
java_library
ruby 2.6.1
ruby 2.4.2
java 1.8.0
How’s it work?
ruby_app
ruby_library
java_library
How’s it work?
Consumer Contract
CI Pipeline
CD Pipeline
Onboard new apps
The Structure
The Structure
Tight coupling! Nooooo!
Welcome to software
development
The Code
The Code
The Code
The Legacy
The Code
The Code
The Code
The Code
The Code
#portability
…But I digress
…where are we now?
…where are we now?
• Apps start to look a lot more 12 factor-y
…where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
…where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
…where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI, not yet CD
…where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI/CD, not yet CD
• Low onboarding cost for new apps
…where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI/CD, not yet CD
• Low onboarding cost for new apps
…where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI/CD, not yet CD
• Low onboarding cost for new apps
How our tooling Encouraged
Developers to Build for the Future
Consumer Contract
CI Pipeline
CD Pipeline
Onboard new apps
From legacy to
new world
What’s the smallest
deployable unit?
An app
An app is an app is an app
Helping the migration
What is but isn’t an app?
• Database migrations for a shared
database
• Database monitoring that needs to run
on its own host
Running the code in
the cloud
Rudder guides the boat
The tools reinforce
each other
What language or tool do you use
to keep infrastructure in code?
1. YAML
2. Terraform
3. Ansible
Terraform with Ruby
Helm with Ruby
The evolution of the platform
ruby_app
database_
monitoring
_app
database_
migration_
app
ruby_app_
database
Attachable resources
ruby_app
database_
monitoring
_app
database_
migration_
app
ruby_app_
database
The engineers and the
principles guide the tools
Consumer Contract
CI Pipeline
CD Pipeline
Onboard new apps
Define the contract
Enforce the contract
Onboard
Onboarding apps
Distributing it all
Ease of distribution
means ease of adoption
Did we subvert the
monolith?
Yes!
• Apps are 12 factor!
• All hosts are ephemeral, we can even
support one-off ecosystems with ease
• Low deploy latency - 10-25 minute deploys
• High reliability in CI/CD
• Low onboarding cost for new apps
…where are we now?
GitHub Jenkins GitHub Jenkins
Slack
AWS
JenkinsJenkinsJenkinsJenkins
Sad
Engineer
GitHub CircleCI Coach Web Slack
Coach CLI
GitHub
Happy
Engineer
GitHub CircleCI Coach Web Slack
Coach CLI
GitHub
Happy
Engineer
Jenkins
AWS EKS
Rudder
Takeaways
Sometimes the solution can be
well-designed and knowingly
temporary
Automation now is better
than manual later
Delivering value as quickly as
possible without sacrificing
quality is critical to growth
With clearly defined principles
and goals, know that you never
need to stop iterating
Our present is…
Automated
Serverless
In the cloud
Distributed
Scalable
Flexible
Resilient
Secure
The Path Forward
Thank you

Mais conteúdo relacionado

Mais procurados

Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Andy Maleh
 
Henrik Kniberg - Essence of Agile
Henrik Kniberg - Essence of AgileHenrik Kniberg - Essence of Agile
Henrik Kniberg - Essence of Agile
AgileSparks
 

Mais procurados (20)

Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
 
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical StepsDevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid Innovation
 
DOES SFO 2016 - Scott Willson - Top 10 Ways to Fail at DevOps
DOES SFO 2016 - Scott Willson - Top 10 Ways to Fail at DevOpsDOES SFO 2016 - Scott Willson - Top 10 Ways to Fail at DevOps
DOES SFO 2016 - Scott Willson - Top 10 Ways to Fail at DevOps
 
5 Steps on the Way to Continuous Delivery
5 Steps on the Way to Continuous Delivery5 Steps on the Way to Continuous Delivery
5 Steps on the Way to Continuous Delivery
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
 
How to Build a DevOps Toolchain
How to Build a DevOps ToolchainHow to Build a DevOps Toolchain
How to Build a DevOps Toolchain
 
Henrik Kniberg - Essence of Agile
Henrik Kniberg - Essence of AgileHenrik Kniberg - Essence of Agile
Henrik Kniberg - Essence of Agile
 
Bjorn Rabenstein. SRE, DevOps, Google, and you
Bjorn Rabenstein. SRE, DevOps, Google, and youBjorn Rabenstein. SRE, DevOps, Google, and you
Bjorn Rabenstein. SRE, DevOps, Google, and you
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)
 
'What is an Agile tester': Henrik Kniberg @ Colombo Agile Conference 2014
'What is an Agile tester': Henrik Kniberg @ Colombo Agile Conference 2014'What is an Agile tester': Henrik Kniberg @ Colombo Agile Conference 2014
'What is an Agile tester': Henrik Kniberg @ Colombo Agile Conference 2014
 
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud NativeFrom 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
 
The Carrier DevOps Trend (Presented to Okinawa Open Days Conference)
The Carrier DevOps Trend (Presented to Okinawa Open Days Conference)The Carrier DevOps Trend (Presented to Okinawa Open Days Conference)
The Carrier DevOps Trend (Presented to Okinawa Open Days Conference)
 
ScrumOps - Featuring Dave West & Jayne Groll
ScrumOps - Featuring Dave West & Jayne GrollScrumOps - Featuring Dave West & Jayne Groll
ScrumOps - Featuring Dave West & Jayne Groll
 
Delivery Free of Charge
Delivery Free of ChargeDelivery Free of Charge
Delivery Free of Charge
 
How to Use DevOps & APM to Release Better Software Faster
How to Use DevOps & APM to Release Better Software FasterHow to Use DevOps & APM to Release Better Software Faster
How to Use DevOps & APM to Release Better Software Faster
 
Devops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMADevops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMA
 
Modern Software Architecure Bootcamp - 2nd July 2016 - Bangalore
Modern Software Architecure Bootcamp - 2nd July 2016 - BangaloreModern Software Architecure Bootcamp - 2nd July 2016 - Bangalore
Modern Software Architecure Bootcamp - 2nd July 2016 - Bangalore
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
DDD In Agile
DDD In Agile   DDD In Agile
DDD In Agile
 

Semelhante a Subverting the monolith!

How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...
How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...
How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...
Simplilearn
 

Semelhante a Subverting the monolith! (20)

Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 
How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...
How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...
How To Become A DevOps Engineer | Who Is A DevOps Engineer? | DevOps Engineer...
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The Cloud
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
 
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
AppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityAppSec Pipelines and Event based Security
AppSec Pipelines and Event based Security
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
 
Understanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliveryUnderstanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous Delivery
 
It's What's Inside that Counts!
It's What's Inside that Counts!It's What's Inside that Counts!
It's What's Inside that Counts!
 
DevOps Behind the Scenes
DevOps Behind the ScenesDevOps Behind the Scenes
DevOps Behind the Scenes
 
10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols
 
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
 
Controlled Evolution with Puppet and AWS
Controlled Evolution with Puppet and AWSControlled Evolution with Puppet and AWS
Controlled Evolution with Puppet and AWS
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and Enjoyment
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
A Tale of Two Apps
A Tale of Two AppsA Tale of Two Apps
A Tale of Two Apps
 
Higher. Faster. Stronger. Your Applications with Habitat
Higher. Faster. Stronger. Your Applications with HabitatHigher. Faster. Stronger. Your Applications with Habitat
Higher. Faster. Stronger. Your Applications with Habitat
 
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupPreparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
 
Deployment is the new build
Deployment is the new buildDeployment is the new build
Deployment is the new build
 

Último

Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
dollysharma2066
 

Último (20)

DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equation
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced LoadsFEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Block diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptBlock diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.ppt
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 

Subverting the monolith!