Application Deployment

Similar documents
Application Deployment. Softwaretechnik II 2012/13 Thomas Kowark

How to Keep UP Through Digital Transformation with Next-Generation App Development

Cloud Computing 4/17/2016. Outline. Cloud Computing. Centralized versus Distributed Computing Some people argue that Cloud Computing. Cloud Computing.

The Long Road from Capistrano to Kubernetes

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

Roles. Ecosystem Flow of Information between Roles Accountability

Cloud Computing Technologies and Types

UP! TO DOCKER PAAS. Ming

DevOps and Continuous Delivery USE CASE

DevOps Using VSTS and Azure

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

COMP6511A: Large-Scale Distributed Systems. Windows Azure. Lin Gu. Hong Kong University of Science and Technology Spring, 2014

Think Small to Scale Big

Practical Guide to Platform as a Service.

Lecture 09: VMs and VCS head in the clouds

RA-GRS, 130 replication support, ZRS, 130

Security as Code: The Time is Now. Dave Shackleford Founder, Voodoo Security Sr. Instructor, SANS

DevOps Anti-Patterns. Have the Ops team deal with it. Time to fire the Ops team! Let s hire a DevOps unit! COPYRIGHT 2019 MANICODE SECURITY

Technical Comparison Sheet: ez Platform Cloud vs Other Hosting Approaches

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

NE Infrastructure Provisioning with System Center Virtual Machine Manager

Docker CaaS. Sandor Klein VP EMEA

Cloud Computing. Technologies and Types

Ruby in the Sky with Diamonds. August, 2014 Sao Paulo, Brazil

NCTA-Certified CloudOps Specialist (NCO) Exam NCO-110

Important DevOps Technologies (3+2+3days) for Deployment

I keep hearing about DevOps What is it?

Course Overview This five-day course will provide participants with the key knowledge required to deploy and configure Microsoft Azure Stack.

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

[MS10992]: Integrating On-Premises Core Infrastructure with Microsoft Azure

Manage MySQL like a devops sysadmin. Frédéric Descamps

Continuous integration & continuous delivery. COSC345 Software Engineering

Continuous Integration and Delivery with Spinnaker

Azure Highlights. Randy Pagels Sr. Developer Technology Specialist US DX Developer Tools - Central Region

Please give me your feedback

Migrating Enterprise Applications to the Cloud Session 672. Leighton L. Nelson

PUBLIC AND HYBRID CLOUD: BREAKING DOWN BARRIERS

HP APPs v.12 Solutions for Dev-Ops

No Limits Cloud Introducing the HPE Helion Cloud Suite July 28, Copyright 2016 Vivit Worldwide

Roles and Responsibilities on DevOps Adoption

Cloud Computing: The Next Wave. Matt Jonson Connected Architectures Lead Cisco Systems US and Canada Partner Organization

Microservice Deployment. Software Engineering II Sharif University of Technology MohammadAmin Fazli

Enabling Agile Database Development with Toad

Atos Canopy Orchestrated Hybrid Cloud. Mark Nouris - Atos Head of Cloud Michael Kollar Head of Cloud engineering & TIC

ArcGIS in the Cloud. Andrew Sakowicz & Alec Walker

platform Development Process Optimization For Drupal centric projects

Welcome to the. Migrating SQL Server Databases to Azure

Title DC Automation: It s a MARVEL!

FROM VSTS TO AZURE DEVOPS

Development and Operations: Continuous Delivery in Practice

DevOps Course Content

Introduction To Cloud Computing

DevOps Tooling from AWS

Genomics on Cisco Metacloud + SwiftStack

Configuring and Operating a Hybrid Cloud with Microsoft Azure Stack

Deep Dive on AWS CodeStar

Infrastructure Provisioning with System Center Virtual Machine Manager

Industry-leading Application PaaS Platform

EY Norwegian Cloud Maturity Survey Current and planned adoption of cloud services

Managing and Auditing Organizational Migration to the Cloud TELASA SECURITY

Visual Studio Team Services

Accelerate your Software Delivery Lifecycle with IBM Development and Test Environment Services

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

Modelos de Negócio na Era das Clouds. André Rodrigues, Cloud Systems Engineer

Table of Contents 1.1. Introduction. Overview of vsphere Integrated Containers 1.2

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction

Cloud solution consultant

Implementing Microsoft Azure Infrastructure Solutions

Building a Data-Friendly Platform for a Data- Driven Future

Automate the Lifecycle of IT

Cloud Essentials for Architects using OpenStack

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Cloud solution consultant

Automated Deployment of Private Cloud (EasyCloud)

Speeding Up Infrastructure Provisioning with CloudForms. Jason Dillaman Principal Architect, Red Hat Nick Lane Consultant, Red Hat

Patching and Updating your VM SUSE Manager. Donald Vosburg, Sales Engineer, SUSE

Beyond 1001 Dedicated Data Service Instances

Docker Universal Control Plane Deploy and Manage On-Premises, Your Dockerized Distributed Applications

Transform Your Business with Hybrid Cloud

Table of Contents 1.1. Overview. Containers, Docker, Registries vsphere Integrated Containers Engine

Automated Deployment of Private Cloud (EasyCloud)

Windows Azure Services - At Different Levels

CHEM-E Process Automation and Information Systems: Applications

Be smart. Think open source.

We are ready to serve Latest Testing Trends, Are you ready to learn?? New Batches Info

Test Automation Strategies in Continuous Delivery. Nandan Shinde Test Automation Architect (Tech CoE) Cognizant Technology Solutions

CompTIA CV CompTIA Cloud+ Certification. Download Full Version :

Tech Talk Nutanix Calm. Greg Smith, VP Product Marketing Gil Haberman, Director of Product Marketing

Introduction to Cloud Computing and Virtual Resource Management. Jian Tang Syracuse University

Distributed Systems. 31. The Cloud: Infrastructure as a Service Paul Krzyzanowski. Rutgers University. Fall 2013

Cloud Computing Lecture 4

There Should be One Obvious Way to Bring Python into Production. Sebastian Neubauer

Taming the Multi-Cloud With Simplicity and Openness. Minh Dang Cisco Systems Vietnam 2018 January

BEYOND CLOUD HOSTING. Andrew Melck, Regional Manager DACH,

Cloud & AWS Essentials Agenda. Introduction What is the cloud? DevOps approach Basic AWS overview. VPC EC2 and EBS S3 RDS.

The Seven Steps to Implement DataOps

Agile Platform 6.0 System Requirements

The Post-Cloud. Where Google, DevOps, and Docker Converge

Data Centers and Cloud Computing

Transcription:

Application Deployment Software Engineering II WS 2018/19 Christoph Matthies (christoph.matthies@hpi.de) Enterprise Platform and Integration Concepts Datacenter Work by Leonardo Rizzi (CC BY-SA 2.0)

Agenda 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum 2

Development vs. Operations Dev A Development Operations Development Working Copy Users Repository All Code Production Current Release Development Working Copy Dev B Code Build Development Data Test Data Production Data 3

Development & Operations Problems Software needs to be operated Developers vs. Admins Short deployment cycles Maintain quality standards DevOps Formalized process for deployment Focus on communication, collaboration, and integration between Dev and Ops Agile DevOps Customer Devs Admins Agile for deployment 4

Not DevOps Dev A Development Operations Development Working Copy Users Repository All Code Production Current Release Development Working Copy Dev B Code Build Development Data Test Data Production Data 5

Terminology Release Planned state of the application Set of requirements Examples Next big version with new shiny features Urgent hotfix Anything in-between Version Could be anything A release has a version number 6

Terminology Build Attempt to implement a release Snapshot of application Often the output of the build tool Not: the build script/tool/process Version number is <Release Number>.<Build Number> 7

Terminology Environment A system on which the application can be deployed and used To promote To deploy a build on the next environment To release To promote a build to production Thereby finishing the release 8

Overview of Environments Development managed by developers Development Where the developers work One per developer (if possible) Integration Runs all tests A try-out version Operations managed by admins Staging Clone of production system Final rehearsal Production The live system Failures are expensive here Quality Assurance Professional manual testing 9

Example Release 3.7 Build 5 Build 5 Integration Quality Assurance Staging Production Build 2 10

Example Build 67 8 Developers changing Code Release 3.7 Build 75 Build 5 Build 5 Integration Quality Assurance Staging Production Build 2 11

Workflow Define Release Change Code Assemble Build Reject Promote & Promote Test & Test Test Accept Release 12

DevOps Dev A Development Operations Development Working Copy Project Team/ Project Lead Quality Assurance Admins Users Repository All Code Integration Latest Build Quality Assurance Latest Build/ Release Candidate Staging Current Release/ Release Candidate Production Current Release Development Working Copy Dev B Code Build Development Data Test Data Production Data 13

Implications Builds are immutable If changed, previous testing was pointless Even the smallest change has to go through all environments Many systems required Each environment has to be maintained Automation? Deployment overhead Manual steps are potential for human failure Automation? Remainder of this lecture 14

Agenda 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum 15

Application Hosting Options Choice of hosting options is driven by a variety of parameters Initial setup effort, cost, and required expertise Operational costs and effort Targeted service level agreements (SLAs) Legal considerations (data privacy, liability, etc.) Low Effort Little Control High Effort High Control PaaS IaaS Dedicated Hosting Own Datacenter 16

Platform as a Service (Paas) Providers deliver OS, execution environment, database, web server, monitoring, etc. Advantages Minimal effort and knowledge required for setup Only platform development knowledge (e.g. Python, Ruby) needed, no need for hardware / OS maintenance Possibility to scale up quickly and easily Disadvantages Usually fixed environment with little variation points Provider SLA targets might differ from yours, e.g. downtime, response times Limited technical support Examples: Heroku, Azure Compute, Google App Engine 17

Infrastructure as a Service (IaaS) Providers deliver virtual private servers (VPS) with requested configuration Setup of execution environment, database servers, etc. is up to customers Advantages Flexibility regarding execution environment Avoid management of underlying hardware Dynamic on-demand scaling of resources Disadvantages Server administration know-how and efforts required It s still a VM: Potential performance drops, Disk I/O, etc. Examples: Amazon EC2, Google Compute Engine, Rackspace Cloud, DigitalOcean 18

Dedicated Hosting Providers allocate dedicated hardware, classical approach Advantages Complete control over server, down to bare metal, full power always available No virtualization-related performance issues More control over network configuration Dedicated SLAs Disadvantages (compared to Iaas) No easy scaling of resources Administration efforts for servers, e.g. monitor disk failures Examples: Hetzner, OVH, Rackspace, Host Europe 19

Own datacenter You host your own servers Advantages Complete control over data, security, operations, network etc. Custom designed servers possible Add cabinets in available space with low cost Disadvantages Huge upfront costs, e.g. space, cooling, fiber, hardware Expanding the space of the datacenter is expensive Provide around the clock support, monitoring, personnel, etc. Not feasible for small companies Examples: Google, Facebook 20

Agenda 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup Virtualization Provisioning 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum 21

Setting up an Environment Main challenges in preparing infrastructure: Minimize the effort required to repeatedly setup identical execution environments Without relying on administration gurus Solutions: DevOps, i.e. a strong collaboration between the development and the operations team A strong bias towards automation 22

Where to Start With "Deploying"? Hosted solutions aren't always feasible for initial experiments Maintaining local installs of server stacks in different versions can get cumbersome Development vs. production environment differences result in "it works on my machine" problems Don't want to force all developers to use same development environment (e.g. choice of OS) Possible solution: VirtualBox + Vagrant (https://www.vagrantup.com/) "Deploy" to a virtual machine on your local OS for development http://code.tutsplus.com/tutorials/vagrant-what-why-and-how--net-26500 23

Agenda 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup Virtualization Provisioning 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum 24

Next Step: Automate VM Configuration Virtualization software provides a VM. Provisioning tools configure it, e.g. install required software. Why not provision manually? Error prone, repetitive tasks Documentation has to be kept up-to-date Explicit knowledge transfer required if Admin changes One provisioning tool example: Chef (http://chef.io, https://github.com/chef/chef) Formalize software install and configuration state into recipes Recipes are shared (https://supermarket.chef.io/cookbooks) Ensure software is installed based on dependencies Ensure that files, packages, and services are in the prescribed state Common alternative: Puppet (https://puppetlabs.com/) 25

Provisioning Summary Create your VM, e.g. describe it with Vagrant. Using provisioning tools, you can: Define the required packages for all required servers Install and configure necessary services Create the directory structure for your application Create custom configuration files (e.g., database.yml) Not touched here but also possible: Use templates to create different files based on variables Environments (staging vs. production) Central management of configuration files that are automatically transferred to clients 26

Agenda 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum 27

Environment is set How to deploy? Necessary steps after the server is configured: Checkout code changes Update your dependencies (i.e. gems) Run database migrations, restart application servers Optional: Restart index servers, setup new Cron jobs, etc. Remember: Automation! Easiest: Travis CI supports deploying to many hosting providers (http://docs.travis-ci.com/user/deployment/) Deploy after all the tests pass Alternative: Capistrano (https://github.com/capistrano/capistrano) Prepares the server for deployment (possibly using provisioning tools) Deploy the application as updates are made 28

Deployment with Travis CI Travis Continuous Integration and Deployment Workflow: tests are run optional steps 1. before_install 2. install 3. before_script 4. script 5. after_success or after_failure 6. after_script 7. before_deploy 8. deploy 9. after_deploy A non-zero exit-status is these phases means the build is marked as failed. The build is not deployed to the hosting provider. Otherwise it is deployed in the deploy step. A custom after_success step can be used to deploy to own servers (http://docs.travis-ci.com/user/deployment/custom/) http://docs.travis-ci.com/user/build-lifecycle/ 29

Agenda 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum 30

Monitoring your servers and application Keep an eye on server health and applications: Get alerts when components fail or exceed predefined thresholds Examples: Uptime Robot HTTP GET / ping every 5 mins (https://uptimerobot.com/) Nagios Monitor infrastructure, down to switches and services (http://nagios.org) Monitor application errors and performance bottlenecks: Monitor errors that happen at runtime, discovered by users Notifications upon application errors, slow downs Good idea: Protocols for error fixing! Examples: Errbit Collect and organize errors (https://github.com/errbit/errbit) New Relic Performance monitoring, response times, SQL (http://newrelic.com/) 31

Agenda 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum 32

Deploying 50 times a day? Continuous Delivery Advantages: Users get a sense of something happening frequently, shorter feedback loop Business value of features immediately present Deploy scripts used often, less likely to contain errors Reduced amount of code changes per release faster fixes, less downtime Prerequisites/Disadvantages: Only feasible with extensive set of good tests Tests / deployment need to run fast (Continuous Integration) Additional training for developers (DevOps) required May not be feasible for applications that require planning or long-term support (e.g. operating systems) 33

Continuous Deployment vs. Scrum How do 50 deployments a day fit into Scrums notion of Sprints? Some ideas (let s discuss): Intermediate Reviews for individual stories by the PO At sprint review, each finished story is already running in production Review meetings become shorter, more of a high level overview Get faster feedback from stakeholders for next Scrum meeting Deploying to staging or testing systems becomes part of the definition of done Acceptance of features not only based on PO approval but stakeholder approval? A/B testing? "Working software is the primary measure of progress" Agile Manifesto Is software that is not deployed working? (DevOps) 34

Summary 1. DevOps 2. Application Hosting Options 3. Automating Environment Setup 4. Deployment Scripting 5. Application Monitoring 6. Continuous Deployment and Scrum Conclusion: Automate everything! 35

Image Credits thenounproject.com Box designed by Mourad Mokrane Bricks designed by Trammie Anderson 36