5. PaaS is about speed and agility
through standardized services.
6. Usage is growing, especially for
polyglot clouds, but some PaaS
vendors have hedged bets and
added IaaS services.
7. There is great diversity among the existing
offerings.
Force.com
Heroku Cloud Foundry
Google App Engine Windows Azure
Abstraction
AWS
Danger Zone
Portability
PROBLEM:When building/running on-prem apps, you require hardware, OS, db, middleware, web servers, and custom software. ; Devs need to partner with infra with separate teams of network, db, testing, system management staff; Changes to software force us to do the whole cycle again; Problem areas: speed, agility, complexity ; acquiring environments ; continuous delivery; changing resource allocation; tightly coupled apps; separation of duties (devs doing infra, navigating the org); All those people have necessary contributions, but should infrastructure and app services play such a key role during app dev?
WHERE YOU WANT TO BE:Want to hit a point where building/changing an app doesn’t require engaging 12 different teams and having each team’s responsibilities bleed into another’s
WHAT IS IT:Definition: model of cloud computing where consumers leverage abstracted web platforms and have limited (no) visibility to infrastructure provider takes care of physical hardware, network, storage; delivers services like upgrades, maintenance, versioning, DR;SaaS = share apps, whole stack managed; IaaS = share infra, infra managed and user manages platform and apps; PaaS = share middleware, infra and platform managed and user manages apps; PaaS implements core app infra capabilities (middleware) found in on-prem app servers, integration platforms, BPM suites, DBMSs, portals and dev tools; present programming models and processing capabilities similar to on-premises solutions, but through cloud-specialized internal foundation; Get OS, runtimes, middleware, network, storage, servers all managed; provider takes responsibility for running the software stack (management, scale, provisioning, upgrades); key difference: elastic use, scale on demand, multi-tenancy, and self-service admin, use-based billing;
PAASBENEFITS: rapid provisioning – developers don’t request environments, they just push; clear sep of duties – infrastructure is not exposed to dev; dev couldn’t open ports, set DR strategy, etc; architect composite apps easier – combine application services in whatever way needed without separately engaging/negotiating with each provider (e.g. identity, integration, web); access to latest frameworks (public PaaS) – no waiting for internal teams to update platform versions, services; Operational benefits, developer benefits, cost benefits
TRENDS:blending of IaaS and PaaS (see Google, Microsoft, Tier 3); Polyglot; portability (see Apprenda, AppFog announcements about multi-cloud options); hosted AND on-premises options; languages: Javascript (Node), Java, Ruby very popular; next up, PHP and C#
VENDORS:Spectrum of vendors: more abstraction, less abstraction; abstraction rank (high to low):Force.com – build apps in SFDC sandbox and get data model, UI framework, search, API, security, workflow servicesproprietary programming language, limited app portability; Dynamics CRM Online – similar to Force; uses .NET and JavaScript; limited portability but some reuse of existing svcs; Heroku – build Ruby, Java, Node apps that work with robust add-on model (search, queue, db, logging, hadoop, video, more); Cloud Foundry – polyglot support with diverse application services and easiest portability; open source and no platform specific extensions; no real infra exposure except CPU, RAM; GAE – Python/Java apps in Google cloud; proprietary data query language; some infra exposure; Windows Azure – now polyglot, wide range of services available; dev still has exposure to some infra (servers it runs on); AWS – storage, queuing services provide good abstraction; elastic beanstalk looks like app PaaS; Many offerings aren’t portable on the app service side (storage, DynamoDB, SQS, SNS); -high productivity PaaS (Force.com, metadata driven) vs. high control PaaS (use programming languages)
DEMO:Data stored in Windows Azure Tables; Create Node.js app; create new directory on Windows File System; have npm, vmc installed; install express module; npm install express –g; create scaffolding; Express; update package.json to add dependencies for other modules; save, and do npm install to add new modules; create directory named "models" on file system; add new file named system.js; add js code; add controller named systemlist to routes directory; add js code; go to app.js file and add parameters for table storage; update index.jade; style the page; Run locally by doing “node app.js”; Visit http://127.0.0.1:1337 to see running application; See web request in command prompt; See that there is no data, add new row; View Azure Storage Explorer and see it there; Switch line in app.js to use Cloud Foundry-friendly port; Push to Cloud Foundry.com; vmc target api.cloudfoundry.com; vmc login --email XXXXX@YYYYY.com; vmc frameworks (we have ASP.NET at Tier 3); vmc runtimes ; vmc services (we have SQL Server at Tier 3); vmc push --runtime=node08; keep defaults; Change memory allocation; vmcmem <application name> 128; Change instance count; vmc instances <application name> 2; vmc stats <application name>;
RISKSlock in to unique (app) servicemost are public cloud and multi-tenantinsurmountable restrictions may not fit for a given app (see highly abstracted PaaS like Force.com)not a friendly destination for COTS appsmany PaaS platforms aren’t comprehensive replacements for each local application service
STRATEGIES / NEXT STEPS: have to change process, not just a technology problem; need: extreme automation, complete self-service, limited customization, SDLC support; fit for: public web properties; services that support COTS (web services, dashboards); internal custom web apps; mobile-friendly apps;