Deploying and Operating Cloud Native.NET apps Jenny McLaughlin, Sr. Platform Architect Cornelius Mendoza, Sr. Platform Architect Pivotal
Cloud Native Practices Continuous Delivery DevOps Microservices
The promise of Cloud Native was to deliver both developer productivity and operational efficiencies Microservices Architecture Modern Application Frameworks Containers & Orchestration Twelve-Factor Principles Infrastructure Independence Continuous Delivery Shift from Silo IT to DevOps Automated & Proactive Security Cloud Native Platform
It is all comes down to business outcomes (the gold piece of the asset) Your Code /Business Logics matter! Getting away from deployment methodologies, make my.net apps more cloud native instead. Write code so it is not platform specific. Don t write/modernize to Azure, don t write to AWS, do write to CF. If you are writing your business logic to a specific cloud then you are building next generation legacy systems. Make your code 12 factor and leverage cloud native patterns. Developer Productivity Accelerate feedback loops by improving delivery velocity Focus on business problems, not infrastructure Give developers the tools and frameworks to build resilient apps
Challenges with any platform Day 1 - Deploy Multi-cloud Provide a reliable and smooth experience for any cloud including private cloud. Deployment steps How many cli commands and how long does it take to deploy your.net apps. Polyglot A polyglot platform enhances developer productivity by leveraging services written in different languages. Application Framework Accelerate the adoption of cloud native patterns Day 2 - Operate Security Patches Patching platform components with thousands of apps running should feel normal. Scaling Seamlessly scale platform components to accommodate changing demand. Upgrades. How do you roll out new versions of the platform with the lights on? Blue green Deployment Zero downtime and less risks by running two identical production environments.
Deployment strategies Serverless Functions Application Platform Higher flexibility and less enforcement of standards Container Orchestrator Lower development complexity and higher operational efficiency IaaS Hardware
Options to deploy and operate Cloud Native.NET Apps Windows IIS servers on premise Virtual Machines in Cloud (AWS, Azure, GCP) AWS Elastic Beanstalk (VM model) Azure Application Service (VM model) Containers - Docker containers. Azure Service Fabric. Apprenda - CF platform built containers
What do you want to be responsible for? Platform-Built Developer brings customized app Developer-Built Developer brings customized app Platform provides standard runtime Developer brings runtime container image Platform provides fixed OS container image Developer brings container OS image Platform provides fixed host OS Kernel App container Platform provides fixed host OS Kernel
Deploying.NET apps? It doesn t have to be hard Traditional.NET deployment on VMs Provision a VM Configure IP, DNS Configure firewall Windows updates, reboot Install IIS Deploy application Configure app pool Configure SSL Configure load balancer ~$ cf push Cloud Foundry
Deploying.NET apps? It doesn t have to be hard.net deployment on Docker Containers Write Docker file Run Docker build Manage network ports inside Docker Root file system access Embed IIS Embed application code Configure SSL Configure load balancer Configure connections to services Deploy Docker ~$ cf push Cloud Foundry
Deploying.NET apps? It doesn t have to be hard.net deployment on AWS Elastic Beanstalk Install Web Deploy Use Toolkit for Visual Studio Configure URL Configure EC2 Instance Choose Key pair Configure VPC, ELB Configure Rolling Deployments Configure IIS settings Configure app pool ~$ cf push Cloud Foundry
Deploying.NET apps? It doesn t have to be hard.net deployment on Azure Application Service Publish the app to Azure in Visual Studio Login to Azure Create an App service Create a resource group Create an App Service plan Configure URL Create and publish the app ~$ cf push Cloud Foundry
Day 2 operation Repairing application vulnerabilities, Repaving the platform and Rotating credentials foster stronger security posture - manual or automated. Managing networking/storage inside of containers as opposed to letting the platform take care of things at the application level. 4 levels of High Availability : Application, Process, Virtual Machine, and Available Zone Blue-green deployment No downtime patching and upgrading
Operating.NET apps? It doesn t have to be hard 15
Is my team really ready for deploying and operating developer-built containers yet? Developers Cloud Technologies How to train developers to understand cloud technologies including 12 Factors? Network and Security How to help developers understand network, storage and security in a Docker container? Operators Interdependence Do operators understand the workloads they are managing?. Patching and upgrading Are operators able to manage, support and patch different flavors and versions of containers OS, runtime and security? New Tools How to train developers on new tools such as Docker build and CLIs? Cost of building containers Do developers have time to spend building and managing containers on a regular basis? High Availability Do operators have 24X7 capabilities to provide 4 levels of HA? On-demand provisioning capabilities Do operators have time to meet all developers provision needs?
Distributed Systems are Hard! The Steeltoe Framework is Designed for.net Microservice Architectures Steeltoe
Success Stories
Cloud Native Maturity Model Cloud Native Cloud Resilient Functions/Microservices architecture API-first design Event driven Fault-tolerant and resilient design Cloud-agnostic runtime implementation Bundled metrics and monitoring Proactive failure testing Work up from #2 to #4 at your own pace Cloud Friendly 12 Factor App methodology Horizontally scalable Leverages platform for high availability Legacy Apps Cloud Ready No permanent disk access Self-contained application Platform-managed ports and networking Consumes platform-managed backing services Start here
If you are looking for business outcomes CF is the best place to run.net workloads Leverage Steeltoe framework Focus on business values and let the platform handle the rest Pivotal Confidential