SlideShare a Scribd company logo
Journey from monolith to microservices
Utilizing microservice patterns with monoliths
Chris Gianelloni @wolf31o2
1
In the beginning…
Applause had several ways to deploy and manage software.
• Custom system management tool (sysdeploy)
• Basically a SSH wrapper for manually created systems
• Custom Docker image management tool (Platypus)
• Standardized AMIs, built w/ Packer, including Docker daemon
• Services in Docker containers w/ configuration using SaltStack
• Provides A/B testing and health checks
• Packer + Chef + Terraform
• Packer + Chef to bake AMIs
• Terraform to deploy using ASGs
• Mesosphere DC/OS
• OSS orchestration for “Docker” containers
2
Typical “old school” configuration system, written completely
in-house, limited in capabilities, author has long-since
departed the company
• SSH wrapper to copy files and run commands
• No instance management
• No user management
• No rollback features
• No documentation
• Unfamiliar code base to everyone
• Unable to look up problems
sysdeploy
3
In-house microservice deployment and service management
• Leverages CloudFormation for infrastructure
• Template-based system
• INI-style configuration files
• Output lookups
• Leverages SaltStack for some configuration management
• Uses roles for service management
• Services in Docker containers
• Supports health checking
• Supports A/B deployments
• Supports manual rollback
• Tied to AWS
• Lots of ELBs
Platypus
4
Utilizes common, public, OSS tools
• Common tools with existing user bases and communities
• Basically “best of breed” tools
• Packer for AMIs
• Chef for installing and configuring software
• Terraform for deploying baked AMIs
• Plethora of documentation for each tool
• Chef Server optional
• Composable and reusable pieces
• Output lookups (Chef + Terraform)
Packer +
Chef +
Terraform
5
Mesos, Marathon, and Metronome (and more)
• Consolidated and unified platform
• Leverages common OSS technologies
• Standardized application and service management
• Health checking for services
• Supports single-shot, or scheduled tasks
• Service discovery
• Metrics and log collection
• Integrated data services
• Configuration rollbacks
• Canary deployments
• Universe packages
Mesosphere
DC/OS
6
7
Applause chose DC/OS to leverage previous work while
also moving to a scalable system using open source
components. This frees the Platform Delivery team to
provide new capabilities to the Applause Hosting
Platform which provide for our business needs.
• Open source with a vibrant and active community
• Strong feature set around an integrated platform
• Ability to colocate diverse workloads
• Microservices
• Data services
• AI / Machine learning / Analytics
• Simple interfaces using API, CLI, and GUI
• Enterprise features and support
• Appreciation for memes
Why DC/OS?
8
DC/OS Architecture
Software layer is where containers
execute to provide services. This
includes Marathon applications,
Metronome jobs, and Mesos
frameworks.
Platform layer is Mesosphere DC/OS
services execute, which run in the host
operating system.
Infrastructure layer provides the host
and operating system which hosts our
stack, such as Amazon Web Services.
9
DC/OS Node Types
Master nodes host DC/OS services and
provide the orchestration layer, service
discovery, and administrative interfaces.
Public agent nodes are public facing
and contain API routing and load
balancing of incoming requests to
backend services. These are agent
nodes with a public role.
Private agent nodes are internal and
host all other services. Services
communicate via East-West load
balancing.
Applause
Hosting
Platform
10
Mesosphere
Universe
packages +
Application
services
11
Packages and services which provide base value to the
platform to be used by all Applause services:
• ecr-login - AWS Elastic Container Registry login process
• Provides and updates credentials for fetching images
• marathon-lb - North-South load balancer
• Provides ingress load balancing from public slaves to services
running in private slaves
• hdfs - Hadoop Distributed File System
• Provides shared storage for artifacts, logs, etc.
• Provides storage layer for AI/ML and analytics processes
• linkerd - HTTP proxy
• Provides service discovery and service mesh
• Provides East-West load balancing across private slaves
• kong - API gateway
• Provides API routing to specific endpoints
• spark - Data processing framework
• Provides processing framework for AI/ML and analytics
• Chef cookbook wrapping community cookbook: https://supermarket.chef.io/cookbooks/dcos
• Custom recipes
• Monitoring agent
• Docker Engine installation and configuration
• Enhanced Networking (ena) driver
• Logging aggregation agent
• System users via data bag
• DC/OS volumes (volume0, etc)
• DC/OS workdir configuration
• Cookbook “bake_time”
• Packer templates to create “shared” images
• Start from “official” CentOS base images
• Patch
• Reboot
• Remove old kernels
• Run Chef
• Cleanup
How do we build DC/OS?
12
Chef
wrapper
“secret
sauce”
13
Disable some Chef resources by modifying resources at
converge time:
# These are resources which need to be modified in the upstream dcos
# cookbook to prevent them from executing at bake time
[
{ template: '/usr/src/dcos/genconf/config.yaml' },
{ execute: 'dcos-genconf' },
{ file: '/usr/src/dcos/genconf/serve/dcos_install.sh' },
{ execute: 'preflight-check' },
{ execute: 'dcos_install' },
].each do |res|
ruby_block "action-nothing-#{res.keys.first}[#{res.values.first}]" do
block do
r = resources(res)
r.action([:nothing])
end
only_if { node['chef-applause-dcos']['bake_time'] }
end
end
Packer
template
14
Runs Chef wrapper cookbook to produce a shared AMI:
{
"type": "chef-solo",
"version": "13.8.5",
"run_list": ["recipe[chef-applause-base]", "recipe[chef-applause-dcos]"],
"json": {
"chef-applause-dcos": {
"bake_time": true,
"chef_config_actions": ["nothing"]
},
"dcos": {
"dcos_enterprise": "{{user `dcos_enterprise`}}",
"dcos_role": "nil",
"dcos_version": "{{user `dcos_version`}}"
}
},
"cookbook_paths": [ "chef/cookbooks" ],
"data_bags_path": "chef/pubkeys/data_bags"
},
• Terraform
• Derived from Mesosphere’s AWS CloudFormation templates
• Originally a 1:1 translation
• Evolved over time, more customizations
• VPC per cluster
• Masters have public addresses / ELB for discovery
• Private slaves have only internal addresses
• Public slaves are behind ALB
• Autoscaling Groups + Launch Configs
• One group per DC/OS role
• Launch Configs write out node-specific Chef configuration
• Executes Chef client in cloud-init at boot
• IAM instance profiles used
• One profile per DC/OS role
How do we deploy DC/OS?
15
Launch
Configs
template
16
Provide outputs from terraform to Chef client:
#cloud-config
write_files:
- content: |
{
"dcos": {
"config": {
"aws_region": "${region}",
"cluster_name": "${stack_name}",
"exhibitor_address": "${internal_elb_dns_name}",
"master_external_loadbalancer": "${public_elb_dns_name}",
"num_masters": "${num_masters}",
"s3_bucket": "${exhibitor_s3_bucket}",
"superuser_username": "${superuser_username}",
"superuser_password_hash": "${superuser_password_hash}"
},
"dcos_enterprise": ${dcos_enterprise},
"dcos_role": "${dcos_role}",
"dcos_version": "${dcos_version}"
}
}
path: |-
/etc/chef/client-config.json
• Chef wrapper changes
• Pull Request made
• Tested with ChefDK and Test Kitchen
• Merged to master
• Tested again
• Pushed to Chef server
• Packer job executed
• Creates AMIs in AWS accounts
• Terraform job executed
• Creates AWS resources
• IAM accounts, profiles, instance profiles
• VPC, subnets, security groups
• ASGs, ELBs/ALBs
• Creates terraform outputs
Development to deployment workflow for DC/OS
17
• Application terraform updated
• Databases, caches, storage buckets, etc
• Service repository updated
• Pull Request made
• Unit tests, integration tests
• Merge to master (or deployment branch)
• Unit tests
• Docker image
• Integration tests
• Code coverage
• Push image
• Service deployment / promotion to DC/OS
• Metronome
• Marathon
• Kong
Development to deployment workflow for Applause services
18
• Migrate more workloads from legacy hosting
• Data science
• Analytics
• Build and test
• Other products
• Integrate services with in-cluster resources
• Data services
• Migrate scheduled jobs to Metronome
• Chronos
• cron
• Applause platform
• Migrate long-running tasks to Metronome
• Kubernetes in-cluster
What now?
19
Check out our careers page:
https://www.applause.com/working-at-applause/We’re hiring
20
Questions?
21

More Related Content

What's hot

(CMP302) Amazon ECS: Distributed Applications at Scale
(CMP302) Amazon ECS: Distributed Applications at Scale(CMP302) Amazon ECS: Distributed Applications at Scale
(CMP302) Amazon ECS: Distributed Applications at Scale
Amazon Web Services
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
WASdev Community
 
Azure Virtual Machines Deployment Scenarios
Azure Virtual Machines Deployment ScenariosAzure Virtual Machines Deployment Scenarios
Azure Virtual Machines Deployment Scenarios
Brian Benz
 
What's New for the Windows Azure Developer? Lots! (July 2013)
What's New for the Windows Azure Developer?  Lots! (July 2013)What's New for the Windows Azure Developer?  Lots! (July 2013)
What's New for the Windows Azure Developer? Lots! (July 2013)Michael Collier
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
Ido Flatow
 
IaaS azure_vs_amazon
IaaS azure_vs_amazonIaaS azure_vs_amazon
IaaS azure_vs_amazon
Udaiappa Ramachandran
 
Elastic beanstalk
Elastic beanstalkElastic beanstalk
Elastic beanstalk
Parag Patil
 
Introduction to Desired State Configuration (DSC)
Introduction to Desired State Configuration (DSC)Introduction to Desired State Configuration (DSC)
Introduction to Desired State Configuration (DSC)
Jeffery Hicks
 
AWS RDS Oracle - What is missing for a fully managed service?
AWS RDS Oracle - What is missing for a fully managed service?AWS RDS Oracle - What is missing for a fully managed service?
AWS RDS Oracle - What is missing for a fully managed service?
DanielHillinger
 
VMworld 2013: Architecting VMware Horizon Workspace for Scale and Performance
VMworld 2013: Architecting VMware Horizon Workspace for Scale and PerformanceVMworld 2013: Architecting VMware Horizon Workspace for Scale and Performance
VMworld 2013: Architecting VMware Horizon Workspace for Scale and Performance
VMworld
 
SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...
SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...
SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...Michael Noel
 
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Ido Flatow
 
AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...
AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...
AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...
Michael Noel
 
SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...
SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...
SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...
Eric Shupps
 
The Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureThe Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with Azure
Ido Flatow
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
Gianluca Hotz
 
What’s New with SSIS in ADF
 What’s New with SSIS in ADF What’s New with SSIS in ADF
What’s New with SSIS in ADF
Sandy Winarko
 
Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...
Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...
Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...
Sandy Winarko
 
LVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan InstabilityLVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan Instability
Maris Elsins
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)
Chris Aniszczyk
 

What's hot (20)

(CMP302) Amazon ECS: Distributed Applications at Scale
(CMP302) Amazon ECS: Distributed Applications at Scale(CMP302) Amazon ECS: Distributed Applications at Scale
(CMP302) Amazon ECS: Distributed Applications at Scale
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
 
Azure Virtual Machines Deployment Scenarios
Azure Virtual Machines Deployment ScenariosAzure Virtual Machines Deployment Scenarios
Azure Virtual Machines Deployment Scenarios
 
What's New for the Windows Azure Developer? Lots! (July 2013)
What's New for the Windows Azure Developer?  Lots! (July 2013)What's New for the Windows Azure Developer?  Lots! (July 2013)
What's New for the Windows Azure Developer? Lots! (July 2013)
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
 
IaaS azure_vs_amazon
IaaS azure_vs_amazonIaaS azure_vs_amazon
IaaS azure_vs_amazon
 
Elastic beanstalk
Elastic beanstalkElastic beanstalk
Elastic beanstalk
 
Introduction to Desired State Configuration (DSC)
Introduction to Desired State Configuration (DSC)Introduction to Desired State Configuration (DSC)
Introduction to Desired State Configuration (DSC)
 
AWS RDS Oracle - What is missing for a fully managed service?
AWS RDS Oracle - What is missing for a fully managed service?AWS RDS Oracle - What is missing for a fully managed service?
AWS RDS Oracle - What is missing for a fully managed service?
 
VMworld 2013: Architecting VMware Horizon Workspace for Scale and Performance
VMworld 2013: Architecting VMware Horizon Workspace for Scale and PerformanceVMworld 2013: Architecting VMware Horizon Workspace for Scale and Performance
VMworld 2013: Architecting VMware Horizon Workspace for Scale and Performance
 
SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...
SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...
SPSSac2014 - SharePoint Infrastructure Tips and Tricks for On-Premises and Hy...
 
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
 
AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...
AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...
AUDWC 2016 - Using SQL Server 20146 AlwaysOn Availability Groups for SharePoi...
 
SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...
SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...
SharePoint 24x7x365 Architecting for High Availability, Fault Tolerance and D...
 
The Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureThe Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with Azure
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
What’s New with SSIS in ADF
 What’s New with SSIS in ADF What’s New with SSIS in ADF
What’s New with SSIS in ADF
 
Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...
Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...
Embrace and Extend - First-Class Activity and 3rd Party Ecosystem for SSIS in...
 
LVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan InstabilityLVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan Instability
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)
 

Similar to TechBeats #2

IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the Cloud
Andrew Coleman
 
ITB2017 - Keynote
ITB2017 - KeynoteITB2017 - Keynote
ITB2017 - Keynote
Ortus Solutions, Corp
 
Flying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsFlying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native Applications
Jacek Bukowski
 
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
PROIDEA
 
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OSPutting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Lightbend
 
Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...
Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...
Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...
Amazon Web Services
 
Power of Azure Devops
Power of Azure DevopsPower of Azure Devops
Power of Azure Devops
Azure Riyadh User Group
 
Going Serverless - an Introduction to AWS Glue
Going Serverless - an Introduction to AWS GlueGoing Serverless - an Introduction to AWS Glue
Going Serverless - an Introduction to AWS Glue
Michael Rainey
 
So Many Docker Platforms...so little time
So Many Docker Platforms...so little timeSo Many Docker Platforms...so little time
So Many Docker Platforms...so little time
Michele Leroux Bustamante
 
Getting Started with MariaDB with Docker
Getting Started with MariaDB with DockerGetting Started with MariaDB with Docker
Getting Started with MariaDB with Docker
MariaDB plc
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Emerson Eduardo Rodrigues Von Staffen
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
Amazon Web Services
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
Vishal Biyani
 
Configuration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech TalksConfiguration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech Talks
Amazon Web Services
 
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
Alexey Bokov
 
DEVNET-1007 Network Infrastructure as Code with Chef and Cisco
DEVNET-1007	Network Infrastructure as Code with Chef and CiscoDEVNET-1007	Network Infrastructure as Code with Chef and Cisco
DEVNET-1007 Network Infrastructure as Code with Chef and Cisco
Cisco DevNet
 
eCAP Developer Walkthru
eCAP Developer WalkthrueCAP Developer Walkthru
eCAP Developer Walkthru
Robert Patt-Corner
 
Network Infrastructure as Code with Chef and Cisco
Network Infrastructure as Code with Chef and CiscoNetwork Infrastructure as Code with Chef and Cisco
Network Infrastructure as Code with Chef and Cisco
Matt Ray
 
Deep Dive: OpenStack Summit (Red Hat Summit 2014)
Deep Dive: OpenStack Summit (Red Hat Summit 2014)Deep Dive: OpenStack Summit (Red Hat Summit 2014)
Deep Dive: OpenStack Summit (Red Hat Summit 2014)
Stephen Gordon
 
On Docker and its use for LHC at CERN
On Docker and its use for LHC at CERNOn Docker and its use for LHC at CERN
On Docker and its use for LHC at CERN
Sebastien Goasguen
 

Similar to TechBeats #2 (20)

IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the Cloud
 
ITB2017 - Keynote
ITB2017 - KeynoteITB2017 - Keynote
ITB2017 - Keynote
 
Flying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsFlying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native Applications
 
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
 
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OSPutting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
 
Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...
Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...
Cloud-Native DevOps: Simplifying application lifecycle management with AWS | ...
 
Power of Azure Devops
Power of Azure DevopsPower of Azure Devops
Power of Azure Devops
 
Going Serverless - an Introduction to AWS Glue
Going Serverless - an Introduction to AWS GlueGoing Serverless - an Introduction to AWS Glue
Going Serverless - an Introduction to AWS Glue
 
So Many Docker Platforms...so little time
So Many Docker Platforms...so little timeSo Many Docker Platforms...so little time
So Many Docker Platforms...so little time
 
Getting Started with MariaDB with Docker
Getting Started with MariaDB with DockerGetting Started with MariaDB with Docker
Getting Started with MariaDB with Docker
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
Configuration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech TalksConfiguration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech Talks
 
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
 
DEVNET-1007 Network Infrastructure as Code with Chef and Cisco
DEVNET-1007	Network Infrastructure as Code with Chef and CiscoDEVNET-1007	Network Infrastructure as Code with Chef and Cisco
DEVNET-1007 Network Infrastructure as Code with Chef and Cisco
 
eCAP Developer Walkthru
eCAP Developer WalkthrueCAP Developer Walkthru
eCAP Developer Walkthru
 
Network Infrastructure as Code with Chef and Cisco
Network Infrastructure as Code with Chef and CiscoNetwork Infrastructure as Code with Chef and Cisco
Network Infrastructure as Code with Chef and Cisco
 
Deep Dive: OpenStack Summit (Red Hat Summit 2014)
Deep Dive: OpenStack Summit (Red Hat Summit 2014)Deep Dive: OpenStack Summit (Red Hat Summit 2014)
Deep Dive: OpenStack Summit (Red Hat Summit 2014)
 
On Docker and its use for LHC at CERN
On Docker and its use for LHC at CERNOn Docker and its use for LHC at CERN
On Docker and its use for LHC at CERN
 

Recently uploaded

Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 

Recently uploaded (20)

Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 

TechBeats #2

  • 1. Journey from monolith to microservices Utilizing microservice patterns with monoliths Chris Gianelloni @wolf31o2 1
  • 2. In the beginning… Applause had several ways to deploy and manage software. • Custom system management tool (sysdeploy) • Basically a SSH wrapper for manually created systems • Custom Docker image management tool (Platypus) • Standardized AMIs, built w/ Packer, including Docker daemon • Services in Docker containers w/ configuration using SaltStack • Provides A/B testing and health checks • Packer + Chef + Terraform • Packer + Chef to bake AMIs • Terraform to deploy using ASGs • Mesosphere DC/OS • OSS orchestration for “Docker” containers 2
  • 3. Typical “old school” configuration system, written completely in-house, limited in capabilities, author has long-since departed the company • SSH wrapper to copy files and run commands • No instance management • No user management • No rollback features • No documentation • Unfamiliar code base to everyone • Unable to look up problems sysdeploy 3
  • 4. In-house microservice deployment and service management • Leverages CloudFormation for infrastructure • Template-based system • INI-style configuration files • Output lookups • Leverages SaltStack for some configuration management • Uses roles for service management • Services in Docker containers • Supports health checking • Supports A/B deployments • Supports manual rollback • Tied to AWS • Lots of ELBs Platypus 4
  • 5. Utilizes common, public, OSS tools • Common tools with existing user bases and communities • Basically “best of breed” tools • Packer for AMIs • Chef for installing and configuring software • Terraform for deploying baked AMIs • Plethora of documentation for each tool • Chef Server optional • Composable and reusable pieces • Output lookups (Chef + Terraform) Packer + Chef + Terraform 5
  • 6. Mesos, Marathon, and Metronome (and more) • Consolidated and unified platform • Leverages common OSS technologies • Standardized application and service management • Health checking for services • Supports single-shot, or scheduled tasks • Service discovery • Metrics and log collection • Integrated data services • Configuration rollbacks • Canary deployments • Universe packages Mesosphere DC/OS 6
  • 7. 7 Applause chose DC/OS to leverage previous work while also moving to a scalable system using open source components. This frees the Platform Delivery team to provide new capabilities to the Applause Hosting Platform which provide for our business needs. • Open source with a vibrant and active community • Strong feature set around an integrated platform • Ability to colocate diverse workloads • Microservices • Data services • AI / Machine learning / Analytics • Simple interfaces using API, CLI, and GUI • Enterprise features and support • Appreciation for memes Why DC/OS?
  • 8. 8 DC/OS Architecture Software layer is where containers execute to provide services. This includes Marathon applications, Metronome jobs, and Mesos frameworks. Platform layer is Mesosphere DC/OS services execute, which run in the host operating system. Infrastructure layer provides the host and operating system which hosts our stack, such as Amazon Web Services.
  • 9. 9 DC/OS Node Types Master nodes host DC/OS services and provide the orchestration layer, service discovery, and administrative interfaces. Public agent nodes are public facing and contain API routing and load balancing of incoming requests to backend services. These are agent nodes with a public role. Private agent nodes are internal and host all other services. Services communicate via East-West load balancing.
  • 11. Mesosphere Universe packages + Application services 11 Packages and services which provide base value to the platform to be used by all Applause services: • ecr-login - AWS Elastic Container Registry login process • Provides and updates credentials for fetching images • marathon-lb - North-South load balancer • Provides ingress load balancing from public slaves to services running in private slaves • hdfs - Hadoop Distributed File System • Provides shared storage for artifacts, logs, etc. • Provides storage layer for AI/ML and analytics processes • linkerd - HTTP proxy • Provides service discovery and service mesh • Provides East-West load balancing across private slaves • kong - API gateway • Provides API routing to specific endpoints • spark - Data processing framework • Provides processing framework for AI/ML and analytics
  • 12. • Chef cookbook wrapping community cookbook: https://supermarket.chef.io/cookbooks/dcos • Custom recipes • Monitoring agent • Docker Engine installation and configuration • Enhanced Networking (ena) driver • Logging aggregation agent • System users via data bag • DC/OS volumes (volume0, etc) • DC/OS workdir configuration • Cookbook “bake_time” • Packer templates to create “shared” images • Start from “official” CentOS base images • Patch • Reboot • Remove old kernels • Run Chef • Cleanup How do we build DC/OS? 12
  • 13. Chef wrapper “secret sauce” 13 Disable some Chef resources by modifying resources at converge time: # These are resources which need to be modified in the upstream dcos # cookbook to prevent them from executing at bake time [ { template: '/usr/src/dcos/genconf/config.yaml' }, { execute: 'dcos-genconf' }, { file: '/usr/src/dcos/genconf/serve/dcos_install.sh' }, { execute: 'preflight-check' }, { execute: 'dcos_install' }, ].each do |res| ruby_block "action-nothing-#{res.keys.first}[#{res.values.first}]" do block do r = resources(res) r.action([:nothing]) end only_if { node['chef-applause-dcos']['bake_time'] } end end
  • 14. Packer template 14 Runs Chef wrapper cookbook to produce a shared AMI: { "type": "chef-solo", "version": "13.8.5", "run_list": ["recipe[chef-applause-base]", "recipe[chef-applause-dcos]"], "json": { "chef-applause-dcos": { "bake_time": true, "chef_config_actions": ["nothing"] }, "dcos": { "dcos_enterprise": "{{user `dcos_enterprise`}}", "dcos_role": "nil", "dcos_version": "{{user `dcos_version`}}" } }, "cookbook_paths": [ "chef/cookbooks" ], "data_bags_path": "chef/pubkeys/data_bags" },
  • 15. • Terraform • Derived from Mesosphere’s AWS CloudFormation templates • Originally a 1:1 translation • Evolved over time, more customizations • VPC per cluster • Masters have public addresses / ELB for discovery • Private slaves have only internal addresses • Public slaves are behind ALB • Autoscaling Groups + Launch Configs • One group per DC/OS role • Launch Configs write out node-specific Chef configuration • Executes Chef client in cloud-init at boot • IAM instance profiles used • One profile per DC/OS role How do we deploy DC/OS? 15
  • 16. Launch Configs template 16 Provide outputs from terraform to Chef client: #cloud-config write_files: - content: | { "dcos": { "config": { "aws_region": "${region}", "cluster_name": "${stack_name}", "exhibitor_address": "${internal_elb_dns_name}", "master_external_loadbalancer": "${public_elb_dns_name}", "num_masters": "${num_masters}", "s3_bucket": "${exhibitor_s3_bucket}", "superuser_username": "${superuser_username}", "superuser_password_hash": "${superuser_password_hash}" }, "dcos_enterprise": ${dcos_enterprise}, "dcos_role": "${dcos_role}", "dcos_version": "${dcos_version}" } } path: |- /etc/chef/client-config.json
  • 17. • Chef wrapper changes • Pull Request made • Tested with ChefDK and Test Kitchen • Merged to master • Tested again • Pushed to Chef server • Packer job executed • Creates AMIs in AWS accounts • Terraform job executed • Creates AWS resources • IAM accounts, profiles, instance profiles • VPC, subnets, security groups • ASGs, ELBs/ALBs • Creates terraform outputs Development to deployment workflow for DC/OS 17
  • 18. • Application terraform updated • Databases, caches, storage buckets, etc • Service repository updated • Pull Request made • Unit tests, integration tests • Merge to master (or deployment branch) • Unit tests • Docker image • Integration tests • Code coverage • Push image • Service deployment / promotion to DC/OS • Metronome • Marathon • Kong Development to deployment workflow for Applause services 18
  • 19. • Migrate more workloads from legacy hosting • Data science • Analytics • Build and test • Other products • Integrate services with in-cluster resources • Data services • Migrate scheduled jobs to Metronome • Chronos • cron • Applause platform • Migrate long-running tasks to Metronome • Kubernetes in-cluster What now? 19
  • 20. Check out our careers page: https://www.applause.com/working-at-applause/We’re hiring 20