Published at DZone with permission of Bruno Terkaly, author and DZone MVB. (source)
IaaS and PaaS – Do you know the difference?
- Automation is taking over the world.
- Machine Learning, Smart Robots is what humankind can expect more of.
- A radical technology revolution is fast replacing human beings with machines in virtually every sector and industry in the global economy.
- As unpleasant as this may sound to some, technology doesn’t wait for anybody.
- Our job as technologists is to stay smarter than the robots. “Keep your friends close, keep your robots even closer”
- This ever increasing use of smart software to replace humans is occurring throughout the industrialized world.
developing nations are working with global companies to build
state-of-the-art high-tech production facilities that are supremely
- Cloud computing is once such area that stands to gain tremendously with this phenomenon. Traditional IT shops are redeploying IT workers to other activities that provide better business value.
- Microsoft is working hard to improve automation in the cloud.
- It is call Platform as a Service and leverages Microsoft's years of experience running large web properties.
- Some have postulated that Microsoft was too innovative, that PaaS is too radical a departure for what developer and architects are used to
- Let's explore some quick differences between Infrastructure as a Service and Platform as a Service.
what really interests me are some of the deeper details which I will
provide about exactly the level of automation you can expect when
working with Azure.
- I hope to convince you why PaaS is inevitable and destined for greatness.
is not about Microsoft today but all companies that innovate and find
ways to let developers focus on their applications and not worry about
all the cloud plumbing details.
IaaS – Less automation
- We will address both technologies, but there are many more nice things to say about PaaS.
- Historically, cloud computing has been about IaaS.
- But IaaS lacks the automation of PaaS.
- We'll do a brief discussion about IaaS.
- PaaS still leverages VMs but PaaS does so much more.
Gallery of Linux VMs
- With Infrastructure as a Service (IaaS), developers must directly interact with a portal or execute scripts for VMs to be created.
- A virtual machine (VM) in Windows Azure is a server in the cloud that you can control and manage.
- After you create a virtual machine in Windows Azure, you can delete and recreate it whenever you need to, and you can access the virtual machine just as you do with a server in your office.
- Virtual hard disk (VHD) files are used to create a virtual machine. Virtual machines are typically abbreviated VMs.
- There is little or no automation with respect to leveraging IaaS technologies (relative to PaaS).
- These low level tasks need to be done at the portal or through scripting.
- There are scripts for Windows, Macintosh, and Linux. You can download the scripts here: http://www.windowsazure.com/en-us/manage/downloads/
- Commands to manage your account information and publish settings
- Commands to manage your Windows Azure virtual machines
a new Windows Azure virtual machine. By default, each virtual machine
is created in its own cloud service; however, you can specify that a
virtual machine should be added to an existing cloud service through use
of the -c option
- Commands to manage your Windows Azure virtual machine endpoints
- Create, delete and list endpoints
- Commands to manage your Windows Azure virtual machine images
- Get a list of available images
- Commands to manage your Windows Azure virtual machine data disks
create images, you can either capture an existing virtual machine or
create an image from a custom .vhd uploaded to blob storage
- Commands to manage your Windows Azure cloud services
- Create, delete and list available cloud services
- Commands to manage your Windows Azure certificates
- Create, delete and list available endpoints
- Commands to manage your websites
- List, create, browse, show details for Azure web sites
- Generally speaking, developers telnet into the computer hosting the VM and download software and execute installation procedures.
- The portal offers a limited degree of automation.
- Choose from a library of VMs
- The portal allows developers to select from libraries of pre-inialized VMs containing:
- Windows Server 2008/2012, CentOS, OpenSUSE, SUSE, Ubuntu, and more.
- The process of deploying and scaling with IaaS boils down to cloning pre-configured VM instances.
- Entire VMs are built-up from scratch and then replicated as needed to reach the needed scale.
- The VMs have only the base operating system.
- It is very common to install many additional packages, such as:
- Apache for web
- PHP for the web server environment
- Drupal for CMS. maybe WordPress.
- MySQL, MongoDB, etc
- The upside of IaaS
- More control over custom configurations
- But the price is that more administrative tasks needed.
- Many developers feel more comfortable setting up their own VMs and scaling those.
- What is missing from IaaS solution is the beauty of an autonomous robot (Fabric Controller) doing things for the developer is simply not there.
- With that said, the lines of automation are blurry as IaaS does provide some level of abstraction above a raw VM and is increasing in scope.
Enter Robot – Your faithful servant
- Microsoft supports both Linux and Windows in its IaaS offering.
- You can run Windows 2008 and Windows 2012 in Windows Azure using IaaS techniques.
- Windows Azure directly supports several flavors of Linux, such as CentOS, Suse, OpenSuse, and Ubuntu.
- A gallery of available Linux distributions is available
- You can also create your own custom images based on these distributions and re-use them at a later time when additional scale is needed.
- You can also download these VMs and run them on premise if required.
- VMs are portable and self-contained.
- Let’s be clear that the diagram above is IaaS.
- Recall from the previous points raised that this does not have fabric controller to automate routine tasks
- System Center Advisor and other tools provide some health monitoring
- System Center Advisor (http://www.systemcenteradvisor.com) is an online service that analyzes installations of server software.
- Advisor collects data from your installations, analyzes it, and generates alerts that identify potential issues (such as missing security patches) or deviations from identified best practices with regard to configuration and usage.
- The analyzed data is regularly sent from the agent to the gateway for upload to the Advisor web service.
- If the data indicates an issue or a deviation from best practices, an alert is generated.
- By connecting a web browser to the Advisor portal, you can view the alerts and the associated remediation guidance.
- In addition, the load balancer supports a probe with which to mitigate unplanned downtime for your web workload.
- There is a partner ecosystem, like RightScale,for example.
your Windows Azure public cloud deployments alongside your private
cloud deployments – using the same configuration and automation
methodology for both
- Automate Provisioning and Operations:
Use customizable pre-built RightScale ServerTemplates™ for dynamic
configuration, including an out-of-the-box scalable 3-tier .NET
The Fabric Controller is running the data center
- In the world of Platform as a Service, the Fabric Controller does all the heavy lifting.
- The Fabric Controller is simply the operating system for the data center.
- It is the robot automating everything.
- For starters, there is no need to telnet or manually copy setup files and scripts.
- VMs are present with PaaS, but the developer is at a higher level of abstraction.
- Developer only worries about their application and the data
- There are fewer concerns with such things as opening http and tcp ports as well as setting up load balancing and networking.
- The Fabric Controller is engaged for some very important duties and is the operational heart of Windows Azure.
- The Fabric Controller provisions, stores, delivers, monitors and commands the virtual machines (VMs).
- Azure is essentially a highly automated collection of virtual machines.
- The Fabric Controller is a distributed stateful application distributed across data center nodes and fault domains.
- Fault domains are points of failure, something the Fabric Controller needs to understand well, since controlling failure conditions one of its primary operational goals.
- There are many running instances of the Fabric Controller in a data center.
- After all, there needs to be redundancy everywhere, not the least of which is the Fabric Controller instances.
It slices, it dices – but that’s not all
- The fabric controller deploys host operating systems to the hardware in a data center.
- It uses a PXE boot server approach and then adds all the need components that makes up an Azure host machine.
- Sysprep, which has been around for many years, is a tool used by system administrators to automate the deployment of operating systems.
- The fabric controller uses this tool.
- The fabric controller takes that mundane chore out of system administrator's to-do list.
- The fabric controller works with a special service that is installed on each Windows Azure host machine.
- Note the black boxes labeled Special Azure Host Service.
- This special service is a mini state machine, tracking two things: the current state of the server and the goal state.
- A goal state might be to run a worker role.
- A worker role is a long running background process.
- But the goal state could be to host a web role.
- A web role is a process running within Internet Information Server (IIS).
- It might also be to remain idle as part of the free inventory of host machines.
- The Fabric Controller and this special service manage how the system gets to the goal state from the current state.
- If the host machine ever reaches the undesirable faulted state, the fabric controller and the special host service must work together to get to the goal state
- This might mean forcing a reboot or reprovisioning the entire software stack on the faulted machine.
- Under PaaS the developer rarely needs to telnet into the server.
- Instead the developer communicates to the fabric controller through configuration files.
- The developer defines operational parameters through configuration files that are part of the Visual Studio project setup files.
- Developers can indicate such things as operating system, CPU size, instance count, and open endpoints.
- The fabric controller must know these parameters when it deploys your application to Azure host machines.
- During the provisioning process, the fabric controller uses machine learning techniques to take into account the probability of failure, given where an application is deployed, relative to the rack, router and switch placement in a data center.
- Azure breaks down a data center into various update and fault domains, which are statistically managed methods to minimize failure.
- There are multiple copies of the fabric controller running inside a Microsoft data center.
- The Azure machines that host applications in Microsoft data centers are known as nodes to the fabric controller.
- The state of each node is replicated and synchronized across all the redundant fabric controllers, ensuring that all state tracking is 100% up to date among all fabric controllers in a data center.
- If any of the "fabric controllers" go down, all existing services will still continue to run.
Fabric – A data center ruled by robots
- The fabric controller protects developers from all sorts of hazards.
- Regardless of whether the error is in software or hardware, the fabric controller can keep applications up and running, even during upgrades, patches, and updates.
- Increase/Decrease Scale
- With PaaS, the fabric controller also helps tremendously with increasing and decreasing scale. There are many ways to communicate with the Fabric controller, although never directly, to tell it to scale up more instances of your application.
- One way is with the Windows Azure Portal, where the instance count for a particular deployment can be increased or decreased.
- There are also frameworks that can automatically change scale based on some performance counter.
- Microsoft has also released a series of PowerShell cmdlets to support automation through scripting.
- A RESTful management API also exists to support adjustable scale.
- The Fabric Controller can do upgrades with the utmost of grace, keeping your application up and running throughout.
- The fabric controller also performs "rolling upgrades", allowing your deployments to be upgraded or patched without downtime.
- The core value of PaaS is that it lowers risk and saves money.
- PaaS is more economical simply because there is more automation and fewer areas where developers can make mistakes.
- Fewer mistakes occur because PaaS applications tend to be more standardized and more homogeneous
- Integration with other systems is generally easier.
- Lower Risk (Key Point)
- PaaS architectures also lower risk because the fabric controller is always monitoring uptime and will restart failed instances automatically.
- Some Guarantees
- With PaaS Microsoft offers a SLA of 99.95%.
- Of course some downsides do exist.
- There are two primary downsides to PaaS as a way to architect applications.
- First is the fact that there is less architectural flexibility as compared to directly managing VMs, where developers can install practically anything.
- Converting to PaaS from other architectures often takes re-writes, although much of the code can often be re-used.
- The other downside to PaaS is that there is more vendor lock in.
- Essentially, you are writing to the PaaS specification as defined by Microsoft.
- The Windows Azure Storage Service works with both PaaS and IaaS technologies
- Microsoft provides a lot of data storage options for developers using Windows Azure.
- First, there is SQL Database, formerly known as SQL Azure Database, which enables organizations to leverage familiar tools and the power of Microsoft SQL Server technology.
- Outside the relational world are NoSQL-like capabilities, such as Azure Tables which offer virtually unlimited scaling capabilities at a low cost.
- Blobs provide inexpensive storage for collections of large single large binary objects, such data such as video, audio, and images.
- All data is replicated 3 times.
- Run almost any database supported by Windows and Linux
- Windows Azure also offers the ability to run SQL Server in a virtual machine on Windows Azure.
- Using Microsoft’s IaaS offering, developers can host both Windows and Linux based database software systems.
- IaaS technologies do not have a fabric controller But the downside there are no guarantees about database availability.
A collection of background processes
- One way to think about the cloud is that it is composed of various fabrics
- Fabrics are clusters or racks of computers with an intelligent robot doing the management
- One fabric could be the web fabric
- This fabric focuses on making web roles available
- Another fabric could be the data fabric.
- Developers should choose from an array of data options
- All the fabrics discussed represent ways to use compute and storage resources flexibly and at scale
- The metaphor would be the electrical plant that needs to spin up new power generators if demand for electricity increases.
The Fabric Controller at work
- You can visualize your background processes as a bunch of worker roles (or worker processes) running on some VM of your choice.
- You may choose from various flavors of Windows and Linux
- You may want options in terms of the programming languages.
- Use C#, Java, Python, F#, including almost any Linux-based implementation
IaaS – Windows or Linux
- Platform as a Service involves a sophisticated Fabric controller as explained previously.
- Currently, Azure does not support PaaS functionality for Linux.
- Notice the VMs are Windows
The Azure Storage Service is available to IaaS and PaaS
- Notice this represents the IaaS offerings
- Recall from the previous points raised that this does not have fabric controller to automate routine tasks
And the winner is…
- The takeaway on this slide is that there a huge amount of data options with Azure
- This post had 3 goals:
- PaaS is the future because it makes business sense
- Fewer errors, greater standardization, easier to scale, greater automation, better economics, more fault tolerant.
- IaaS is more flexible but more labor intensive.
- Developers are currently more comfortable and familiar with IaaS
- IaaS is easier when migrating to the cloud
- At the end of the day, PaaS is the way to go.
- The level of automation provided by the Fabric Controller is the key to its future success.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)