“Cloud” is the most buzzing world in industry today. Everyone seems to be rushing towards it. All large corporations, with deep pockets, are investing in or utilizing it. At the same time, it looks like a puzzle for most developers. Let’s solve this puzzle today and understand what exactly is underneath it. What all things make the cloud so interesting and useful? And more important questions, what’s there for us as developers when we talk about cloud development?
1. What is Cloud Computing?
Simply put, cloud computing is computing based on the internet. Generally, the term “cloud” refers 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 for something on the internet, you are benefiting from a few capabilities of cloud. In these examples, the power of processing technology is used, which exists in distant locations and is not known to the users. There are many other 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 the cloud.
On-demand Capabilities
Users can provision cloud computing resources without requiring human interaction, mostly done through 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 the network and should not have any restrictions on client applications that can connect to them. One should be able to use either office desktop, laptop or mobile/smartphone 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.
Resource Pooling
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.
Rapid Elasticity
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 in time. e.g. On top load for your application, cloud will assign your resources to process all tasks – but when load is low, those resources will serve others.
Measured Service
Resource usage is monitored, measured, and reported (billed) transparently based on utilization. If you have used or known amazon cloud infrastructure, it offers you hundreds of services – but you are charged only for what services you use and how many resources you consumed in a month. In plain English, it’s Pay Per Use.
2. Advantages of Cloud Computing
Today, if you post status on Facebook, book an airline ticket, or transfer funds from mobile, high chances are you are using some of the services offered by cloud on the backend. More and more organizations are moving to cloud at a very fast pace, why? It’s because cloud computing increases efficiency, helps improve cash flow and offers many more benefits, while efficiently solving some of the most complex problems that small businesses face daily.
Let’s list down some benefits, the 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 everyone enterprise-class technology access. 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 the capability to schedule the backups, so you do not lose data due to any mistake from either your end or any other factor. You have backup, which you can roll back to with minimum effort, mostly only few mouse clicks.
- Latest and Timely Updates: Cloud providers take care of software for you and roll out regular software updates – including security updates – so you don’t have to worry about wasting time maintaining the system. 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.
3. 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).
3.1. Infrastructure as a Service (IaaS)
IaaS offers physical computers or (more often) virtual machines and other physical resources. If you have 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 come under this category. They are mostly virtual machine-based solutions where a certain amount of resources 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 software and databases though it’s entirely possible that the cloud vendors 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.
3.2. 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 an 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.
3.3. 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 include workflow management, groupware and collaboration, supply chain, communications, digital signature, customer relationship management (CRM), desktop software, financial management, geospatial, and search.
- Web 2.0 applications include metadata management, social networking, blogs, wiki, and portal services.
4. Cloud Deployment Models
The deployment model largely refers to services offered to single or multiple organizations.
They are divided into 3 main categories:
4.1. Public Cloud
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.
4.2. Private Cloud
A private cloud is an 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, 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 its infrastructure for a specific company.
4.3. Hybrid Cloud
A 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.
5. Java Cloud Providers
The following are some major cloud environment providers where we can test, deploy and scale our applications.
Oracle Java Cloud Service
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 you create are also preconfigured to use your instance in Oracle Database Cloud – Database as a Service, and an object storage container 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.
AWS SDK for Java
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 easily get started with the SDK using the AWS Toolkit for Eclipse. The AWS Toolkit for Eclipse is a plug-in for the Eclipse Java IDE, making 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
Google App Engine applications are easy to create, maintain, and scale as your traffic and data storage needs change. With App Engine, there are no servers to maintain. You upload your application, and its 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 rollbacks, and security scanning are all supported natively and are highly customizable.
To run an application on App Engine, you will need the following:
- An
app.yaml
file that describes your application’s runtime configuration, which includes the minimum and maximum number of instances and the desired CPU and RAM.Apom.xml
file 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.
Cloudfoundry
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 Java
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
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 installed on bare metal and 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
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
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 that may interest you as a developer. I will encourage you to explore more on cloud.
Happy Learning !!
Comments