Last week, CenturyLink Cloud attended the Microsoft Worldwide Partner Conference in Houston, TX and hosted a booth where hundreds of attendees stopped by to talk about the cloud. Besides seeking what one attendee called “the best t-shirt from any conference, ever”, most people wanted to have a discussion about how the cloud could positively impact their business. With over 15,000 attendees from over 150 countries represented, this conference offered us a prime opportunity to hear about the interests and needs of a diverse audience.
Over the course of four days, I noticed a theme among the conversations I had with software vendors, Managed Service Providers, consulting companies, and even Microsoft themselves!
#1 - We’re past the “cloud 101” discussion
It appears that a vast majority of technical staff now understand the basics of the cloud value proposition. There was no “what is this cloud thing people are talkin’ about?” types of questions from any of the attendees. Rather, the questions and conversations were more nuanced as Microsoft partners were trying to figure out how they could capitalize on the cloud, and where the cloud was forcing them to change their existing set of products and services. Most people understood that the cloud brings agility, and that it may not result in an explicit cost savings. It was fun to brainstorm and debate the merits of cloud computing for specific scenarios and workloads and help people find the right uses for cloud platforms.
#2 – The market seems interested in much more than CPU cost and massive scale
Price drops and eye-popping case studies dominate the tech press, but these conference attendees were more focused on looking at the whole picture. Cheap CPUs and storage are nice, but there’s a lot more to running applications in the cloud than that. Likewise, the stories of customers running 50,000 core clusters or scaling to thousands of machines are fantastic, but those represent a small fraction of the daily workloads being run by small and large businesses. Instead, I heard again and again that organizations are looking for all-up value in a maintainable package. Many were asking about flexible provisioning options (i.e. locations, VM sizes, application services), enterprise-class management options, and a monthly bill they could understand.
The partners and users we talked wanted solutions, not just components.
#3 - The reseller market is a huge, unaddressed space
CenturyLink Cloud was at the show to tout our Reseller Edition capabilities that let customers rebrand and white label our cloud for their own needs. A handful of other cloud providers offer some type of reseller program, but few offer a comprehensive – and lucrative – set of services for offering someone else’s cloud as their own. I spoke to many software vendors who have to send their potential customers elsewhere to get temporary infrastructure to try their software. These vendors were very interested in being able to offer software AND a globally distributed set of infrastructure to run it on.
I also heard numerous consulting companies complain about the challenges of migrating the infrastructure of small customers to the cloud. They loved the idea of being able to offer “their” cloud to their customers and centrally manage and maintain modern and legacy systems – including those running Microsoft software – using the CenturyLink Cloud platform. Managed Service Providers were also looking to complement their existing product portfolio’s with cloud services and I saw that many of them are shopping around for a partner to collaborate with.
Building clouds is hard. Many smart companies have failed doing it. However, being able to rapidly white label someone else’s world-class cloud infrastructure is compelling and I heard that over and over again at the conference.
#4 - Usability matters
Cloud providers aren’t selling services, they’re selling an experience. Just about every cloud infrastructure provider is offering the same base capability to provision virtual servers. There are differences to be sure, but most providers are selling an experience delivered through programmatic APIs, web-based management tools, professional services, and a support organization. For the self-service options like APIs and web-based tools, usability is an enormous factor in the long-term success of the customer.
The easiest way for me to get people to stop at our booth was to do a demonstration of our platform. We are still one of the only cloud providers who features our software on our company home page. Why? Because we spend a significant amount of time crafting and optimizing a user experience that helps our customers quickly and efficiently provision and manage cloud assets. Organizations are asking their existing staff to maintain more (transient) infrastructure without adding new headcount, and we think it’s important to introduce thoughtful design and usability-focused enhancements wherever possible. The WPC attendees really responded positively to time-saving CenturyLink Cloud features like Group-based server management, server environment orchestration, server scheduling, global search, simple billing, and much more.
#5 - Cloud race is FAR from over
Some have said that we’re in the first inning of a nine inning game, and I agree. Cloud computing is in its infancy and while leaders are emerging, the market is constantly expanding. CenturyLink Cloud was attending a Microsoft conference where Windows Azure and Office 365 were front and center, and we STILL had hundreds of people approach us about partnering with us on their cloud efforts. That’s not an indictment of Microsoft’s cloud, but rather a fantastic example of the diversity of customer needs and the ability of cloud providers like CenturyLink Cloud to address unmet demand. I talked to VERY few people who had a fully committed cloud strategy and found that scores of attendees had workloads spread around different clouds, or were simply trying things out.
Want to partner with a successful, globally available cloud provider that delivers a well-engineered and easy to use platform? Give CenturyLink Cloud a try!
If you’ve ever looked at cloud server prices, or deployed a cloud server instance, you’ve likely noticed that most providers have a selection of “templates” to choose from. Users browse and select from a library of pre-baked server templates that contain combinations of compute, storage, operating systems, database technology, web servers, and commercial software. This isn’t the approach we take at CenturyLink Cloud, however.
We see at least two challenges with templates.
- Impossible for providers to match complete need, and difficult for customers to maintain custom templates. The number of templates offered by leading cloud providers range from dozens to thousands. With templates, the provider aims to offer as many useful combinations of OS + software as possible. However, this requires providers to engage in an endless quest to assemble server images that are useful to customers.
What if the customer doesn’t see anything they like? Sure, you can upload custom templates, but that shifts the maintenance responsibility to the customer. The provider may have automation tools available for updating and patching images, but enterprise IT departments may not have the necessary capabilities to do the care and feeding of a custom template library.
- Not a complete replacement for the way enterprise IT builds servers today. IT organizations don’t typically rely on a library of server templates when they build new machines. Instead, they follow a more assembly-line approach to stand up a server for a particular system. This includes selecting the operating system, joining a server to a domain, adding storage, and installing the relevant software. Advanced organizations have software catalogs that help with automated installation, but many companies still rely on physical media or installation files residing on shared network drives. So what’s the problem? We find that a template-driven model can give a misleading sense of deployment speed as the server is *available* quickly, but still requires a significant number of follow on tasks until the server is actually enterprise-ready.
So what is CenturyLink Cloud’s model?
The Better Way
Instead of relying on templates, CenturyLink Cloud offers a reliable orchestration engine (called Blueprints) that lets you choose what software and script commands to run when creating a new server.
There are three things that our customers like about this.
- Match unique needs through just-in-time software combinations. It’s impossible to pre-build server templates that match the individual needs of each customer. While a good template can serve as a foundation for subsequent manual activities, we went a step further. We offer a diverse set of base operating system templates, and offer a catalog of enterprise software products that can be layered on after the server is built.
The logical – and automated – extension to how IT builds servers today.Building a server isn’t just about installing an operating system and some software. System administrators go through a series of activities to provision storage, join network domains, acquire IP addresses, disable unnecessary services, and much more. Besides just offering a software catalog, we also provide a series of tasks and scripts that you can run against a new server. Tasks include activities such as adding a (public) IP address or taking a snapshot of the new server.
Scripts are commonly used to configure the server (and its corresponding software). CenturyLink Cloud’s build process lets you run a variety of scripts to get your server into a finished state.
Extensible to meet enterprise standards. We won’t claim to have all the software and scripts that you need to meet your enterprise security and software standards. That’s why we fully encourage you to upload your own software and scripts into a private library just for your organization. Anything in your library can be applied to your new or existing servers.
Do you have a unique script command to run just for a single server build process? The CenturyLink Cloud Blueprints engine supports custom PowerShell, Command, and SSH script statements that get executed after the server is built.
Customers are free to create and maintain server templates in the CenturyLink Cloud environment, and some do. But we’re seeing more and more customers opt for the orchestration engine approach. This way, customers can build servers exactly how they want them, every time! Check out our tier3.com Servers and Blueprints pages to learn more about how we help you automate the server build process.
In the first article of this series, we discussed the major things to consider when looking to create a software-as-a-service version hosted on a cloud platform. One major factor called out in that article was the need for a solid hosting environment. In this article, we will look at how to use the CenturyLink Cloud Enterprise Cloud Platform to package a web application for SaaS provisioning.
To provide some real-life applicability to this article series, let us work with a fictitious, but realistic, use case. Elections to government posts are a regular part of most societies and it’s becoming increasingly critical for candidates to have a robust web presence. Let’s imagine that a web developer successfully built a web site for a local candidate and has realized that this site template could be reused by multiple candidates. Recall from the previous article that an application can be multi-tenant (and thus easier to maintain for multiple customers) in multiple ways:
- All customers could reside on the same instance of the web application and database.
- Customers can share a web application but maintain unique databases.
- Each customer gets their own web application and database instance and MAY share underlying infrastructure.
There are benefits and risks of each choice, but let’s assume that our web developer chooses option #3 because candidates will be hesitant to intermingle their donor list with others in the same database, and each candidate may want to perform some unique customizations that wouldn’t be shared by all web application users. Option #3 only works at scale if your hosting provider has significant automation capabilities that can handle actions like OS patching, system upgrades, and server scale-out with limited manual intervention. Fortunately, CenturyLink Cloud offers substantial environment automation capabilities that make management of distinct “per customer” environments entirely manageable.
Today, this web developer has a simple two tier application.
What he hoped to have is the ability to bundle up this configuration, and deploy one of these “pods” for each customer. Then, he wanted to add a single provisioning and management interface that could be shared by all the customers. The CenturyLink Cloud Enterprise Cloud Platform allows servers to be managed in “groups”, so in this case, each customer (candidate) will be provisioned into their own group. This makes billing, scale thresholds, and configuration much more personalized.
Creating Application Templates
We’re going to help this web developer out by showing the steps necessary to get his application deployed in a SaaS-y way. The first activity to perform involved creating templates of each “pod” of servers. A basic pod consists of two web servers (for a load balancing) and a single database server. Using CenturyLink Cloud’s “template” technology, we can take a server and turn it into a reusable image. So first off, we needed to create a template out of the web server that had the web application installed. However, note that the database server will NOT be converted to a template as we want a fresh SQL Server installation for each new pod. Unless a specific sysprep occurs on a SQL Server machine, there can be issues (e.g. server name collisions) when instantiating a SQL Server-based virtual machine snapshot. As CenturyLink Cloud doesn’t yet offer a SQL Server-specific sysprep, we’ll rely on a bit of automation and a bit of manual intervention to get each pod deployed.
First off, we built a web server that could be templatized. In the CenturyLink Cloud Control Panel, I navigated to a Group meant to hold all of this customer’s servers.
After clicking Create Server, I selected which Group to put this server into, and chose a location, type, and name for the machine.
Next, I had the option of defining the network segment, resource allocation and server operating system.
At this point, we’ve walked through what many Infrastructure clouds have to offer when provisioning servers. What follows after that is fairly unique to CenturyLink Cloud. The final (optional) step for any server provisioning is the choice of server tasks (e.g. reboot machine), software installation (e.g. SQL Server) or script execution (e.g. “install Windows Active Directory”). In this case, we wanted a server that already had the IIS 7.5 web server installed so that we could avoid doing it manually.
The Create Server button queued up the server for construction, and within a few minutes, the machine became available for access. The next step was to install the web application onto this server. By default, CenturyLink Cloud servers aren’t exposed to the public internet, so we used a VPN client to access the machine. Once connected, we transferred the web application bits to the server and created a website in IIS 7.5.
With this web server in a “complete” state, it was now ready to be turned into a template. The “server details” page on the CenturyLink Cloud Control Portal has a button called Create Template which, when clicked, crafts a reusable template from a server. These templates than then be leveraged for new servers or play a part in a Blueprint.
Building the Application Blueprint
Blueprints are CenturyLink Cloud’s orchestration component which lets developers and system administrators craft complex environments that can then be deployed with a single click. In this case, we want a Blueprint that creates a pair of web servers (based on our just-created template) and a database server. This Blueprint can then be used by every customer and save the SaaS provider from manually constructing each and every environment.
This Blueprint started off with a name, version and privacy setting. Blueprints can be made public (for all CenturyLink Cloud customers) or private / private shared which restricts access to a given CenturyLink Cloud account holder.
The second step of a Blueprint involves adding servers. Our first two servers relied on the web server template that was created earlier. During the configuration of each server, we had the option of selecting server tasks, software installation and script execution activities to apply to it. For the web servers, no new software was needed because everything we needed was already contained within the template.
After defining the two web servers, a third server was added to the Blueprint. For this one, the Blueprint installed SQL Server 2008 after the machine was built.
With all the servers defined, we could then rearrange the build order, add tasks (such as software installation) and even embed OTHER Blueprints! In this case, the Blueprint was finished and could be saved. After the Blueprint was published to the library, it could be instantiated, or “deployed.” The first deployment step required us to pick server passwords, which Group to place the servers in, and since we chose to install SQL Server, we were asked for database credentials.
The second step of this wizard simply asks the user to confirm all their choices before the Blueprint runs and builds all the servers. Satisfied with our selections, the Blueprint was deployed and its status could be closely monitored.
Testing the Deployment
All three servers were now online. To finish provisioning this environment, we first needed to install the application’s database on our new database server, and then update the web application’s connection strings on the two web servers. There are new capabilities in the CenturyLink Cloud product pipeline that would automate this step, but for this example, the process was done manually.
Note that we had yet to configure a centralized management application (that’s coming in an upcoming article!), so for now, the configuration tables were also included in this website’s database. In total, the WebsiteDb database had two tables: one for storing donations to the candidate, and the other which drove the look-and-feel of the website.
The WebsiteConfiguration table described the colors used by the site, the candidate’s name and more.
Finally, the website application was updated so that it pointed to this database for its configuration and donations.
Upon browsing the website, we could see that everything was working and online.
In this article, we saw how a developer could decide to “SaaS their app” and bundle their previously-built web application into a template that could be deployed over and over again for each customer. However, deployment of the application is just one piece. In the next article, we will look at how the SaaS provider can use the CenturyLink Cloud Enterprise Cloud Platform to monitor, backup and configure their SaaS environment. After that, we will see how to use the CenturyLink Cloud API to create a provisioning and management interface that SaaS customers could use to create and configure their personal environment.
Manual environment deployments can be time-consuming and expensive. Over the years we’ve felt our customers’ frustrations: enterprise IT departments trying to be more agile in the face of business demands; ISVs that need faster time-to-money; Systems Integrators that are bogged down in repetitive work. That’s why we’re thrilled to announce the launch of Environment Engine, a toolset that automates environment and application deployments to the enterprise cloud using “Blueprints.” Blueprints contain the DNA of an environment—from host configurations, to firewall and load balancing rules, to any applications running on top. (And yes, before you ask, these tools are completely free to use for all CenturyLink Cloud customers.) With Environment Engine, the elusive IT-as-a-Service is no longer a myth. Now IT pros can create best practice-optimized Blueprints that others can use later to deploy complex applications and environments on-demand. Rollout times drop from days or weeks to hours or minutes, and because deployments are automated across the whole technology stack, build-outs are consistent and leave little room for pesky human errors. So how exactly does all of this work? Let’s get into the nitty-gritty… 1. Using the Blueprint Designer, a technical expert can create Blueprints that include host and network configurations; firewall, load balancing, and autoscale rules; and applications that will run in that environment. The resulting Blueprint can be published to private libraries for internal use or to the public CenturyLink Cloud Blueprint Library for increased exposure and adoption across organizational boundaries. 2. From the Blueprint Library, users can select the Blueprint best suited to their requirements based on variables including categories, keyword, characteristic filters such as OS or sizing, Blueprint maturity, and social feedback. 3. Because no one likes surprises on their bills, the Blueprint Builder displays estimated monthly costs of an environment, as well as any resource or software requirements. From there users can adjust pre-defined variables in the selected Blueprint to ensure proper configuration, then deploy best practice-optimized environments to the CenturyLink Cloud Enterprise Cloud Platform. Curious as to what kinds of applications you can deploy using Environment Engine? We are in the process of creating several Blueprints based on common environments, or those that may benefit from our team’s expertise. (Our goal is to expand this list over time as others publish to the public Blueprint Library and we add Blueprints to meet demand.) - Microsoft SharePoint® Server - Microsoft Exchange® Server (Single Server) - Microsoft Exchange® Server HA: Using data availability groups - Microsoft SQL Server 2008 - Active Directory - Team Foundation Services - ASP.NET & SQL Web App: Single Node - ASP.NET 2 Node Web Application: Contains front end web server and backend SQL server - LAMP Stack Check out the Environment Engine Datasheet, the recorded Environment Engine demo, or drop by Booth #213 at VMworld from August 29 –Sept 1 in Las Vegas for a live demonstration.
There is nothing worse than getting that email or error warning you that provisioning has failed. And inevitably this happens at the very last stages of getting an environment automated.
You ask yourself: What happened? Why did it fail? And then: Did I build my own logging? Did the person that built the orchestration provide logging (and, if so, where is it)?
After asking yourself all of these questions, you realize that the orchestration/provisioning layer only shows you a simple “failure” message and no details of where it failed or why.
With Blueprints, even failure is amazing…
“Blueprints” is CenturyLink Cloud’s environment templating engine. It allows you to combine virtual machine templates, infrastructure tasks, script packages, and software packages to create a fully deployable environment—such as building a Microsoft Exchange server environment with just the click of a button.
The other Blueprint feature that is simply incredible is the debugging and details that you have access to when deploying a Blueprint. This includes access to not only the status of the deployment, but also the tasks being executed. If something fails, you know where and why.
Here is an example of a blueprint being executed that fails on step 9 of 18. Normally this would be difficult to troubleshoot, but here it is reporting where it failed and what the error message is from the log.
When building your own Blueprint the feature gives you great debugging insight: you can test and see where your deployment is breaking down instead of just guessing what the problem is.
You can also restart tasks at any level to keep testing and make adjustments as needed. Here is an example an error in the log:
2012-02-02 15:53:25.9724 [Error] [vFabric Gemfire Install] - ./install.sh: line 4: /gemfire_install.expect: No such file or directory
2012-02-02 15:53:33.7689 [Error] [vFabric Gemfire Install] - Error building
2012-02-02 15:53:34.2220 [Error] [Build Server GEM] - Error building
2012-02-02 15:53:34.6907 [Error] [Root] - Error building
2012-02-02 15:53:35.0657 [Trace]  - >>>>>>>>>> Blueprint completed with errors