“Cloud” is most buzzing world in industry today. Everyone seems to be rushing towards it. All large corporations, with deep pockets, are investing in it or utilizing it. At the same time, it looks like a puzzle for most of the developers. Let’s solve this puzzle today and understand what exactly is underneath it. What all things make cloud so interesting and useful? And more important questions, what’s there for us as developers when we talk about cloud development.
Table of Contents What is Cloud Computing Advantages of Cloud Computing Cloud Service Delivery Models - Infrastructure as a Service (IaaS) - Platform as a Service (PaaS) - Software as a Service (SaaS) Cloud Deployment Models - Public Cloud - Private Cloud - Hybrid Cloud Java Cloud Development Tools Oracle Java Cloud Service AWS SDK for Java Google App Engine Cloudfoundry Heroku Java Jelastic IBM SmartCloud Openshift
What is Cloud Computing
Simply put, cloud computing is computing based on the internet. Generally, the term “cloud” is used to refer to platforms used for distributed computing. As mentioned in wiki, “Cloud computing, also on-demand computing, is a kind of Internet-based computing that provides shared processing resources and data to computers and other devices on demand.”
As a normal user, when you check email or search something on internet, you are benefiting from few capabilities of cloud. In these examples, the power of processing technology is used, which exists in distant locations and are not known to the users. There are many other such examples such as storage in Dropbox, or saving documents in Google drive. All such things are cloud powered. You will get more insight when we start looking at 5 essential characteristics of cloud.
Users are able to provision cloud computing resources without requiring human interaction, mostly done though a web-based self-service portal. These resources can be anything from SMTP servers to storage limitations in GBs. All you should be able to do is – login to console and add/remove the desired service.
Broad Network Access
All cloud services must be accessible over network and should not have any restrictions on client applications which can connect to them. One should be able to use either office desktop, laptop or his mobile/smartphones to connect to cloud interface. This mobility is particularly attractive for businesses so that during business hours or on off-times, employees can stay on top of projects, contracts, and customers whether they are on the road or in the office.
The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. The resources include among others storage, processing, memory, network bandwidth, virtual machines and email services.
Resources are provisioned and released on-demand and/or automated based on triggers or parameters. This will make sure your application will have exactly the capacity it needs at any point of time. e.g. On top load for your application, cloud will assign you resources to process all tasks – but when load is low, those resources will be serving some other clients.
Resource usage are monitored, measured, and reported (billed) transparently based on utilization. If you have used or known to amazon cloud infrastructure, it offers you hundreds of services – but you are charged only for what services you use and how much resources you consumed in a month. In plain English, it’s Pay Per Use.
Advantages of Cloud Computing
Today, if you posting status on Facebook, booking an airline ticket or transferring fund from mobile, high chances are you are using some of services offered by cloud on backend. More and more organizations are moving to cloud at very fast pace, why? It’s because cloud computing increases efficiency, helps improve cash flow and offers many more benefits — while efficiently solving some most complex problems small businesses face each day. Let’s list down some benefits, cloud offers:
- High Availability : Most cloud providers are extremely reliable in providing their services, with many maintaining 99.99% up-time. The connection is always on means your application is live and functional all the time.
- Scalability and Performance : Moving to the cloud gives access to enterprise-class technology, for everyone. It also allows smaller businesses to act faster than big, established competitors. Pay-as-you-go service and cloud business applications mean small outfits can run with the big boys, and disrupt the market, while remaining lean and nimble.
- Automated Backup and Recovery : Cloud providers provide you the capability to schedule the backups, so you do not loose data due to any mistake from either you end or any other factor. You have backup, which you can rollback to with minimum effort, mostly only few mouse clicks.
- Latest and Timely Updates : Cloud providers take care of softwares for you and roll out regular software updates – including security updates – so you don’t have to worry about wasting time maintaining the system yourself. Leaving you free to focus on the things that matter, like growing your business.
- Cost Effective : Perhaps, the most significant cloud computing benefit is in terms of IT cost savings. With cloud computing, you can save substantial capital costs with zero in-house server storage and application requirements. The lack of on-premises infrastructure also removes their associated operational costs in the form of power, air conditioning and administration costs. You pay for what is used and remove whenever you like.
Cloud Service Delivery Models
The delivery model for cloud infrastructure can be broadly categorized as Infrastructure as Service (IaaS), Platform as a Service (PaaS) or Software as a Service (SaaS). Let’s look at them in detail.
Infrastructure as a Service (IaaS)
IaaS offer physical computers or (more often) virtual machines and other physical resources. If you been in blogging world, or you are curious about server infrastructures then you can relate this to hosting servers, memory and network. All infrastructure services such as computers, storage devices, and routers comes under this category. They are mostly virtual machine based solutions where certain amount of resource is allocated to you based on your costing. Companies such as Amazon, Rackspace, Microsoft, Bluehost and Godaddy etc. are leading providers for IaaS.
Please note that IaaS may not include software bundled with it, you are on your own to install and configure required softwares and databases through it’s entirely possible that cloud vendor will provide appropriate tools to enable you to do so.
Also, cloud providers may sell you pre-configured resources and infrastructures after charging nominal fees.
Platform as a Service (PaaS)
PaaS vendors offer a development environment to application developers. In the PaaS models, cloud providers deliver a computing platform, typically including operating system, programming-language execution environment, database, and web server. Application developers can develop and run their software solutions on a cloud platform without the cost and complexity of buying and managing the underlying hardware and software layers.
Platform as a Service (PaaS) consumers do not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but have control over the deployed applications and possibly configuration settings for the application-hosting environment.
Software as a Service (SaaS)
In SaaS model, users gain access to specific application softwares and databases. Cloud providers manage the infrastructure and platforms that run the applications. SaaS is sometimes referred to as “on-demand software” and is usually priced on a pay-per-use basis or using a subscription fee e.g. monthly or yearly.
Services offered include:
- Enterprise services such as workflow management, groupware and collaborative, supply chain, communications, digital signature, customer relationship management (CRM), desktop software, financial management, geo-spatial, and search.
- Web 2.0 applications such as metadata management, social networking, blogs, wiki services, and portal services.
Cloud Deployment Models
Deployment model largely refer to services offers to single or multiple organizations. They are divided into 3 main categories:
A cloud is called a “public cloud” when the services are rendered over a network that is open for public use. Generally, public cloud service providers like Amazon AWS, Microsoft and Google own and operate the infrastructure at their data center and access is generally via the Internet.
Resource usage can be chargeable or free – depends on provide to provider and service to service based.
Private cloud is cloud infrastructure operated solely for a single organization, whether managed internally or by a third-party. This requires a significant level of engagement to virtualize the complete business environment. If often improve business capabilities, but every step in the project raises security issues that must be addressed to prevent serious vulnerabilities.
A private cloud could be hosted inside an IT organization or a cloud vendor such as Rackspace can customize a part of their infrastructure for a specific company.
Hybrid cloud is a composition of two or more clouds (private, community or public) that remain distinct entities but are bound together, offering the benefits of multiple deployment models.
For example, an organization may store sensitive client data in house on a private cloud application, but interconnect that application to a business intelligence application provided on a public cloud as a software service.
Java Cloud Development Tools
Oracle Java Cloud Service is a part of the platform service offerings in Oracle Cloud. By using Oracle Java Cloud Service, you can quickly create and configure an Oracle WebLogic Server domain and set up your Java EE application environment without worrying about setting up any infrastructure or platform details yourself. All Oracle Java Cloud Service instances that you create are also preconfigured to use your instance in Oracle Database Cloud – Database as a Service, and an object storage container that you create in your Oracle Storage Cloud Service.
When creating an Oracle Java Cloud Service instance, you have your choice of an environment that’s designed for higher availability needs, such as user acceptance testing, staging and production, or an environment that’s designed for development and testing.
You can request a trial subscription to Oracle Java Cloud Service or purchase a subscription.
Amazon provides all the tools, documentation, and sample code you need to develop secure, reliable, and scalable Java applications on the AWS cloud. Eclipse Java IDE users can get started with the SDK easily using the AWS Toolkit for Eclipse. The AWS Toolkit for Eclipse is a plug-in for the Eclipse Java IDE that makes it easier for developers to develop, deploy, and debug Java applications using Amazon Web Services.
Amazon also provides a dedicated set of APIs for for many AWS services including Amazon S3, Amazon EC2, DynamoDB, and more. The single, downloadable package includes the AWS Java library, code samples, and documentation.
Google App Engine applications are easy to create, easy to maintain, and easy to scale as your traffic and data storage needs change. With App Engine, there are no servers to maintain. You simply upload your application and it’s ready to go.
App Engine allows you to easily deploy and run standard Java web applications using either Servlets or server code that listens on port
8080. App Engine applications automatically scale based on incoming traffic. Load balancing, microservices, authorization, SQL and noSQL databases, memcache, traffic splitting, logging, search, versioning, roll out and roll backs, and security scanning are all supported natively and are highly customizable.
To run an application on App Engine, you will need:
app.yamlfile that describes your application’s runtime configuration, which includes the minimum and maximum number of instances and the desired CPU and RAM.
pom.xmlfile that describes package dependencies for the app.
- Your Java application code.
Other than these requirements, App Engine is generally agnostic about what development tools, frameworks, and libraries you want to use.
Cloud Foundry is an open source cloud computing platform as a service (PaaS) originally developed by VMware and now owned by Pivotal Software – a joint venture by EMC, VMware and General Electric.
Cloud Foundry supports the full lifecycle, from initial development, through all testing stages, to deployment. It is therefore well-suited to the continuous delivery strategy. Users have access to one or more spaces, which typically correspond to a lifecycle stages. For example, an application ready for QA testing might be pushed (deployed) to its project’s QA space. Different users can be restricted to different spaces with different access permissions in each.
Cloud Foundry comes in three flavors.
Cloud Foundry Open Source Software (OSS): Available to anyone. Deploying this version of Cloud Foundry involves interfacing with the underlying infrastructure using the Cloud Foundry BOSH (bosh outer shell) deployment scripting language, another open source tool from Pivotal. The Baidu website is implemented on OSS Cloud Foundry.
Pivotal Cloud Foundry (Pivotal CF): A commercial product available from Pivotal. It provides extra tools for installation and administration not included in the OSS product.
Pivotal Web Services (PWS): An instance of Pivotal Cloud Foundry hosted on Amazon Web Services (AWS).
Heroku is cloud Platform-as-a-Service (PaaS) platform based on a managed container system, with integrated data services and a powerful ecosystem, for deploying and running modern apps. The Heroku developer experience is an app-centric approach for software delivery, integrated with today’s most popular developer tools and workflows.
Heroku supports several programming languages such as Java, Node.js, Scala, Clojure, Python, PHP and Go. Heroku makes it easy to deploy and scale Java apps in the cloud. Whether you prefer to use the standard libraries with application servers like Tomcat or Jetty, or frameworks like Spring or Play, Heroku gets out of the way — allowing you to build things your way, with the tools you love.
Jelastic (acronym for Java Elastic) is an unlimited PaaS and Container based IaaS within a single platform that provides high availability of applications, automatic vertical and horizontal scaling. Jelastic provides all of the features of a sophisticated PaaS (like Heroku) but also integrated the key elements of infrastructure-as-a-service (like Amazon). Their hosting customers demanded a full vertical stack that could be installed on bare metal and be easily managed with turnkey features like billing integration.
Today, Jelastic’s Platform-as-Infrastructure is rapidly becoming the standard for hosting service providers worldwide and is penetrating the enterprise market by delivering a superior turnkey cloud environment at a fraction of the cost of existing virtualization solutions.
Jelastic is unique in that it does not have limitations or code change requirements, and it offers automated vertical scaling, application lifecycle management, and availability from multiple hosting providers around the world. Jelastic support IntelliJ IDEA and Eclipse via plugins.
Advisers to the Jelastic team include the creator of PHP Rasmus Lerdorf, the father of Java James Gosling and Brazilian JavaMan Bruno Souza.
IBM SmartCloud is a line of enterprise-class cloud computing technologies and services for building and using private, public and hybrid clouds. SmartCloud offerings can be purchased as self-service or managed services.
IBM cloud includes infrastructure as a service (IaaS), software as a service (SaaS) and platform as a service (PaaS) offered through public, private and hybrid cloud delivery models, in addition to the components that make up those clouds. IBM places these offerings under three umbrellas: SmartCloud Foundation, SmartCloud Services and SmartCloud Solutions.
SmartCloud Foundation consists of the infrastructure, hardware, provisioning, management, integration and security that serve as the underpinnings of a private or hybrid cloud. Built using those foundational components, PaaS, IaaS and backup services make up SmartCloud Services. Running on this cloud platform and infrastructure, SmartCloud Solutions consist of a number of collaboration, analytics and marketing SaaS applications.
IBM offers five cloud provision models:
- Private cloud, owned and operated by the customer
- Private cloud, owned by the customer, but operated by IBM (or another provider)
- Private cloud, owned and operated by IBM (or another provider)
- Virtual private cloud services (based on multi-tenanted support for individual enterprises)
- Public cloud services (based on the provision of functions to individuals)
OpenShift is Red Hat’s Platform-as-a-Service (PaaS) that allows developers to quickly develop, host, and scale applications in a cloud environment. With OpenShift you have a choice of offerings, including online, on-premise, and open source project options.
With OpenShift you can easily deploy and run Java applications using your favorite application servers and frameworks. Want a JBoss server running Spring backed by MySQL? Or maybe you’re looking for GlassFish with Scala and MongoDB? If it can run on Red Hat Enterprise Linux 64bit, then it can run on OpenShift.
OpenShift supports both source and WAR file deploys and modification of server.xml.
There are many more other things which may interest you as a developer. I will encourage you to explore more on cloud.
Happy Learning !!