[The following is a guest post by New Relic Lead Developer of Cloud Services Adron Hall- KF]
Before diving straight into what NoOps, AppOps, and DevOps are let’s first give platform-as-a-service (PaaS) some context. There are three general delineations that are commonly used in application hosting today: SaaS, PaaS and IaaS. Generally these acronyms are used to describe the three main differentiators in cloud computing, but they could be related to traditional hosting as well. Here are some simple definitions:
- SaaS – Software-as-a-Service is exemplified by things like Salesforce.com, Google Docs, Webtrends, Gmail and Hotmail. Basically, any Web application that end users interact with can generally be seen as SaaS. The most common scenario is SaaS that is hosted on top of some cloud provider’s solution.
- PaaS – Platform-as-a-Service is best exemplified by Heroku, Google App Engine (GAE), Windows Azure, Cloud Foundry based providers like AppFog, Stackato, and others. These providers have APIs and a vast architecture built atop any infrastructure that abstracts the scaling, management of instances, and other things that routinely are needed for hosting an application. PaaS can dramatically reduce the complexities of deploying a hosted application.
- IaaS – Infrastructure-as-a-Service is provided by companies like Amazon Web Services (AWS), Rackspace, and others. This is what PaaS and SaaS Solutions are usually built on. IaaS gives you the most control over what you’re building, with control and management responsibility of everything from the firewall, routing and individual instances.
These are the basic *aaS options. Each has specific advantages and disadvantages depending on the business need. How do NoOps, AppOps and DevOps fit into all of this? In many ways it’s still up for debate and in other ways it’s an outright argument.
PaaS and NoOps, or AppOps, or No… whatever!
NoOps is a term popularized by AppFog CEO Lucas Carlson as a term for hosted applications that are built entirely on a PaaS. This removes the need for developers to actually manage the instances, storage or other aspects that traditionally need to be managed. Many argue against this term, instead preferring a term like AppOps, which is more descriptive of where the operations actually are. In a PaaS deployed solution, a team needs only manage the application itself and maybe some development of the software. A PaaS solution provides an extremely fast way to deploy, build, and manage a hosted application. This could be a custom built application or something as easy and familiar as WordPress. Because of the focus on applications and high velocity application software development and deployment, PaaS is often referred to as AppOps because the staff handling operations ends up managing applications rather than there being no operations at all. However, rarely will you see anyone referred to as the Operations Team in a PaaS enabled company. Often the developers, application administrators or other people within the company will handle the operations because it requires so little time. One more slight point of confusion is that AppOps or NoOps could easily be associated with SaaS based applications as well. However, since the terms run counter to the term DevOps, they’re generally used in reference to PaaS solutions.
The Core Principles of PaaS
The core principles of PaaS based administration and development are the antithesis of the multiple-step process of traditional hosted application development and management. Traditional Development
- Get a machine to run the application on. You might have to order it, and in a traditional environment it could take hours or months depending on the processes involved.
- Load the operating system and configure it as needed.
- Setup the network and prepare it for the environment where it will live.
- Setup the hosting Web server or services files and folders in preparation for deployment.
- Build or setup the application autonomously from the system itself. Preferably on a development machine or in a development environment.
- Verify that the deployment of the configuration can be moved from one environment to the next. Such as from development to test or test to production.
- Push the code base and application dependencies into source control.
- In some way, get the application from source control to the server that was previously created: move, x-copy, use an msi installer, bash script or deploy.
Ouch, that’s 8 steps. Some of them extremely time consuming and painful. Let’s take a look at what we’d have to do to get the same application into a PaaS Solution.
- Tell the PaaS the domain name you want.
- Push the code base and application dependencies into source control. Github is always a good place to work from.
- Push your code live (see picture) by clicking Create or using a simple command line tool: af push
The Hard Core, The Power Users, The DevOps
PaaS Solutions aren’t for everyone. Sometimes a business needs access to the core instances, storage, networking, routing or other features of an IaaS offering like AWS. This is very common for legacy applications. When a major enterprise has several hundred applications that run on Windows Server or Linux and want to make the move into the cloud, these servers, databases and other vertically built solutions are moved into an IaaS solution. New greenfield applications are built using a PaaS. This provides the best of both worlds, with everything in a scalable, powerful, automated and managed environment.
So what exactly is DevOps?
As NoOps or AppOps basically manage applications. They also may do minor administration or development of applications in a PaaS Solution. A DevOps professional could tread into any of those realms in addition to running an IaaS environment. DevOps is really the apex of what the modern software developer (and operations/network/system administration) is becoming and needs to become. They provide the greatest horizontal and vertical ability to build, implement, deploy and scale hosted applications. One of the best quotes I’ve seen in regard to DevOps is from the devops.com blog: “Helping Finish What Agile Development Started.” The quote really holds the spirit and idea of DevOps. Cloud computing is one of the things that enables DevOps because on the cloud, everything can be controlled through code. The only place, really, that this is true is in IaaS or PaaS. DevOps also create systems that are self-healing, auto-scaling and setup for continuous integration and deployment. This set of key characteristics are what really drive the power and value of cloud computing. Without DevOps and this set of capabilities, cloud computing wouldn’t provide much that wasn’t already available. Cloud computing and DevOps are truly leading the industry into the future.