Chapter No.
6
Open source and proprietary cloud services both aim to provide end-users with reliable software.
Some users prefer the backing of a large company like Amazon or Microsoft, with a tailored list of
compatible programs and services. Others prefer the interoperability and flexibility of open source
alternatives like OpenStack or Eucalyptus. It's not necessarily an issue of right or wrong, for some
people open source software is the obvious choice. Those who want more managed solutions may
find proprietary solutions the ideal choice.
1. Charging for Software
Generally, open-source models are free and won't charge for the use of software. Proprietary models
may offer free packages at first, but ultimately always end up costing the customer. Many updates to
proprietary software are free, but significant upgrades and the ability to add new packages often
comes with a fee. Charges can also come in the form of a per-user fee. Open source options are
based
more on the development of a community. They take direction from the demands of the market and
tend to start with a small collection of developers and users. Successful projects are quickly picked
up, while others are left to languish in obscurity.
2. Vendor Limitations
Vendor lock-ins occur with proprietary software. This means that the website and software used
with
a proprietary vendor can't be taken to another provider. It also limits the ability to use other
providers
with the knowledge to use a particular product. In contrast, open source products are more flexible
and allow users to move between different systems freely. Open source cloud computing offers a
greater range of compatibility between several different products. Typically, if a proprietary solution
goes out of business the end-user is left with an unusable product. With open source projects, there
is
usually another project or fork that can take off where the old one left off.
3. Modifying System Code
Proprietary software doesn't allow the manipulation of the source code. Even simple modifications
to
change styling or add features are not permitted with proprietary software. This can be beneficial
for
users who are happy with a set of features that is completely managed by one company. For those
who like to tinker and adjust software to their needs, it may not be an ideal solution. Open source
options allow for modifications and a company can even create an entire fork based off the existing
software. When a feature doesn't exist within an open source application, a developer can be hired
to
incorporate the feature into the product.
4. Licensing and Hosting Costs
Using proprietary software isn't for the faint or heart or light of wallet. Licensing and hosting fees
are
often higher with proprietary software. By using open source options, users can avoid having to pay
operating system costs, and per-product fees to use the software. This provides more flexibility to
those who run open source platforms. A new software package or feature can be quickly added on to
an existing installation without the need to purchase a license. Additionally, proprietary software
requires the use of commercial databases, which further add to the total cost of operation.
5. User Documentation
Product documentation is often more involved and useful with open-source software. The reason for
this is the large communities that often follow and support open source projects. Help
documentation
for proprietary software is often only surface level. This is partially due to the service-based nature
of
proprietary software. It's more profitable when consumers have to rely on the company for support
and technical services. However, this can negatively impact business if an update goes wrong and
echnical support can't immediately correct the issue. Open source applications come with
substantial
documentation that is typically updated with each product release and freely available online.
6. Security and Performance Considerations
When you have an entire community of developers poking and prodding at an application, you tend
to have better security. Many of the features that are put into proprietary software are designed to
keep the software from being modified. This adds bloat to the code and prevents the option for a
light
and lean product. Additionally, excess code leaves more room for security and stability flaws. With
open source software, there are many more eyes looking at the code and fixes tend to come in much
more quickly than with proprietary software. Security and stability tends to be higher with open
source applications, but users must keep their software updated. Out of date applications are just as
vulnerable to data breach and infiltration as proprietary systems.
What is driving the adoption of cloud services?
Reduced capex and opex to deliver business services.
It minimises IT costs by reducing delivery times and improves the quality of the app
development process.
Changing business model 3 enterprises will soon become integrators of the best-of-the-
breed services through collaboration.
New regulatory requirements driven by a global collaborative economy and a need to
address open markets.
A digital explosion that is raising the bar to deliver a better customer experience.
Transformation and optimisation across different process stacks 4 sales, front-office,
middle office and back office
Open source cloud characteristics :
Characteristics of the open source cloud
The open source cloud has the following characteristics:
No vendor lock-in and there is seamless integration of the enterprise applications,
products and systems developed/deployed by different organisations and vendors.
The source code will be made available for the community, for adopters and end users to
study and modify the software and to redistribute copies of either the original or the
modified version. Source code will also be free from any royalty.
With no vendor monopoly, the use of free and open standards is possible. With data
transferability and open data formats, there are greater opportunities to share data across
interoperable platforms.
Adoption of open source software enhances the interoperability with other enterprise
solutions because the reuse of recommended software stacks, libraries and components is
possible.
Cloud computing layers using open source:
Cloud computing layers using open source
The following sections briefly describe the technologies to be adopted on the cloud, and the
equivalent open source components and products.
The cloud platform: Cloud based open source technology enables enterprises to accelerate
innovation, creating and deploying applications with speed and consistency.
Application platforms handle complex connectivity issues behind the scenes (including automatic
documentation), letting users concentrate on creating the right workflows and business logic, but
also
making it easier and more cost effective for organisations to manage frequent change. It is
imperative
to ensure that the integration solution is optimised for connecting the new applications in the cloud
environment with older applications, systems, services and databases, no matter where they are
located.
Open Application Programming Interfaces (APIs): The application’s architecture uses open APIs
to enable quick and transparent integration with other enterprise applications and systems
implemented by various organisations, thereby providing access to data and services and promoting
user/developer participation for the benefit of the community.
API management includes the full API management life cycle, as well as the integration with
diverse
applications and appliances to support management, monitoring and tracking of all your API
activities.
Large complex systems in enterprises follow the API-centric approach when exposing services for
integration with multiple third party solutions. The APIs are RESTful, XML based, and stateless
services. All APIs are accessible through the HTTPS protocol.
Service discoverability: This is the process of client applications querying the central registry to
learn the location of services. Service discoverability ensures that the metadata attached to a service
describes the overall purpose of the service and its functionality, which makes the services easily
discoverable. A repository of reusable business logic components needs to be maintained and made
available to enable service discoverability.
Consul, Apache Zookeeper, Etcd, Netflix Eureka, etc, are the widely used open source service
discovery tools.
Platform and database agnostic: Applications must be forward and backward compatible as well as
deployable on any technology platform. They should be able to communicate with any data store.
For example, Jenkins is a continuous delivery tool that builds and tests software after every change.
Jenkins can deploy new code to production, which helps in no downtime when making the
upgraded
product available to constituents.
PostGreSQL, MySQL, MongoDB and CouchBase are the widely used open source databases
Microservices: The design of the business and information services layer of the enterprise
application is developed using microservices architecture principles and cross-channel capabilities.
Micro Services Architecture (MSA) allows the creation of services that are loosely coupled and
have
different programming language bases. These are scalable and have a quicker delivery time. MSA
enables the development of new enterprise applications as reusable microservices based on open
standards, which expose the standard recommended integration interfaces. This ensures independent
scaling of individual services within an application with better resource utilisation.
Application life cycle automation tools like Ansible help in tracking, deploying and measuring the
changes in and enhancements of microservices.
Mozilla, Jboss, AngularJS and Bootstrap are the frequently used open source development tools
today. Other popular open source tools are Joomla, Jetty, OpenSSO, SOLR, Chef, Spring and
WordPress.
Deployment architecture: The deployment platform chosen should be one that reduces the overall
deployment complexity and supports open source based architectures. The suggestion is to consider
using a dynamic component system for Java (e.g., OSGi).
Components can be installed, started, stopped, updated and be uninstalled without bringing down
the
whole system. This can significantly reduce deployment times.
Integration: The value of a strong integration system lies in its ability to connect to a wide range of
backend systems. It provides mediation, transformation, protocol and routing capabilities, and acts
as
a gateway to integrate with core back-end systems. It also provides aggregation and broker
communications. Therefore, it is important to consider an experienced integration solutions vendor
who has the ability to connect to other databases, frameworks, applications and endpoints.
It is important to go with open standards and open interfaces while choosing the integration back-
end
as it should be free from vendor-specific modifications and proprietary hooks. Mule, JBoSS and
WS02 are the famous open source integration products that can be used to establish the digital
enterprise.
Security: Effective enterprise security is the need of the hour. It ensures that all the components of
the cloud infrastructure are guarded against the fast growing security threats. From the application
perspective, applications and endpoints need to be protected, and users granted access to
applications
as per the eligibility configured as part of the RBAC (role-based access control).
Oauth2 and OpenID are a few of the open source tools that can be used for enterprise security.
Customer experience: The customer experience is the sum of all the interactions between an
organisation and a customer over the duration of their relationship. A good customer experience
means that the individual’s experience at all points of contact matches expectations. While building
applications, make sure that they meet the customer’s expectations when using the app.
Analytics: Enterprises may apply analytics to customer services to describe, predict and improve
service performance. Predictive analytics and enterprise decision management helps the business
services to be data-driven.
Scikit-learn and TensorFlow are a few open source machine learning tools.
PaaS: This category of cloud computing services provides a platform allowing customers to
develop,
run and manage applications without the complexity of building and maintaining the infrastructure
typically associated with developing and launching an application. This is the core platform on
which
cloud native applications and supporting systems are based.
Cloud Foundry, Cloudify and OpenShift are a few open source PaaS platforms.
The key considerations when choosing an open source cloud platform are listed below:
Deployment flexibility
Ease of operations
Choice of application stacks
Language, database and framework support
Scaling capabilities
QoS
Tooling for development and operations
How well it meets the needs of the business
An open source cloud is designed and developed using open source technologies and software such
as:
An open source operating system
An open source mobile OS
Open source application servers
Open source middleware
Open source database
Open source analytics database
Open source software development frameworks
Open source workflow and business applications
Open source monitoring tools
Open source virtualisation stack (hypervisor, virtualisation management)
Open source security solutions
The following are some of the key open source cloud platforms.
OpenStack: This is open source software for creating private and public clouds, built and
disseminated by a large and democratic community of developers, in collaboration with users.
OpenStack is mostly deployed as Infrastructure-as-a-Service (IaaS), whereby virtual servers and
other resources are made available to customers. The software platform consists of interrelated
components that control diverse, multi-vendor hardware pools of processing, storage and
networking
resources throughout a data centre.
Cloud Foundry: This is an open Platform-as-a-Service (PaaS), which provides a choice of clouds,
developer frameworks and application services. Cloud Foundry makes it faster and easier to build,
test, deploy and scale applications. It has different distributions. A popular one is Pivotal, from
IBM.
OpenShift: This is Red Hat’s cloud computing PaaS offering. It is an application platform in the
cloud, where app developers and teams can build, test, deploy and run their applications.
Cloudify: Cloudify was developed and designed on the principles of openness to power the IT
transformation revolution. It enables organisations to design, build and deliver various business
applications and network services. The latest version of Cloudify is 4.3, and it incorporates
enhanced
features like advanced security, control and true self-service. Cloudify 4.3 introduced a totally new
concept for container orchestration with Kubernetes (Kubernetes Cloud Native Orchestration).
WSO2: This is a Platform-as-a-Service (PaaS) framework from the Apache community. It provides
the elastic scalability feature for any type of service, using the underlying infra cloud. WSO2 has a
microservices based architecture that supports various services. It fosters agility and flexibility with
open source.
Cloud Stack: This is an open source software platform designed to manage the cloud computing
environment. It is an Infrastructure-as-a-Service (IaaS) cloud computing platform. Various service
providers use Cloud Stack to offer public, private and hybrid cloud services.
loses the data by any chance, the copy version is restored from the other server. This
feature comes handy when several users work on a particular file in real-time and a
file suddenly gets corrupted.
8. AUTOMATION
Automation is an essential characteristic of cloud computing. The ability of cloud
computing to automatically install, configure, and maintain a cloud service is known
as automation in cloud computing. In simple terms, it is the process of making the
most of technology and reducing manual effort. However, to achieve automation in
the cloud ecosystem is not so easy. It requires the installation and deployment of
virtual machines, servers, and large storage. Upon successful deployment, these
resources require constant maintenance as well.
9. RESILIENCE
Resilience in cloud computing means the ability of the service to quickly recover from
any disruption. A cloud’s resilience is measured by how fast its servers, databases,
and network system restarts and recovers from any kind of harm or damage.
Availability is another major characteristic of cloud computing. Since cloud services
can be accessed remotely, there is no geographic restriction or limitation when it
comes to utilizing cloud resources.
10. LARGE NETWORK ACCESS
A big part of the cloud characteristics is its ubiquity. The client can access the cloud
data or transfer the data to the cloud from any place just with a device and internet
connection. These capacities are accessible everywhere in the organization and get to
with the help of the internet. Cloud providers save that large network access by
monitoring and guaranteeing different measurements that reflect how clients access
cloud resources and data: latency, access time, data throughput, etc.
Amazon Web Services (AWS)
Microsoft Azure
Google Cloud
Alibaba Cloud
IBM Cloud
Oracle
Salesforce
SAP
Rackspace Cloud
VMWare