Thinking…As A Service

Back in May, I had the opportunity to attend OpenStack Summit 2014. It was held in Atlanta, GA at the World Congress Center. This was my first OpenStack Conference and I was excited about all the sessions. The most impactful part of my trip actually happened on the first day of the Summit. It was during the opening keynote, where Jonathon Bryce, Executive Director of the Openstack Foundation, interviewed a few major customers. They spoke about how they use Openstack and what it has meant for this business. He interviewed people from Wells Fargo, Sony, and a few others while going over the success of the past year of the Havana release. The interview that stuck out the most to me was Chris Launey from The Walt Disney Company.

Chris Launey is Director of Cloud Services and Architecture at Disney out of Seattle, Washington. Jonathan spoke with Chris and the first question he asked him was what he was doing at the Walt Disney Company. Chris’s comment was quite enlightening. He mentioned how today if someone wanted to create a website, it was super easy for them to do so. They could easily go home register for a WordPress site, buy a domain name, register DNS, and license some clipart all in about 20 minutes with a credit card. They would have everything these needed to get a web presence up and running. On the other hand, if you needed to do the same thing at work, you have to open a ticket, fill out some forms, have your manager respond to an email, and possibly sign some documents in hopes that you get what you actually requested. He went on to mention that we as technologists empower people more at home than we do when they come to work and that struck a nerve with me.

I thought about it all day, and during all my sessions as I listened to some really great discussions about providing services to their users. I thought about what we do today and how we struggle with this exact problem that Chris mentioned. We fill out forms or tickets, call people on the phone, we setup gates so someone can do approve tasks, or we setup meetings to discuss the possibility of attempting an idea. Its easier to just do it on my laptop or look for other ways to get it done. As technologists, we look for ways to make tasks easier for our customers. We create API’s, update UI and UX for ease of use, we design around flexibility, but when we need to do these things for ourselves we forget about it or push it aside.

During the entire week, this idea really stuck with me. As I checked email, or looked at the incoming tickets, I began to think even more about how can this be fixed and it then struck me. We need to think about everything “As A Service”. Every platform that we design or implement should be thought about with the ideal of providing a service. We should not be thinking about creating platforms for just a single application. We should be thinking about how to implement these on a larger scale. I can almost guarantee you that if you are thinking about a particular setup, someone pretty close to you probably is as well.

What does a “As a Service” really entail? Well, I see it accomplishing three primary goals.

The first is that is needs to be scalable. This service can not just be setup for a few transactions before it falls on the ground. If you are working in a web company or a large scale company, you probably have dealt with something like this, either way it should be a primary goal no matter what. Talking about scalability has a lot of different meanings to people. I think the best example of an application being scalable is ElasticSearch. Take a look at how its easy to scale ElasticSearch and you will see what I am talking about.

The next goal is that is should support multi-tenancy. Multi-Tenancy is the ideal that a single piece of software can support multiple clients at the same time. It can be thought of at virtually partitioning an application so that it appears to the client as its own application or service. One way to think about this is that no matter if its internal users or external users or both, they should not have any idea who the other customers are on the platform.

The final goal when I think about “As a Service” is authentication. Now this one is a bit more tricky, but plays a very important part when dealing with Multi-Tenancy and scalability. Depending on your audience, authentication may be necessary when dealing with customer data, but should be thought about no matter what. Find different ways to authenticate. Not everything has to be a username and password. The use of PKI certificates are a great way to authenticate your users to an application and can definitely limit the load on your platform when getting lots of requests. Additionally, look at using a token based system that expires after a certain amount of time. Combining the two like Keystone can within Openstack is a great idea and can support a very high amount of load while serving the application.

“Thinking As A Service” should be a new way for everyone to plan out their infrastructure. While this directly does not solve the how to get a website setup at work quickly problem, it is a major step in the right direction. Teams can now quickly deploy new automation tasks and websites that allow users to get their work done faster. Just think about the amount of time and effort that could be saved with integration from all these services. Today, Openstack provides us Virtual Compute Resources, but soon it will be able to provide us Physical Compute Resources. Platforms such as a Message Bus, a logging/search application, or Database As A Service (Mongo/MySQL) available anywhere for deployment that is scalable and multi-tenant could relief much of the development time.

The possibility of making it easier for ourselves and our team mates is there. We just need to “Think As A Service”.