% Cloud Computing

When Enterprises started to move from their virtualized servers to public Data Centers (DC) the \textit{Cloud Computing} appeared, in particular it was born in 2006 with Amazon Web Service (AWS) that provides mostly computing and storage virtualization.
In the Data Center there are a lot of equal COTS, so all the hardware is virtualized and there is no difference where a VMs is allocated, because the performance are the same.\newline
There is an \textit{Orchestrator} which is a middle-software whose purpose is to check and to control all the physical servers in the Data Center. It decides where a certain VM's instance will started, based on some metrics as the workload of the CPU, the amount of free memory or the number of VMs already present. 
This approach provides new features and advantages to company as:

\begin{itemize}
	\item 
	elasticity, where the Cloud Computing approach brings and easy way to scale up or down, because the Data Center has unlimited resources, as CPU but also storage, database or load balancing, to be provided on-demand if needed;
	\item
	always available, this virtualized environment supplies business continuity that means\break services are always on, anytime and anywhere, with the guarantees of 5-nines availability;
	\item
	separation of concerns, this is the main key of the success of this technology, because it allows the users to focus on their business and they do not need to know anything about the cloud infrastructure or any implementation details.
\end{itemize}                      

Companies began to use solution based on the Cloud Computing also for side effects that this technology has, for instance the management of software updates is instant and it could happen automatically, moreover customers has unlimited resources available and they could ask more CPUs, memory or storage if they need.

Cloud operator, besides, can provides \textit{redundancy} and \textit{data replication} to increased data\break reliability and other services as \textit{Geo-localized} one in which they run client applications in the Data Center closer to the user to have better performance.

\subsubsection{Service Models}

At the beginning, Cloud Computing offers only a way to host VMs with applications of other companies, but many different services can exploit this environment using the paradigm of \textit{``as a Service''} (Figure \ref{fig:Service_model}).

\begin{itemize}
	\item 
	Hardware as a Service (HaaS): in this case the Cloud provider gives hardware where VMs could run, a location where placed these physical servers and all the facilities to make all this stuff running as conditioning, power and network connectivity.
	The customer has full control of physical structures, so it is mostly like to have servers in the company. This solution is chosen if there are strictly security requirements, unless it is not so spread.
	\item
	Infrastructure as a Service (IaaS): it is the most used case, it provides the virtualized\break environment in which customers can create virtual machines, networks and storage. This solution is suitable for legacy applications and users that need the full control over the\break infrastructure. However, a lot of work needs to be done to install OSs, to update all the VMs and to handle all the security stuffs as firewalls.
	\item
	Platform as a Service (PaaS): this solution works for new services and application\break development. It offers a basic environment where new software can take advantage of it for deploy other services as Databases or Web Services. The tenant, which is interested in PaaS, does not need to know or to manage any underlying details that concerns Operating System, updates or network connectivity. \newline
	All the management, related to the service provisioning, like load balancing, number of \break instances as so on, is handled by the Cloud Provider. Here, it comes out the problem of the PaaS provider lock-in, this is due to a non standardization of the interfaces between different providers and this leads to a limited or impossible portability of the software developed.
	\item
	Software as a Service (SaaS): users use directly the software provided by the cloud\break infrastructure without worrying about anything of the implementation, virtualization or connectivity. It is easy and fast to give the service and to be used by customers. \newline
	This solution it is mostly suitable for standard, often used applications and this means that it is hard to create customized services and also not so interesting from the cloud provider point of view.
\end{itemize}

\hfill
\begin{figure}[ht]
	\centering{\includegraphics[width=0.95\textwidth]
		{IaaS-PaaS-and-SaaS.png}}
	\caption{Cloud Service Models: Haas, IaaS, PaaS and SaaS.
		\label{fig:Service_model}}
\end{figure}

\subsubsection{Deployment Models}

Cloud Computing grows up thanks to theses types of \textit{Service Model} and this brings at new type of \textit{Deployment Models} in which virtual environments could be instantiated:

\begin{itemize}
	\item 
	private, the company has its own cloud infrastructure that must be managed and maintained by it self. This solution is the most expensive, but it provides the best solution for strictly security requirements;
	\item
	dedicated hosting, it is the HaaS solution mentioned in the Service Models in which the customer rents physical server from the cloud provider;
	\item
	public, it is like the dedicated hosting, but the customers rent virtual machines instead of physical servers. This deployment fits well the \textit{pay-per-use} approach where the client pays for what he effectively used in terms of time or resources;
	\item
	hybrid, it is a mix of Public and Private Deployment, the customer has his own cloud but with limited resources, so in case of peak load he can move some of his VMs on the Public Cloud to reach better performance and to scaling up faster.
\end{itemize}

\subsubsection{Limitation of Cloud}

As we seen Cloud Computing spreads so fast for all the features that allows company to grow up faster and, at the same time, save a lot of money. This new technology is not a win-win solution, because it has different limitations.

\begin{itemize}
	\item 
	Network connection: the network connectivity is the most critical point here, because Cloud Computing requires not only a reliable Internet connection, because without it all the\break resources cannot be accessible outside, but also we need to consider some metrics as the latency and delay time. Indeed critical real-time applications not fit well this solution and they moved to the new conception of \textit{Frog Computing};
	\item
	Available features: it means that some Service Model has less flexibility than others as SaaS, in which the software offered by the provider has some characteristics, but it may not have some others that are more interesting.
	Paas has the same limitation, due to proprietary interfaces provided to host companies' applications that limit their portability;
	\item
	Data: users has no more a full control over the data, where it is generated and where it is stored. This has to face a lot of privacy and ownership problems that before Cloud Computing does not have to be handled.
	
\end{itemize}
