managing software from development to deployment in the cloud

54
Harpreet Singh, Vivek Pandey | CloudBees Managing Software from Development to Deployment in the Cloud

Upload: cloudbees

Post on 13-May-2015

2.883 views

Category:

Technology


1 download

DESCRIPTION

CloudBees' Harpreet Singh and Vivek Panday give an introduction to managing and deploying Java applications in the cloud. The presentation covers... - What’s the cloud and what's a PaaS? - Criteria choosing a PaaS - Demonstration of taking applications to the PaaS - PaaS services available today

TRANSCRIPT

Page 1: Managing Software from Development to Deployment in the Cloud

Harpreet Singh, Vivek Pandey | CloudBees

Managing Software from Development to Deployment

in the Cloud

Page 2: Managing Software from Development to Deployment in the Cloud
Page 3: Managing Software from Development to Deployment in the Cloud

Why PaaS?

• PaaS eliminates these deployment friction points and more…

• Entire dev-to-deployment to the PaaS

• Get to the market faster

Page 4: Managing Software from Development to Deployment in the Cloud

Agenda

• What’s the cloud and the PaaS?

• What should be the criteria choosing a PaaS?

• Demonstration of taking applications to the PaaS.

Page 5: Managing Software from Development to Deployment in the Cloud

What is the PAAS?Where does it fit in the whole cloud…

Page 6: Managing Software from Development to Deployment in the Cloud

DC versus AC: Replay?

Page 7: Managing Software from Development to Deployment in the Cloud

Traditional Software Stack

Page 8: Managing Software from Development to Deployment in the Cloud

What’s the cloud?

”Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction”*

Is it about the hardware, servers, storage, infrastructure, middleware, application software?

What’s your view?

* Definition from NIST

Page 9: Managing Software from Development to Deployment in the Cloud

Isn't this hosting?

• You own resources– Pay for what you use

and not use

• No sharing• No elasticity

• Renting resources– Pay for what you use

• Sharing– Multi-tenant

• Elasticity

Hosting = Cloud =

Page 10: Managing Software from Development to Deployment in the Cloud

Cloud Computing: Outsourcing headaches

Cloud Provider

Page 11: Managing Software from Development to Deployment in the Cloud

5 Key Cloud Characteristics*

* As specified by NIST

On Demand Self Service

Measured Service

Rapid Elasticity

Broad Network Access

Resource Pooling

Page 12: Managing Software from Development to Deployment in the Cloud

4 Cloud Deployment Models

Public Cloud

Community Cloud

Hybrid Cloud

Private Cloud

Page 13: Managing Software from Development to Deployment in the Cloud

3 Cloud Services Model

Page 14: Managing Software from Development to Deployment in the Cloud

Cloud Service Provider View

IaaS

Build Your Own StackBuild Your Own Stack

Manage stackManage stack

Build appBuild app

Manage appManage appUser ConcernUser Concern

Provider ConcernProvider Concern

PaaS

Pre-built PlatformPre-built Platform

Managed stackManaged stack

SaaS

Pre-built appPre-built app

Use AppUse App

Page 15: Managing Software from Development to Deployment in the Cloud

App Developer (Cloud Service Consumer) View

IaaSIaaS SaaSSaaS PaaSPaaS

DevOps Me?DevOps Me?

How do I standout?How do I standout?

Custom apps! Custom apps!

Page 16: Managing Software from Development to Deployment in the Cloud

App Consumer View

Page 17: Managing Software from Development to Deployment in the Cloud

Middleware in the cloud?

• Did we just take the App Server to cloud?

• And threw in the database too?

“I get my own instance of App Server, DB in the cloud and I have a PaaS. Sounds great!”

But is that what it is…

Page 18: Managing Software from Development to Deployment in the Cloud
Page 19: Managing Software from Development to Deployment in the Cloud

Multi-tenancy

• Service Provider View

• Resources shared amongst tenants

• Economies of scale

• Spectrum of multi-tenancy– Nothing multi-tenant to– Each tier of the stack is multi-tenanted

Page 20: Managing Software from Development to Deployment in the Cloud

Provisioning BillingMonitoringSLA Policy

Core Platform Services

IaaS Virtualization/OS

Metering

App Server MailLoggingDBMS/NoSQL

Middleware Services

Messaging

Auto Scaling CIHA

Runtime Services

SCM

ALM Services

SDK APIs

UI IDE

PaaS Reference Architecture

Dev Services

Page 21: Managing Software from Development to Deployment in the Cloud

Choosing a solutionDetermining criteria…

Page 22: Managing Software from Development to Deployment in the Cloud

What is your use case?

• Mimic production environment– all about deployment– IaaS view –

companies moving upstack

• Shorten lifecycle– No more just

deployment– SaaS view

• Companies moving downstack

Page 23: Managing Software from Development to Deployment in the Cloud

Agile or Expansive? Or Both?

• Turnkey solution• Rapid development• Rapid deployment• 5 Key cloud

characteristics• Configuration over

Convention

• ALM capabilities• Management• Monitoring• Multi-language• Multi-cloud• 4 deployment

models

Agile Expansive

Page 24: Managing Software from Development to Deployment in the Cloud

Criteria for evaluating a PaaS

• What friction points does it eliminate?

• Am I architecting solutions in a new way?

• Am I maintaining tiers of my stack?

• Is it IaaS-like or SaaS-like?

• How am I paying for the service?

• Any add-on services available?

• How mature is the service?

Page 25: Managing Software from Development to Deployment in the Cloud

Criteria for evaluating a PaaS

• Am I locked in to the vendor?

• What standards do I care about?

• Am I leveraging my existing dev skill set?

• Did I compress my dev-deploy cycle?

• Am I going faster to the market with better tested and better scalable solutions?

Page 26: Managing Software from Development to Deployment in the Cloud

Lay of the Land

Page 27: Managing Software from Development to Deployment in the Cloud

Amazon BeanStalk

• IaaS view; in beta

• Java based. Tomcat; No API restrictions

• No vendor lock-in for the application

• Auto-scaling, loadbalancing, monitoring

• Versioning, management, logging

• SDK, Eclipse plugin

• Need new service – bake a new server ami and use it

Page 28: Managing Software from Development to Deployment in the Cloud

Provisioning BillingMonitoringSLA Policy

Core Platform Services

IaaS Virtualization/OS

Metering

App Server MailLoggingDBMS/NoSQL

Middleware Services

Messaging

Auto Scaling CIHA

Runtime Services

SCM

ALM Services

SDK APIs

UI IDE

BeanStalk Architecture

Dev Services

Page 29: Managing Software from Development to Deployment in the Cloud

Google App Engine

• SaaS-like, In preview, final this year• Multi-language (Python, Java, Go)• Restricted Sandbox

– Some Java apis supported (JDO, JPA, no JDBC)

– Goodbye MySQL, hello DataStore

• App URLs served by multiple instances• No streaming data

Page 30: Managing Software from Development to Deployment in the Cloud

Google App Engine• Vendor Lockin• Requires to code in a new way

– E.g: 30 seconds to respond

• Other features– Versioning of apps– Administration console– Integrated with Google Apps– Logging– Eclipse plugin and SDK

Page 31: Managing Software from Development to Deployment in the Cloud

Provisioning BillingMonitoringSLA Policy

Core Platform Services

IaaS Virtualization/OS

Metering

App Server MailLoggingDBMS/NoSQL

Middleware Services

Messaging

Auto Scaling CIHA

Runtime Services

SCM

ALM Services

SDK APIs

UI IDE

GAE Reference Architecture

Dev Services

Page 32: Managing Software from Development to Deployment in the Cloud

CloudFoundry• Public, Private and Micro

• Multi-language– Java (Spring), Ruby (Rails, Sinatra),

Node.js, Scala and Grails

• Multi-database– MongoDB, MySQL, Redis

• Open Source

Page 33: Managing Software from Development to Deployment in the Cloud

CloudFoundry• Multi-cloud:

– VMWare vSphere. Option to do AWS through Rightscale & others

• Private Cloud: sometime in the future

• CLI, SDK, UI (through STS)

• No Vendor Lock-in

Page 34: Managing Software from Development to Deployment in the Cloud

Provisioning BillingBillingMonitoringSLA PolicySLA Policy

Core Platform Services

IaaS Virtualization/OS

MeteringMetering

App Server MailMailLoggingDBMS/NoSQL

Middleware Services

MessagingMessaging

Auto Scaling CIHA

Runtime Services

SCM

ALM Services

SDK APIs

UI IDE

CloudFoundry Reference Architecture

Dev Services

Page 35: Managing Software from Development to Deployment in the Cloud

Redhat OpenShift

• Which OpenShift? Express, Flex, Power

• Multi-language: which OpenShift?– Ruby, PHP on Express; Java EE & PHP on

Flex and C, Linux for Power

• Multi-AS: Zend, Tomcat, JBoss – Flex

• CLI, SDK or UI: depends on Flex, Express

Page 36: Managing Software from Development to Deployment in the Cloud

Redhat OpenShift

• Multi-cloud– In Flex: EC2 more later

• Private Cloud: No official announcements

• Flex Services– Monitoring, Metering– Logging– Ability to go to a service level and

configure parameters

Page 37: Managing Software from Development to Deployment in the Cloud

Provisioning BillingBillingMonitoringSLA PolicySLA Policy

Core Platform Services

IaaS Virtualization/OS

Metering

App Server MailLoggingDBMS/NoSQL

Middleware Services

MessagingMessaging

Auto Scaling CIHA

Runtime Services

SCM

ALM Services

SDK APIs

UI IDE

Flex Reference Architecture

Dev Services

Page 38: Managing Software from Development to Deployment in the Cloud

Key Takeaways

• Why is the development stage not in the cloud?

• What happens when I take complicated apps to the cloud?

Page 39: Managing Software from Development to Deployment in the Cloud

Vendors - PositioningFlexibility Compatibility

SaaS-likeIaaS-like

OS Flex is server-centric

OS Flex is server-centric

Basic orchestration

of AWS blocks

Basic orchestration

of AWS blocks

.Net-on-a-Server, with only … more constraints

.Net-on-a-Server, with only … more constraints

Spring-centric offering,

focused on vCloud

Spring-centric offering,

focused on vCloud

JVM-based offering (soon

EE) fully server-agnostic

JVM-based offering (soon

EE) fully server-agnostic

Oldest SaaS-like offering but

with lots of env.

constraints

Oldest SaaS-like offering but

with lots of env.

constraints

Page 40: Managing Software from Development to Deployment in the Cloud

CloudBeesWhat we bring to the table?

Page 41: Managing Software from Development to Deployment in the Cloud

About CloudBeesOur Mission

Strategy

Become the leading Platform as a Service (PaaS) for Java™

Why We’re Different

CloudBees services the complete lifecycle of Cloud application development and deployment.No Servers. No Virtual Machines. No IT.

DEV@cloud – Cloud Services for Developers

RUN@cloud – Frictionless runtime PaaS for Java apps

Page 42: Managing Software from Development to Deployment in the Cloud

Why CloudBees is Better?

Analyse sec. bulletins

Analyse QA bulletins

Analyse AS/OS logs

maintain OS maintain JVM maintain AS

maintain DB

Manage environment (recurring)

maintain FWValidate/QA

stack

Measure App performance

Acquire Hardware

Provision node

Update Cluster

Update LB

Metering/Scaling (recurring)

Update Security

• Remove constant friction between dev and IT

• No need to provision masters, slaves

• Environment constantly monitored, managed and maintained

• Metering/scaling updated in real-time

• Business Continuity built-in

Deploy App to traditional Java platform

Continuous Integration on CloudBees

Build

Install Plugins

Manage PluginsApply

Patches

Manage CI Environment:

Setup Master Setup Slaves

Setup CI Environment

Page 43: Managing Software from Development to Deployment in the Cloud

Why CloudBees is Better?

Configure OS Secure OS Setup JVM

Install AS on OS

Configure AS Secure AS

provision nodes

Install load-balancer (LB)

Configure LB

Secure LBSetup BC for

clusterQA cluster

Configure DNS

Provision node:

Provision cluster:

Provision node

Install DB Configure DB

Secure DBSetup BC for

DB

Provision DB:

Provision cluster

Provision DBDeploy schema

Deploy App to each node

Deploy App:

(not a transparent update process)

Analyse sec. bulletins

Analyse QA bulletins

Analyse AS/OS logs

maintain OS maintain JVM maintain AS

maintain DB

Manage environment (recurring)

maintain FWValidate/QA

stack

Measure App performance

Acquire Hardware

Provision node

Update Cluster

Update LB

Metering/Scaling (recurring)

Update Security

(transparent, multi-version,HA, scalable)

• Remove constant friction between dev and IT

• No need to provision nodes, clusters, load-balancers, databases, etc.

• Environment constantly monitored, managed and maintained

• Metering/scaling updated in real-time

• Business Continuity built-in

Deploy App to traditional Java platform

Deploy App to CloudBees

DEPLOY

Page 44: Managing Software from Development to Deployment in the Cloud

Why CloudBees is Better?

Configure OS Secure OS Setup JVM

Install AS on OS

Configure AS Secure AS

provision nodes

Install load-balancer (LB)

Configure LB

Secure LBSetup BC for

clusterQA cluster

Configure DNS

Provision node:

Provision cluster:

Provision node

Install DB Configure DB

Secure DBSetup BC for

DB

Provision DB:

Provision cluster

Provision DBDeploy schema

Deploy App to each node

Deploy App:

(not a transparent update process)

Analyse sec. bulletins

Analyse QA bulletins

Analyse AS/OS logs

maintain OS maintain JVM maintain AS

maintain DB

Manage environment (recurring)

maintain FWValidate/QA

stack

Measure App performance

Acquire Hardware

Provision node

Update Cluster

Update LB

Metering/Scaling (recurring)

Update Security

Install Plugins

Manage PluginsApply

Patches

Manage CI Environment:

Setup Master Setup Slaves

Setup CI Environment

DEPLOYBuildContinuous Deployment

Page 45: Managing Software from Development to Deployment in the Cloud

Public EditionIaaS Providers

CloudBees: PaaS

CloudBees Core Platform Services

RUN@cloudDEV@cloud

APIs

Private EditionOn-Premise

SaaS for developers:Repositories, build, test, etc.

Nectar Inside

Run your applications:Auto-scale, maintain, etc.

Core runtime services & back-end services

11 2233

AA BB

EC2, Rackspace, …Verizon, Terremark, …

Enterprises

Hybrid Edition

Mixed - new

CC

Page 46: Managing Software from Development to Deployment in the Cloud

Cloud anagement / Virtualization / OS

CloudBees Platform as a Service

Continuous Deployme

nt

Continuous Deployme

nt ProductionProductionBuildBuild

TestTest

ProvisioningProvisioning

Maintenance

Jenkins

JVM – Java EEJava, Grails, Scala, …

JVM – Java EEJava, Grails, Scala, …

CloudBees Core Platform Services

RUNDEV

RepositoriesRepositories

Data Services,NoSQL

Data Services,NoSQL

MeteringBilling

MeteringBillingMonitoringMonitoringManagemen

tManagemen

t

MessagingMessaging IdentityIdentity Logging/AuditingLogging/Auditing

Back-end services

Runtime services

GITGIT MavenMaven ……

APIs

Databases

Other SaaS

On Premise

IaaS Virtualization/OS

SVNSVN

Page 47: Managing Software from Development to Deployment in the Cloud

Provisioning BillingMonitoringSLA Policy

Core Platform Services

IaaS Virtualization/OSVirtualization/OS

Metering

App Server MailLoggingDBMS/ NoSQL

Middleware Services

Messaging

Auto Scaling CIHA

Runtime Services

SCM

ALM Services

SDK

UI

CloudBees PaaS

Dev Services

APIs

IDE

Page 48: Managing Software from Development to Deployment in the Cloud

CI in the Cloud

• No disruption when code changes break things

• “Working” build always available for test, demos, etc.

• Provides critical metrics about development – quality, productivity, functional

Why Continuous Integration?

• Build machines always available when you need them, lowers CAPEX

• Scale DUO – Pay for what you use, when you need it

• Integration between CI modules reduces dev complexity, lowers OPEX

• Seamless integration to runtime PaaS

• Continuous Deployment Capability

Why in the Cloud?

Page 49: Managing Software from Development to Deployment in the Cloud

DEV@cloud

Deploy

Leverage PaaS in testing

CLI, HTTP API…PaaS

(MySQL)

Page 50: Managing Software from Development to Deployment in the Cloud

Stable

RUN@cloud Features

Java/JVM Based

Monitoring

HA

UI

3rd party integrations

Free Offering

CloudAnt

New Relic

Jenkins L&FMgmt UI

CLI, HTTP API, SDKEclipse.

DB

Tomcat4.5k + Apps Starter For FOSS

Java EE 6 Web Profile (soon)

Grails JRuby PlayColdfusion

Scalable MySQL

Non JVM BasedNode.js POC

Scale DUO

APIs, SDK

Session Persistence

Page 51: Managing Software from Development to Deployment in the Cloud

• Focus on development-to-deployment cycle (all in the cloud)– DEV@cloud + RUN@cloud– A la carte: allows for 3rd party integration

• Public cloud offering available today

Takeaways

Page 52: Managing Software from Development to Deployment in the Cloud

DemoTaking and managing applications in the cloud

Page 53: Managing Software from Development to Deployment in the Cloud

Demo 1

• Simple Application to Google App Engine and CloudBees

• Bringing in Continuous Integration in the Cloud

• Bringing Continuous Deployment to the application

• Managing Application on CloudBees

Page 54: Managing Software from Development to Deployment in the Cloud