managing software from development to deployment in the cloud
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 todayTRANSCRIPT
Harpreet Singh, Vivek Pandey | CloudBees
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
Agenda
• What’s the cloud and the PaaS?
• What should be the criteria choosing a PaaS?
• Demonstration of taking applications to the PaaS.
What is the PAAS?Where does it fit in the whole cloud…
DC versus AC: Replay?
Traditional Software Stack
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
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 =
Cloud Computing: Outsourcing headaches
Cloud Provider
5 Key Cloud Characteristics*
* As specified by NIST
On Demand Self Service
Measured Service
Rapid Elasticity
Broad Network Access
Resource Pooling
4 Cloud Deployment Models
Public Cloud
Community Cloud
Hybrid Cloud
Private Cloud
3 Cloud Services Model
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
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!
App Consumer View
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…
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
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
Choosing a solutionDetermining criteria…
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
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
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?
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?
Lay of the Land
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
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
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
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
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
CloudFoundry• Public, Private and Micro
• Multi-language– Java (Spring), Ruby (Rails, Sinatra),
Node.js, Scala and Grails
• Multi-database– MongoDB, MySQL, Redis
• Open Source
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
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
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
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
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
Key Takeaways
• Why is the development stage not in the cloud?
• What happens when I take complicated apps to 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
CloudBeesWhat we bring to the table?
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
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
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
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
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
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
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
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?
DEV@cloud
Deploy
Leverage PaaS in testing
CLI, HTTP API…PaaS
(MySQL)
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
• 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
DemoTaking and managing applications 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