SlideShare une entreprise Scribd logo
1  sur  43
We wish to acknowledge the traditional custodians of the land we are
meeting on, the Whadjuk (Perth region) people. We respect their
continuing culture and the contribution they make to the life of this
city and this region.
This meeting is being held on the traditional lands of the Noongar
people. We acknowledge that this meeting is being held on Aboriginal
land and recognise the strength, resilience and capacity of Noongar
people in this land.
Welcome to Country
17 August 2017 | Derek Bingham
Tweet: @deekob
01 The What and Why of PaaS
02 Azure Compute PaaS Options
03 Current flavours of the month
04 Case Study – Upgrade my PaaS
05 Steps to solve
06 Tips and Tricks
07 Questions
08 #beertime
What is PaaS?
#anazurestory @deekob
Application
Data
O/S
Virtualisation
Servers
Runtime
Storage
Networking
Bare metal
Application
Data
O/S
Virtualisation
Servers
Runtime
Storage
Networking
IaaS
Application
Data
O/S
Virtualisation
Servers
Runtime
Storage
Networking
PaaS
Application
Data
O/S
Virtualisation
Servers
Runtime
Storage
Networking
SaaS
#anazurestory @deekob
PaaS as a continuum
Showing AWS/Azure compute
IaaS
(Control / flexibility)
PaaS
(Simplicity / ↓ maintenance / ↓ h/w access)
What is PaaS?
Azure VMs
Amazon EC2
Azure Container Service
EC2 Container Service
Azure Service Fabric
Service Fabric on VMs
Azure Functions
AWS Lambdas
Azure Container Instances
Azure Logic Apps
AWS Batch
Azure Batch
Azure App Service
Azure App Service Environments
Azure Cloud Services
AWS Elastic Beanstalk
Azure VM Extensions
Azure VM Scale Sets
Amazon Lightsail
Azure VM Images
AWS Auto Scaling
Part 1
Azure Compute PaaS
August 17 #anazurestory @deekob
> Thin abstraction over Underlying VM
> Can RDP / SSH
> Can install 3rd party binaries on VM
> Applications are split into Roles
> Web Role – Website running on IIS
> Worker Role – Background standalone applications
> Scales up and out
> Supports HA and Geo Redundancy
> But any new service deployment can take 10-15 mins to start
> Each new service needs a new cloud service – needs a new VM - $$
Cloud Services – PaaSv1
August 17 #anazurestory @deekob
App Services – PaaS V2
> Web Apps
> Web Sites , Web Jobs
> Mobile Apps
> The ‘backend’ for your Mobile apps
– data , content, security..
> Logic Apps
> Workflow, integrations
> Api Apps
> Exposing your API using REST endpoints
August 17 #anazurestory @deekob
Web Apps
> Runs under IIS
> Uses Shared resources – App Service Plan
> Can scale automatically up and out
> You can hook into GitHub and other source control tools to set up CD
> You don’t get access to the underlying OS instance so there is less
flexibility
> The first PaaS you’ll build in Azure
August 17 #anazurestory @deekob
Azure Web Jobs
> For running background tasks
> OnDemand – Queues, Blobs, storage…
> Scheduled
> Continuous
> Runs in same context as WebApps
> Watch out
> Scale with the containing instance
August 17 #anazurestory @deekob
Service Fabric
> Azure ‘Microservices Platform’ ™
> Distributed services platform
> The Service Fabric Cluster…
> Runs on linux / windows / onPrem / Azure / AWS
> Runs 30% of ALL Azure compute
> Supports deployment of existing executables / .Net Core binaries
> Run Docker inside cluster
> Overkill for a simple website and a lot to get your head around..
> Both program and deployment model
> But one to watch !!
> especially with container integration
August 17 #anazurestory @deekob
> Develop Functions in C#, Node.js, F#, Python,
PHP … more
> Schedule event-driven tasks across services
> Expose Functions as HTTP API endpoints
> Scale based on demand
> Just like WebJobs….
Azure Functions / FaaS / Serverless
(WebJobs 2.0)
August 17
So Why Functions?
> Run in consumption plan
> Timeout after 5 mins – short running process
> Pay for what you use( memory and cycles ) –
no heavy lifting
> Run in AppService Plan
> A WebJob as a method
> Flexible – simple deploy from Git
> Still waiting on VS integration – Released
Yesterday
> But can use VSCode – so its ok..
Let’s have a look…
August 17
Azure Batch
> Job Scheduling as a Service
> Large Scale Compute !!
> Monte Carlo Estimations
> Control VM Pool size (100 – 1000)s
> Plumbing all done for you
> Controlling Containers across VMs
> Scaling inside VM’s
> Runs on Scale Sets
> Uses Kubernetes and Docker for
orchestration
Container Services
August 17 #anazurestory @deekob
Container Instance (Preview)
> Containers as a Service ( CaaS )
> Single Container deployed billed by second ( like Functions )
> No infrastructure to provision
> No cluster orchestration
> Currently Linux only – Windows coming
> Can connect to Kubernetes for Orchestration
> VM based containers for predicable work loads
> On demand Container Instance for fast bursts and scaling
> #mikedrop
August 17 #anazurestory @deekob
Containers, Containers, Confusion….
IF YOU'RE LOOKING FOR THIS... USE THIS
Scale and orchestrate containers using Kubernetes, DC/OS or Docker Swarm Container Service
Easily run containers on Azure with a single command Container Instances
Store and manage container images across all types of Azure deployments Container Registry
Develop microservices and orchestrate containers on Windows or Linux Service Fabric
Deploy web applications on Linux using containers App Service
Run repetitive compute jobs using containers Batch
Take away: PaaS options are
many and varied – choose
wisely.
Part 2
An Azure Story
CASE STUDY
Cloud Services
Migration
Brief:
Op-Ex costs are blowing out on
Azure resources. Can they be
consolidated? and if so how?
Problem Statement:
Running system in Azure, that has been
deployed and running well for 2+ years.
Due to organic growth in application
services, current PaaS platform isn’t cost
effective.
Find a better more cost efficient PaaS
platform and migrate to it…..
Duration:
Four Months
August 17 #anazurestory @deekob
August 17 #anazurestory @deekob
Rough Architecture….Client Client Client
Command
Processors
(WebRole)
Event Hub
(WebRole)
S
E
R
V
I
C
E
x100
(Worker Roles)
Gateway
Read Models
Commands Event Store
August 17 #anazurestory @deekob
Worker Role
Event Store
Read Model
The Humble Read Model Populator
August 17 #anazurestory @deekob
Some Numbers
> Number of Could Services – 123
> Number of C# projects – 729
> Number of Team City Agents – 21
> Number of .Net Solutions – 130
> Time to deploy 1 Service – 15 mins
August 17 #anazurestory @deekob
The Challenge
> Choose a new PaaS platform
> Migrate 130 + solutions
> Support intra day deployments
> At least beat 15 mins outage
> Maintain support to existing ALM
> Leverage existing Team City Agents
> Support scaling at Micro and Macro levels
> In under 4 months
August 17 #anazurestory @deekob
Where to start?
> Respect your patterns
› https://docs.microsoft.com/en-us/azure/architecture/patterns/compute-resource-consolidation
> Compute partitioning
> So what can I partition ?
> WebRole
> WorkerRole
> What PaaS platforms would support this?
> Service Fabric – preferred MSFT option
> WebApps/WebJobs
August 17 #anazurestory @deekob
Find THE Platform ?
> Spike two platforms that could be considered ‘best fit’
> Application Services / Web Apps
> Service Fabric
> Time constraints ruled out spiking more
> Containers and Functions would have also been reasonable
options
> Build an Worker Role replacement in each platform
> Biggest risk as there are > 100
> Validate it against criteria
> Good vertical slice
August 17 #anazurestory @deekob
Spike Criteria Web App Service Fabric
Perfect Architectural replacements No Yes
Can control singleton service instances Yes Yes
Easy to Scale Yes Yes
Almost instant deployments Yes Yes
Team City deployments Yes Yes
Minimal code change required to each solution Yes No
Well documented and understood set of tooling Yes No
Existing build and deployment pipeline can be leveraged, so
deployments to new environments can be 'feature' toggled
Yes Yes
Results
August 17 #anazurestory @deekob
Proposed Solution
> Worker Roles -> Web Jobs
> Can we find a cross cutting technique ?
> Limit code churn
> Reduce downtime
> Deploy into a compute pool
> Web Roles -> Web Apps
> Apply same cross cutting technique
> Standardise the entire migration approach
August 17
> Benefits
> No / Limited actual code change
> Changes limited to build and deployment pipeline
> Limited regression testing
> Can Stand up services side by side / new and old
> Maybe actually deliver on time
Solution Risks / Benefits
> Risks
> Technical cross cutting may not be possible
> Will need to change 100 + solutions
> Extensive testing required
> Will take a loooooong time….
August 17 #anazurestory @deekob
Solution – Part 1 - Use the folder structure
> Web Jobs live in here too
sitewwwrootApp_Data
> Web App Directory structure is static
sitewwwrootApp_Datajobscontinous{job name}
sitewwwrootApp_Datajobsscheduled{job name}
> Any files below job framework will try and run
> .cmd,.bat,.exe,.ps1,.sh,.php,.py,.js,.jar
August 17 #anazurestory @deekob
Solution – Part 2 - Fool the runtime
APP
Platform
Runtime
APP
Platform
Runtime
Run
APP
APP
Run
https://github.com/deekob/OnionConsole
> Cloud Services Worker Roles Entry Points
> OnStart()
> Run()
> Fool an application that its running on
Cloud Services?
> Onion Console was born..
> Simple console app
> Runs from the application binary
directory
> Finds the Cloud Server entry points
> Calls them
August 17 #anazurestory @deekob
Solution - Part 3 - Configuration migration
.csfg
app.config
App Settings
WorkerRole -> WebJob
<Setting name="EventHub.Location" value="" /> <add key="="EventHub.Location" value="" />
Azure
Cloud Service Web Job
> Transform CloudSevice config
> Add to app.config of onion
> User config inheritance
> Apply for all role types
Microsoft.WindowsAzure.ConfigurationManager
August 17 #anazurestory @deekob
Solution – Part 4 - App Service Plans
> Organise your applications/services into ‘Compute Pools’
> Long running continuous Jobs
> On Demand Jobs
> Using ARM template to provision
> Create a ‘Headless’ WebApp for your Web Job pool
> Removes risk of Web Request flooding your Job Pool
> Consider Use ‘Per App’ scaling
> Defaults to scale of AppService Plan
> But can over ride at the App Level
> Watch out on Swap Slots
> They consume resources from same App Service Plan
August 17 #anazurestory @deekob
Solution – Part 5 - Msdeploy
> Can add/update webjobs
> Extended to do the same for webapps
> -skipDirective – used to ignore certain files
> Typically web extension directories
> But also job.settings
> Flexibility on how to authenticate
> Publish setting
> Credentials
> Could call from cake or powershell or commandline
> Tip - Look in package/obj folder for some guidance
How did it go
August 17
Team City Agent time per service 33% saving – 90 secs to 60secs
Deploy down Time 15 mins to < 1 min
Web Endpoint downtime 15 min to 1 min (can be 0 with slots)
Overall Cost Savings Non-Prd 50% - Prd TBD
Compute Cost Savings Non-Prd 75% - Prd TBD
Intra Day Deployments 
August 17 #anazurestory @deekob
Let them eat Cake
> Cake is C# make – Common build/deploy platform
> Runs on Win / Linux and OS X
> Its CI system agnostic – ideal if you plan to migrate…
> Has basic OOB functions
> Can be extended by Open Source Addins – MsDeploy,
CakeAzure….
> Or C# std libraries
> Great for tying things together
August 17 #anazurestory @deekob
Cake Disclaimer…..
> The Addins can be immature
> Plenty of Bugs
> Low on functionality
> Don’t use Relative Paths – can pass in as args but
transform to absolute inside script
> There is a compile time penalty each invocation
> Calling powershell scripts from cake is fraught with
danger – return codes, errors …. Beware
> However using cake instead on PShell brought
deployment times down considerably
August 17 #anazurestory @deekob
Tip Time - Webjobs
> Make them start up faster
> "WEBJOBS_RESTART_TIME": "5", -default is 30 secs
> Use webjob.settings for granular control or over ride in appsettings
> Deploy them as singletons
> Change settings.job -> { "is_singleton": true }
> Stop and start them individually using API
> scm.azurewebsites.net/api/continuouswebjobs/{jobname}/stop
> Great when controlling deployments
> If running on multi instance App Service Plans
> They fall over
> They don’t all pin to one instance – round robin deploy behaviour
August 17 #anazurestory @deekob
Tip Time – WebApps
> Always use ARM ( Yes its obvious but…. )
> DR provisioning is so easy
> No longer afraid to tear it up and start again
> dependsOn – be careful ordering these
> Use awverify in your DNS records to test new
azurewebsites
> Trick to adding non SSL Certs
> Add the Cert then remove the SSL Binding
> The file system is shared between instances
> Avoid using it
> If you MUST then prevent file deadlocks by using
uniquenames…
August 17 #anazurestory @deekob
More Time for Tips??
> What deploy technique?
> REST, Pshell, Azure CLI, ARM
> Know resources.azure.com
> Invoke-AzureRmResourceAction
> Powershell wrapper to REST API
> Organise Resources in groups
> Cost consolidation, Convenience
> Any Others ?
Take away: PaaS can be
flexible. But better to
build/design the system to be
platform agnostic.
Questions ?
Thank you | readify.net

Contenu connexe

Tendances

Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWSGrant Ellis
 
Best Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes ServicesBest Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes ServicesQAware GmbH
 
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesTips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesBen Hall
 
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...Swapnil Dahiphale
 
.NET Developer Days - Launching Patterns for Containers
.NET Developer Days - Launching Patterns for Containers.NET Developer Days - Launching Patterns for Containers
.NET Developer Days - Launching Patterns for ContainersMichele Leroux Bustamante
 
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time....NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...Michele Leroux Bustamante
 
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADS
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADSKNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADS
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADSElad Hirsch
 
Making sense of containers, docker and Kubernetes on Azure.
Making sense of containers, docker and Kubernetes on Azure.Making sense of containers, docker and Kubernetes on Azure.
Making sense of containers, docker and Kubernetes on Azure.Nills Franssens
 
OMG Namespaces! | Raffaele Di Fazio
OMG Namespaces! | Raffaele Di FazioOMG Namespaces! | Raffaele Di Fazio
OMG Namespaces! | Raffaele Di FazioKCDItaly
 
JavaDay Lviv: Serverless Archtiectures
JavaDay Lviv: Serverless ArchtiecturesJavaDay Lviv: Serverless Archtiectures
JavaDay Lviv: Serverless ArchtiecturesAntons Kranga
 
Kubernetes: Container Orchestration for Production-grade People
Kubernetes: Container Orchestration for Production-grade PeopleKubernetes: Container Orchestration for Production-grade People
Kubernetes: Container Orchestration for Production-grade PeopleASPEX_BE
 
Making Sense Out of Amazon EC2 Container Service
Making Sense Out of Amazon EC2 Container ServiceMaking Sense Out of Amazon EC2 Container Service
Making Sense Out of Amazon EC2 Container ServiceSwapnil Dahiphale
 
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv Amazon Web Services
 
Red hat ansible automation technical deck
Red hat ansible automation technical deckRed hat ansible automation technical deck
Red hat ansible automation technical deckJuraj Hantak
 
Extend and build on Kubernetes
Extend and build on KubernetesExtend and build on Kubernetes
Extend and build on KubernetesStefan Schimanski
 
Monoliths to Microservices - Madhu - AWS - CC18
Monoliths to Microservices - Madhu - AWS - CC18Monoliths to Microservices - Madhu - AWS - CC18
Monoliths to Microservices - Madhu - AWS - CC18CodeOps Technologies LLP
 
Experts live2016 - Karim Vaes - end-to-end automation
Experts live2016 - Karim Vaes - end-to-end automationExperts live2016 - Karim Vaes - end-to-end automation
Experts live2016 - Karim Vaes - end-to-end automationKarim Vaes
 
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
(DVO305) Turbocharge YContinuous Deployment Pipeline with ContainersAmazon Web Services
 

Tendances (20)

Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWS
 
Best Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes ServicesBest Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes Services
 
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesTips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
 
ECS and ECR deep dive
ECS and ECR deep diveECS and ECR deep dive
ECS and ECR deep dive
 
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
 
.NET Developer Days - Launching Patterns for Containers
.NET Developer Days - Launching Patterns for Containers.NET Developer Days - Launching Patterns for Containers
.NET Developer Days - Launching Patterns for Containers
 
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time....NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...
 
Boot Loot
Boot LootBoot Loot
Boot Loot
 
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADS
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADSKNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADS
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADS
 
Making sense of containers, docker and Kubernetes on Azure.
Making sense of containers, docker and Kubernetes on Azure.Making sense of containers, docker and Kubernetes on Azure.
Making sense of containers, docker and Kubernetes on Azure.
 
OMG Namespaces! | Raffaele Di Fazio
OMG Namespaces! | Raffaele Di FazioOMG Namespaces! | Raffaele Di Fazio
OMG Namespaces! | Raffaele Di Fazio
 
JavaDay Lviv: Serverless Archtiectures
JavaDay Lviv: Serverless ArchtiecturesJavaDay Lviv: Serverless Archtiectures
JavaDay Lviv: Serverless Archtiectures
 
Kubernetes: Container Orchestration for Production-grade People
Kubernetes: Container Orchestration for Production-grade PeopleKubernetes: Container Orchestration for Production-grade People
Kubernetes: Container Orchestration for Production-grade People
 
Making Sense Out of Amazon EC2 Container Service
Making Sense Out of Amazon EC2 Container ServiceMaking Sense Out of Amazon EC2 Container Service
Making Sense Out of Amazon EC2 Container Service
 
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
 
Red hat ansible automation technical deck
Red hat ansible automation technical deckRed hat ansible automation technical deck
Red hat ansible automation technical deck
 
Extend and build on Kubernetes
Extend and build on KubernetesExtend and build on Kubernetes
Extend and build on Kubernetes
 
Monoliths to Microservices - Madhu - AWS - CC18
Monoliths to Microservices - Madhu - AWS - CC18Monoliths to Microservices - Madhu - AWS - CC18
Monoliths to Microservices - Madhu - AWS - CC18
 
Experts live2016 - Karim Vaes - end-to-end automation
Experts live2016 - Karim Vaes - end-to-end automationExperts live2016 - Karim Vaes - end-to-end automation
Experts live2016 - Karim Vaes - end-to-end automation
 
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
 

Similaire à Upgrade my PaaS

Introduction to Cloud Computing (New)
Introduction to Cloud Computing (New)Introduction to Cloud Computing (New)
Introduction to Cloud Computing (New)Chathuranga Bandara
 
Options for running Kubernetes at scale across multiple cloud providers
Options for running Kubernetes at scale across multiple cloud providersOptions for running Kubernetes at scale across multiple cloud providers
Options for running Kubernetes at scale across multiple cloud providersSAP HANA Cloud Platform
 
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석 [판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석 Amazon Web Services Korea
 
IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...
IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...
IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...DataArt
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
Simplify your datacenter – IT Automation
 Simplify your datacenter – IT Automation Simplify your datacenter – IT Automation
Simplify your datacenter – IT AutomationATIX AG
 
Case Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWSCase Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWSPatrick Bolduan
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseAraf Karsh Hamid
 
O365Engage17 - Azure 101 terminology
O365Engage17 - Azure 101 terminologyO365Engage17 - Azure 101 terminology
O365Engage17 - Azure 101 terminologyNCCOMMS
 
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...Amazon Web Services
 
Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)Marcel Dempers
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
Treasure Data and OSS
Treasure Data and OSSTreasure Data and OSS
Treasure Data and OSSN Masahiro
 
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft AzureGDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft AzureAndriy Deren'
 
Why Scale Matters and How the Cloud is Really Different (at scale)
Why Scale Matters and How the Cloud is Really Different (at scale)Why Scale Matters and How the Cloud is Really Different (at scale)
Why Scale Matters and How the Cloud is Really Different (at scale)Amazon Web Services
 
Build an Awesome CI/CD with Jenkins
Build an Awesome CI/CD with JenkinsBuild an Awesome CI/CD with Jenkins
Build an Awesome CI/CD with JenkinsSamsul Ma'arif
 
DevOps and the Future of Enterprise Security
DevOps and the Future of Enterprise SecurityDevOps and the Future of Enterprise Security
DevOps and the Future of Enterprise SecurityPriyanka Aash
 

Similaire à Upgrade my PaaS (20)

Introduction to Cloud Computing (New)
Introduction to Cloud Computing (New)Introduction to Cloud Computing (New)
Introduction to Cloud Computing (New)
 
Options for running Kubernetes at scale across multiple cloud providers
Options for running Kubernetes at scale across multiple cloud providersOptions for running Kubernetes at scale across multiple cloud providers
Options for running Kubernetes at scale across multiple cloud providers
 
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석 [판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
 
IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...
IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...
IT Talk «Microservices & Serverless Architectures», Alexander Chichenin (Solu...
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Simplify your datacenter – IT Automation
 Simplify your datacenter – IT Automation Simplify your datacenter – IT Automation
Simplify your datacenter – IT Automation
 
Case Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWSCase Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWS
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-Premise
 
O365Engage17 - Azure 101 terminology
O365Engage17 - Azure 101 terminologyO365Engage17 - Azure 101 terminology
O365Engage17 - Azure 101 terminology
 
Sky High With Azure
Sky High With AzureSky High With Azure
Sky High With Azure
 
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
 
Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
AWS Cloud Technology And Future of Faster Modern Architecture
AWS Cloud Technology And Future of Faster Modern ArchitectureAWS Cloud Technology And Future of Faster Modern Architecture
AWS Cloud Technology And Future of Faster Modern Architecture
 
Treasure Data and OSS
Treasure Data and OSSTreasure Data and OSS
Treasure Data and OSS
 
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft AzureGDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure
 
Why Scale Matters and How the Cloud is Really Different (at scale)
Why Scale Matters and How the Cloud is Really Different (at scale)Why Scale Matters and How the Cloud is Really Different (at scale)
Why Scale Matters and How the Cloud is Really Different (at scale)
 
Build an Awesome CI/CD with Jenkins
Build an Awesome CI/CD with JenkinsBuild an Awesome CI/CD with Jenkins
Build an Awesome CI/CD with Jenkins
 
DevOps and the Future of Enterprise Security
DevOps and the Future of Enterprise SecurityDevOps and the Future of Enterprise Security
DevOps and the Future of Enterprise Security
 

Dernier

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Dernier (20)

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

Upgrade my PaaS

  • 1. We wish to acknowledge the traditional custodians of the land we are meeting on, the Whadjuk (Perth region) people. We respect their continuing culture and the contribution they make to the life of this city and this region. This meeting is being held on the traditional lands of the Noongar people. We acknowledge that this meeting is being held on Aboriginal land and recognise the strength, resilience and capacity of Noongar people in this land. Welcome to Country
  • 2. 17 August 2017 | Derek Bingham Tweet: @deekob
  • 3. 01 The What and Why of PaaS 02 Azure Compute PaaS Options 03 Current flavours of the month 04 Case Study – Upgrade my PaaS 05 Steps to solve 06 Tips and Tricks 07 Questions 08 #beertime
  • 4. What is PaaS? #anazurestory @deekob Application Data O/S Virtualisation Servers Runtime Storage Networking Bare metal Application Data O/S Virtualisation Servers Runtime Storage Networking IaaS Application Data O/S Virtualisation Servers Runtime Storage Networking PaaS Application Data O/S Virtualisation Servers Runtime Storage Networking SaaS
  • 5. #anazurestory @deekob PaaS as a continuum Showing AWS/Azure compute IaaS (Control / flexibility) PaaS (Simplicity / ↓ maintenance / ↓ h/w access) What is PaaS? Azure VMs Amazon EC2 Azure Container Service EC2 Container Service Azure Service Fabric Service Fabric on VMs Azure Functions AWS Lambdas Azure Container Instances Azure Logic Apps AWS Batch Azure Batch Azure App Service Azure App Service Environments Azure Cloud Services AWS Elastic Beanstalk Azure VM Extensions Azure VM Scale Sets Amazon Lightsail Azure VM Images AWS Auto Scaling
  • 7. August 17 #anazurestory @deekob > Thin abstraction over Underlying VM > Can RDP / SSH > Can install 3rd party binaries on VM > Applications are split into Roles > Web Role – Website running on IIS > Worker Role – Background standalone applications > Scales up and out > Supports HA and Geo Redundancy > But any new service deployment can take 10-15 mins to start > Each new service needs a new cloud service – needs a new VM - $$ Cloud Services – PaaSv1
  • 8. August 17 #anazurestory @deekob App Services – PaaS V2 > Web Apps > Web Sites , Web Jobs > Mobile Apps > The ‘backend’ for your Mobile apps – data , content, security.. > Logic Apps > Workflow, integrations > Api Apps > Exposing your API using REST endpoints
  • 9. August 17 #anazurestory @deekob Web Apps > Runs under IIS > Uses Shared resources – App Service Plan > Can scale automatically up and out > You can hook into GitHub and other source control tools to set up CD > You don’t get access to the underlying OS instance so there is less flexibility > The first PaaS you’ll build in Azure
  • 10. August 17 #anazurestory @deekob Azure Web Jobs > For running background tasks > OnDemand – Queues, Blobs, storage… > Scheduled > Continuous > Runs in same context as WebApps > Watch out > Scale with the containing instance
  • 11. August 17 #anazurestory @deekob Service Fabric > Azure ‘Microservices Platform’ ™ > Distributed services platform > The Service Fabric Cluster… > Runs on linux / windows / onPrem / Azure / AWS > Runs 30% of ALL Azure compute > Supports deployment of existing executables / .Net Core binaries > Run Docker inside cluster > Overkill for a simple website and a lot to get your head around.. > Both program and deployment model > But one to watch !! > especially with container integration
  • 12. August 17 #anazurestory @deekob > Develop Functions in C#, Node.js, F#, Python, PHP … more > Schedule event-driven tasks across services > Expose Functions as HTTP API endpoints > Scale based on demand > Just like WebJobs…. Azure Functions / FaaS / Serverless (WebJobs 2.0)
  • 13. August 17 So Why Functions? > Run in consumption plan > Timeout after 5 mins – short running process > Pay for what you use( memory and cycles ) – no heavy lifting > Run in AppService Plan > A WebJob as a method > Flexible – simple deploy from Git > Still waiting on VS integration – Released Yesterday > But can use VSCode – so its ok..
  • 14. Let’s have a look…
  • 15. August 17 Azure Batch > Job Scheduling as a Service > Large Scale Compute !! > Monte Carlo Estimations > Control VM Pool size (100 – 1000)s > Plumbing all done for you > Controlling Containers across VMs > Scaling inside VM’s > Runs on Scale Sets > Uses Kubernetes and Docker for orchestration Container Services
  • 16. August 17 #anazurestory @deekob Container Instance (Preview) > Containers as a Service ( CaaS ) > Single Container deployed billed by second ( like Functions ) > No infrastructure to provision > No cluster orchestration > Currently Linux only – Windows coming > Can connect to Kubernetes for Orchestration > VM based containers for predicable work loads > On demand Container Instance for fast bursts and scaling > #mikedrop
  • 17. August 17 #anazurestory @deekob Containers, Containers, Confusion…. IF YOU'RE LOOKING FOR THIS... USE THIS Scale and orchestrate containers using Kubernetes, DC/OS or Docker Swarm Container Service Easily run containers on Azure with a single command Container Instances Store and manage container images across all types of Azure deployments Container Registry Develop microservices and orchestrate containers on Windows or Linux Service Fabric Deploy web applications on Linux using containers App Service Run repetitive compute jobs using containers Batch
  • 18. Take away: PaaS options are many and varied – choose wisely.
  • 20. CASE STUDY Cloud Services Migration Brief: Op-Ex costs are blowing out on Azure resources. Can they be consolidated? and if so how? Problem Statement: Running system in Azure, that has been deployed and running well for 2+ years. Due to organic growth in application services, current PaaS platform isn’t cost effective. Find a better more cost efficient PaaS platform and migrate to it….. Duration: Four Months August 17 #anazurestory @deekob
  • 21. August 17 #anazurestory @deekob Rough Architecture….Client Client Client Command Processors (WebRole) Event Hub (WebRole) S E R V I C E x100 (Worker Roles) Gateway Read Models Commands Event Store
  • 22. August 17 #anazurestory @deekob Worker Role Event Store Read Model The Humble Read Model Populator
  • 23. August 17 #anazurestory @deekob Some Numbers > Number of Could Services – 123 > Number of C# projects – 729 > Number of Team City Agents – 21 > Number of .Net Solutions – 130 > Time to deploy 1 Service – 15 mins
  • 24. August 17 #anazurestory @deekob The Challenge > Choose a new PaaS platform > Migrate 130 + solutions > Support intra day deployments > At least beat 15 mins outage > Maintain support to existing ALM > Leverage existing Team City Agents > Support scaling at Micro and Macro levels > In under 4 months
  • 25. August 17 #anazurestory @deekob Where to start? > Respect your patterns › https://docs.microsoft.com/en-us/azure/architecture/patterns/compute-resource-consolidation > Compute partitioning > So what can I partition ? > WebRole > WorkerRole > What PaaS platforms would support this? > Service Fabric – preferred MSFT option > WebApps/WebJobs
  • 26. August 17 #anazurestory @deekob Find THE Platform ? > Spike two platforms that could be considered ‘best fit’ > Application Services / Web Apps > Service Fabric > Time constraints ruled out spiking more > Containers and Functions would have also been reasonable options > Build an Worker Role replacement in each platform > Biggest risk as there are > 100 > Validate it against criteria > Good vertical slice
  • 27. August 17 #anazurestory @deekob Spike Criteria Web App Service Fabric Perfect Architectural replacements No Yes Can control singleton service instances Yes Yes Easy to Scale Yes Yes Almost instant deployments Yes Yes Team City deployments Yes Yes Minimal code change required to each solution Yes No Well documented and understood set of tooling Yes No Existing build and deployment pipeline can be leveraged, so deployments to new environments can be 'feature' toggled Yes Yes Results
  • 28. August 17 #anazurestory @deekob Proposed Solution > Worker Roles -> Web Jobs > Can we find a cross cutting technique ? > Limit code churn > Reduce downtime > Deploy into a compute pool > Web Roles -> Web Apps > Apply same cross cutting technique > Standardise the entire migration approach
  • 29. August 17 > Benefits > No / Limited actual code change > Changes limited to build and deployment pipeline > Limited regression testing > Can Stand up services side by side / new and old > Maybe actually deliver on time Solution Risks / Benefits > Risks > Technical cross cutting may not be possible > Will need to change 100 + solutions > Extensive testing required > Will take a loooooong time….
  • 30. August 17 #anazurestory @deekob Solution – Part 1 - Use the folder structure > Web Jobs live in here too sitewwwrootApp_Data > Web App Directory structure is static sitewwwrootApp_Datajobscontinous{job name} sitewwwrootApp_Datajobsscheduled{job name} > Any files below job framework will try and run > .cmd,.bat,.exe,.ps1,.sh,.php,.py,.js,.jar
  • 31. August 17 #anazurestory @deekob Solution – Part 2 - Fool the runtime APP Platform Runtime APP Platform Runtime Run APP APP Run https://github.com/deekob/OnionConsole > Cloud Services Worker Roles Entry Points > OnStart() > Run() > Fool an application that its running on Cloud Services? > Onion Console was born.. > Simple console app > Runs from the application binary directory > Finds the Cloud Server entry points > Calls them
  • 32. August 17 #anazurestory @deekob Solution - Part 3 - Configuration migration .csfg app.config App Settings WorkerRole -> WebJob <Setting name="EventHub.Location" value="" /> <add key="="EventHub.Location" value="" /> Azure Cloud Service Web Job > Transform CloudSevice config > Add to app.config of onion > User config inheritance > Apply for all role types Microsoft.WindowsAzure.ConfigurationManager
  • 33. August 17 #anazurestory @deekob Solution – Part 4 - App Service Plans > Organise your applications/services into ‘Compute Pools’ > Long running continuous Jobs > On Demand Jobs > Using ARM template to provision > Create a ‘Headless’ WebApp for your Web Job pool > Removes risk of Web Request flooding your Job Pool > Consider Use ‘Per App’ scaling > Defaults to scale of AppService Plan > But can over ride at the App Level > Watch out on Swap Slots > They consume resources from same App Service Plan
  • 34. August 17 #anazurestory @deekob Solution – Part 5 - Msdeploy > Can add/update webjobs > Extended to do the same for webapps > -skipDirective – used to ignore certain files > Typically web extension directories > But also job.settings > Flexibility on how to authenticate > Publish setting > Credentials > Could call from cake or powershell or commandline > Tip - Look in package/obj folder for some guidance
  • 35. How did it go August 17 Team City Agent time per service 33% saving – 90 secs to 60secs Deploy down Time 15 mins to < 1 min Web Endpoint downtime 15 min to 1 min (can be 0 with slots) Overall Cost Savings Non-Prd 50% - Prd TBD Compute Cost Savings Non-Prd 75% - Prd TBD Intra Day Deployments 
  • 36. August 17 #anazurestory @deekob Let them eat Cake > Cake is C# make – Common build/deploy platform > Runs on Win / Linux and OS X > Its CI system agnostic – ideal if you plan to migrate… > Has basic OOB functions > Can be extended by Open Source Addins – MsDeploy, CakeAzure…. > Or C# std libraries > Great for tying things together
  • 37. August 17 #anazurestory @deekob Cake Disclaimer….. > The Addins can be immature > Plenty of Bugs > Low on functionality > Don’t use Relative Paths – can pass in as args but transform to absolute inside script > There is a compile time penalty each invocation > Calling powershell scripts from cake is fraught with danger – return codes, errors …. Beware > However using cake instead on PShell brought deployment times down considerably
  • 38. August 17 #anazurestory @deekob Tip Time - Webjobs > Make them start up faster > "WEBJOBS_RESTART_TIME": "5", -default is 30 secs > Use webjob.settings for granular control or over ride in appsettings > Deploy them as singletons > Change settings.job -> { "is_singleton": true } > Stop and start them individually using API > scm.azurewebsites.net/api/continuouswebjobs/{jobname}/stop > Great when controlling deployments > If running on multi instance App Service Plans > They fall over > They don’t all pin to one instance – round robin deploy behaviour
  • 39. August 17 #anazurestory @deekob Tip Time – WebApps > Always use ARM ( Yes its obvious but…. ) > DR provisioning is so easy > No longer afraid to tear it up and start again > dependsOn – be careful ordering these > Use awverify in your DNS records to test new azurewebsites > Trick to adding non SSL Certs > Add the Cert then remove the SSL Binding > The file system is shared between instances > Avoid using it > If you MUST then prevent file deadlocks by using uniquenames…
  • 40. August 17 #anazurestory @deekob More Time for Tips?? > What deploy technique? > REST, Pshell, Azure CLI, ARM > Know resources.azure.com > Invoke-AzureRmResourceAction > Powershell wrapper to REST API > Organise Resources in groups > Cost consolidation, Convenience > Any Others ?
  • 41. Take away: PaaS can be flexible. But better to build/design the system to be platform agnostic.
  • 43. Thank you | readify.net