15. PaaS: Services that you care about Provisioning Billing Monitoring SLA Policy Core Platform Services IaaS Virtualization/OS Metering App Server Mail Logging DBMS/NoSQL Middleware Services Messaging Auto Scaling CI HA Runtime Services SCM ALM Services UI IDE Dev Services SDK APIs
16. PaaS Landscape Flexibility Compatibility SaaS-like IaaS-like OS Flex is server-centric Basic orchestration of AWS blocks .Net-on-a-Server, with only … more constraints Spring-centric offering, focused on vCloud JVM-based offering fully server-agnostic Oldest SaaS-like offering but with lots of env. constraints
27. What deployment should be? Manage Application Environment Manage CI Environment Manage Server Environment Configure OS Secure OS Setup JVM Install AS on OS Configure AS Secure AS provision nodes Install load-balancer (LB) Configure LB Secure LB Setup BC for cluster QA cluster Configure DNS Provision node: Provision cluster: Provision node Install DB Configure DB Secure DB Setup BC for DB Provision DB: Provision cluster Provision DB Deploy 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 FW Validate/QA stack Measure App performance Acquire Hardware Provision node Update Cluster Update LB Metering/Scaling ( recurring ) Update Security Install Plugins Manage Plugins Apply Patches Manage CI Environment: Setup Master Setup Slaves Setup CI Environment Deploy Build Continuous Deployment
Situation: - App Developers/Organizations would like to take applications to the market quicker Complication: - Complicated technologies, maintain infrastructure that includes hardware, software, os blah Implication - Costly over-runs, very complicated deployment models, complicated build models - bug filled apps. All costing $$
Quick 30s on the slide
(IaaS). The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls). (PaaS). The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations. The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a Tthin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings
IaaS: Lego blocks of fundamental Services, Very flexible. Built your own stack.
Consumer does not care about IaaS, PaaS, SaaS. App developer – then should really care about the fastest time to market with the least amount of work. It is clearly then the SaaS. However how do you differentiate yourself. As an app developer – you need to build custom apps. Well these questions have been asked by developers since a long time and I am certainly not the first one.
Well not quite. There is the Multi-tenancy thing…
AWS and Azure show “naïve” approach to PaaS i.e. IaaS+middleware Modern approach provide infrastructure abstraction and favor APPS and DEV Some platforms (like GAE) restrict developer’s ability to do what they need, hence reduce application “ migrability ” from traditional AS
Coding in the cloud
Situation Complication Implication {Rephrase} -1 slide Situation: The traditional software development process includes coding, some more coding, ad-hoc testing, rapid commits before start of the testing phase. Tests are run nightly, weekly or sometimes even less frequently. Compllication This is a flawed process - usually results in inefficient testing, long difficult integration process, poor visibility into development process, raised issues are harder to fix. The setup is a like a house of cards all ready to fall. Implication The implication is that either organizations end up shipping buggy product and suffer a loss of reputation and revenue in the market or delivery runs into costly overruns and delays and the organization loses revenue in the market. Position Opening Action Benefit - (slide 1) Position Tests should be run as often as possible if not sooner, integration should be continuous not discrete, reports should be available available per commit Opening Action To bring the desired continuity to the software development/software factory life-cycle - a CI server should be made a core part of the development process Benefit Issues are found faster, integrations are quicker, fixes are fixed almost as they are found - resulting in a better tested software that is released on time in the market.
You can think of CI as a factory that takes 3 functions and spits out quality software and some residual. Those three functions are the repository, build process, testing process: as always source repository is the most important piece of all – developers commit code to the repository. uberSVN makes the coding environment more social – so you can see who has made what commits and follow a discussion. This facility is not available in plain jane svn – so it is a huge step forward in helping people collaborate. Once the code is committed – CI detects it – picks up the associated build scripts, builds all components and sub-components. If there is a failure, you can see who broke the build and go into uberSVN and follow or initiate the discussion. As part of the build process – you can run things like static code analysis, code coverage tests etc Talk about running tests Sets of reports are generated. If you are happy – you can continuous deploy from here to the application server of your choice and anywhere else.
Question 1) So Harpreet – how has the community split played out? Where do you see that developers have moved to? Answer) some stats here on thriving community. Wandisco is doing the right thing by voting with the community and offering Jenkins as a solution Users chose Jenkins – 13k downloads/week; 1500 members on the jenkins-users list and 4700 followers on twitter (vs 570 followers); apache, nasa, jrbuy, scala others have moved to Jenkins Developers chose Jenkins – 900 members on jenkins-dev; 48 active contribtors; of top 25 plugin 21 moved to Jenkisn; 11.3 chanes/release vs 6.3 pre-fork Jenkins user conference – announced 3 weeks ago: 250+ registrants; 30 talk submissions Question 2) 500+ plugins sound nice – who maintains them? Answer) The community contributes these plugins and plugin developers maintain them Question 3) So if I as a serious enterprise user want to get support – where do I go? Should I be chasing these developers? Answer) (Not bashing the community). Well Tim – you could file a bug report in the open source community. But your biz priority might be quite different than what the communities priority. What we see is that in your audience case they would come to Wandisco for support as they get an integrated product and making sure your biz runs makes wandisco pay its mortgage – so they will support it as a commercial product. Question 4) Any plugins that you like Answer) Chuck Norris is quite popular
We compress your development to deployment so that you can take better tested applications to market faster without maintenance headaches.
As cloud service provider we provide On-demand and self service of resources in our platform. So for e.g: if you will like to scale applications, adding servers is as easy going to our web console and adding more instances of servers. Rapid Elasticity: you could if you wanted to provision more servers – set it up to automatically increase capacity based on our “ Measured?monitor Service ” – basically we track resource usage and increase capacity or cool down based on some criteria The core platform has run time services that we use ourselves and provide to customers. DBMS, NoSQL DB (CouchDB), Logging services. We have built our own background services around Provisioning. We have added some nifty functionality Forge usage within Jenkins Delta war uploader. So if you are uploading MBs – you pay the price only once. We provide a SDK that a) wraps some essential functionality for deploying apps etc. It wraps it around a Rest like API. This api is used by our web ui as well.
Closing Position PaaS offers deliverance from management headaches Core Message: However while choosing a solution clearly put down a criteria - in our opinion moving the entire development lifecycle to the cloud is the key Closing Action: Open an account on CloudbEes