An Introduction to CloudBee

This article introduces the CloudBees PaaS (Platform as a Service) offering.

According to Gartner, the application infrastructure is the mid-tier platform technology layer of the software stack (a.k.a. middleware) where architecture standards, best practices, prevailing protocols and programming models for business applications are defined. Platform as a Service (PaaS) enables organisations to use the application infrastructure as a software service to create, run and integrate cloud-based business applications.
The PaaS resides within the space between Software as a Service (SaaS) and Infrastructure as a Service (IaaS). The latter delivers basic network, storage and compute/processing capabilities as standardised, scalable service offerings. SaaS delivers software capabilities as online Web applications and Web services.
PaaS offerings often support DevOp practices, which include self-service, automated provisioning, continuous integration and continuous delivery. With PaaS, the team can see whether an application is working, broken or staged, and so on across the entire application lifecycle. Apart from that, PaaS provides:
On-demand self-service (service catalogues, incremental DevTest)
Rapid elasticity (provisioning, de-provisioning, flexibility and scalability)
Resource pooling (platform environments commonly pool memory, code libraries, database connections; multi-tenancy, resource utilisation)
Measured services (monitoring, metering, billing, etc). Usage is monitored, and the system generates bills based on the charging model.
In the next three to five years, PaaS providers will be capable of providing comprehensive offerings that are not dedicated to a single language.

The Java PaaS

PaaS for Java has come a long way in the past 24 months. PaaS product offerings are rapidly evolving, which is great news for the Java community; there are now low-cost, scalable and hassle-free hosted solutions for Java environments.
The Java platform is well suited for PaaS since the JVM, the application server and deployment archives provide natural isolation for Java applications, allowing multiple developers to deploy applications in the same infrastructure. Google App Engine was the lone PaaS provider for Java developers. Fortunately, the scenario is changing; it makes sense, since Java developers represent one of the biggest developer communities in the world. In the past two years or so, several commercial providers have entered the Java PaaS space:
CloudBees
Amazon Elastic Beanstalk
CloudSwing
Cloud Foundry
Google App Engine
Heroku
Red Hat OpenShift

An introduction to CloudBees
CloudBees is run by JBoss and Sun veterans. Its weight is growing in the Java PaaS space. CloudBees brings several unique features into the Java PaaS panorama, in particular, continuous integration—a complete development, testing and deployment management in the cloud.

The CloudBees ecosystem
For JEE developers, I consider that CloudBees and OpenShift offer the best of the breed services so far. And between the two, CloudBees is the winner in this highly competitive landscape.
While all other Java PaaS vendors focus on providing a hosted runtime environment for Java applications, CloudBees takes the platform concept further to support the complete development, testing and deployment lifecycle of Java applications.

Features
Supported technology platforms and stacks
One of the most important attributes of CloudBees is the technology platform and stack it supports. CloudBees supports Tomcat, Java SE, Java EE, standard Java libraries, MySQL, commercial relational databases and Big Data. It allows file system and thread access. No special framework is needed for application deployment, and it is easy to migrate applications to and from CloudBees.

Support for the development processes
CloudBees makes life easier for application developers, as it removes the overhead for application and resource management. It is not only a runtime environment, but also an integrated build, dev and test environment. Developers can use the Jenkins service to have CloudBees automatically and continuously check out, build, test and report code in the repository. CloudBees supports IDE tools, command-line tools, Web-based consoles, Web access to logs, third-party development and testing services, and API access. On top of all these, good documentation is like chocolate topping on vanilla ice-cream.

Performance and scalability
One of the most important features of CloudBees, from the business perspective, is the platform’s ability to auto-scale. CloudBees supports a built-in load balancer and the custom domains for it. Users can define performance criteria to measure load-balancing requirements and the auto-scaling of application servers is supported accordingly. Database scaling is not supported. It provides horizontal, vertical and auto-scaling features with Web-based monitoring dashboards.

Jenkins as a service
Jenkins is an open source continuous integration tool written in Java. It supports SCM tools including CVS, Subversion, Git, Mercurial, Perforce and ClearCase. In CloudBees, users can execute Apache Ant and Apache Maven-based projects.
Builds can be started by a commit in a version control system, scheduling via a cron-like mechanism, building when other builds have completed, and by requesting a specific build URL. Cron is a time-based job scheduler in UNIX-like computer operating systems that enables users to schedule jobs (commands or shell scripts) to run periodically at certain times or dates (see table below).

With the use of the CloudBees dashboard, users can manage and keep track of various builds.

Papertrail’s logging
CloudBees’ management console provides access to the server’s unrefined log file. Papertrail provides aggregation and analysis of log files—it can be used to aggregate, tail and search log messages from applications deployed on the CloudBees platform. Papertrail automatically collects and reports the log data from running CloudBees applications. It needs to be enabled from the CloudBees dashboard for specific applications. It combines logs from different sources, keeps them for longer periods of time, and provides summary analysis based on the logs. It saves useful searches, enables team-wide visibility, notifies external services of important events, automatically archives logs, and gives access to log details via the Web, the command-line and the API.

New Relic’s deep monitoring and management of Web apps
New Relic is an application performance monitoring service. It embeds its software agent into your application to collect detailed performance information about your application in real time. New Relic monitoring is part of the CloudBees ecosystem, so you can turn it on for any of your applications with a few clicks. In CloudBees, the New Relic software agent is automatically instrumented into your application at the time of deployment, without the developer needing to change any source code.
New Relic monitors app performance at the component level, and spots potential bottlenecks. It determines if performance issues are in the front end, the app, the database, or at the network level. It is the tool developers need to monitor real user experiences, proactively identify application bottlenecks, and ensure superior online service delivery.

XWiki
XWiki Cloud is a cloud-based wiki that is secure, simple to use and easy to organise. It is a light and powerful development platform. Using structured data and in-page scripting, you can create macros and applications that extend the capabilities of your wiki and customise it to match your specific needs. With XWiki, CloudBees provides easy content creation for applications, importing Office documents (.doc, .xls, .ppt, etc) to your wiki, and a powerful search engine to search in every element of your wiki, including attachments.

The SendGrid service
CloudBees now supports sending mail from applications with the SendGrid Service for RUN@cloud. SendGrid offers a hosted SMTP service to send emails to either a mailing list or to individual users. Once it is enabled, it is available as a JNDI resource in your CloudBees application.
SendGrid’s cloud-based email infrastructure relieves businesses of the cost and complexity of developing and maintaining custom email systems. It provides reliable delivery, scalability and real-time analytics, along with flexible APIs that make custom integration a breeze. SendGrid solves the technical challenges, eliminating your email headaches, so that you can focus on your core product and meet the email demands of your business.
In the next article in this series, we will look at how to deploy a JEE application on CloudBees, how to run it on the local and cloud environment, and how to configure a CloudBees plug-in in Eclipse.

References
[1]     http://wiki.cloudbees.com/bin/view/Main/CloudBees+Platform End to EndTutorial
[2]     http://wiki.cloudbees.com/bin/view/DEV/Sauce+OnDemandService
[3]     http://wiki.cloudbees.com/bin/view/RUN/Papertrail
[4]     http://wiki.cloudbees.com/bin/view/RUN/NewRelic
[5]     http://wiki.cloudbees.com/bin/view/RUN/DatabaseGuide
[6]     http://www.infoq.com/articles/paas_comparison
[7]     http://wso2.com/download/Selecting-a-Cloud-Platform.pdf
[8]     http://en.wikipedia.org/wiki/Cron
Gartner Insight: COMPLIMENTARY RESEARCH—‘Platform as a Service in the Cloud Services Value Chain’

  • Abhishek Choudhary

    Nice article and I actually followed this article back to use cloudbee for implementation. In the meantime I checked with jelastic and I’d like to suggest that for Java and PHP services in cloud, it stood in a new level. Just give a try

    http://jelastic.com/docs

All published articles are released under Creative Commons Attribution-NonCommercial 3.0 Unported License, unless otherwise noted.
Open Source For You is powered by WordPress, which gladly sits on top of a CentOS-based LEMP stack.

Creative Commons License.