With a strong value proposition in only paying for what you use, a hard take-up push from industry and vendors, and a low entry point, it’s understandable that many organisations are talking about the cloud. But every company needs to ask: are we ready for it?
Ajilon’s business model is around application managed services. We’ve got more than 1,100 people in six states. For us, the cloud not only provided scalable, flexible and cost-effective computing, it allowed us to manage the end-to-end business application on behalf of the customer – from application to infrastructure.
Over the past few months, we have worked with Amazon Web Services to move an application into the cloud (Ajilon is developing the application for a large government department).
It has become very clear that the move into the cloud will affect almost every part of the organisation. It’ll impact everything from infrastructure, development, security, project management and accounting.
We are no longer dealing with fixed assets but moving to a pay-as-you-go, elastic model of computing; this not only has a dramatic effect on how we think about computing resources, but also how we go about architecting and managing them.
The challenges
There are many challenges when adopting cloud. Getting started is relatively easy. We read about organisations setting up entire data centres in under an hour. Our own experiences have been similar: we created an account with AWS and had an entire network established with security configuration in roughly 45 minutes. It is not something you really appreciate until you actually see it in action. Our next challenge is around taking advantage of this power in a consistent, repeatable and controlled manner.
One of the main challenges we’ve had to address is security. As we progress with our project we need to focus heavily on the governance of cloud resources. Policies will need to be defined around identity and access management of cloud interfaces, services, APIs, reporting and auditing cloud activity.
Our initial implementation has focused on a number of elements including securing servers running in the cloud, dealing with securing data at rest and in transit, and key management, – and doing this in a dynamic fashion. We have been looking at extending the organisation’s current security platform to enable us to automatically apply existing security policies to the cloud.
This ties in with one of our provisioning goals. As our application scales up, new compute instances will automatically be registered with the security platform and have the security policy applied, and removed as we scale down.
The way we forecast and cost our cloud solution is also changing, and challenging existing conventions for project budgets. Infrastructure costs are no longer fixed and determined by the amount and composition of resources we use at any point in time. This will also fluctuate depending on the types of activities end users perform, the time of day, and whether or not special events see spikes in usage. We can architect our cloud implementation not just for performance, scalability and reliability, but for cost optimisation.
Automation is the key
One of the primary keys to managing a cloud-based environment is automation. Almost everything can and should be automated in order to take full advantage of your cloud environment. Vendors such as AWS and Microsoft, with Azure, have invested significantly in application programming interfaces (APIs) and software development kits (SDKs) that allow for full control of their environments.
Both vendors provide a number of development tools that allow developers and system administrators to control every aspect of the cloud environments through command line interfaces, PowerShell modules and developer tools in many different languages such as JavaScript, C#, Ruby, Java. Leveraging these tools is essential to managing and customising your own cloud service.
Infrastructure teams can increase their productivity and response times through IT infrastructure automation tools, such as Puppet or Chef, which allow you to provision, configure and manage heterogeneous systems through scripts. There are numerous examples and case studies available that illustrate the success stories from this type of automation, with many companies reporting that they have been able to reduce their server provisioning from several weeks to minutes through infrastructure orchestration tools.
Infrastructure teams also need to learn how to utilise the tools provided by vendors to help them take advantage of the features they provide, including how to integrate them into on-premise systems.
Development teams will also benefit through maturing their continuous integration and deployment practices. This in itself can be pretty challenging for an organisation with high levels of process and manual intervention, and getting acceptance to change established workflows may be difficult.
It involves many different forms of automation, from build automation, versioning, automated unit/integration/acceptance testing, to packaging and release management. This can let you decrease your release cycle, reduce risk and increase reliability and ability to recover from faults.
For us, the initial key automation goals for the project are focused on two main areas – creating an effective continuous deployment pipeline and automatic provisioning of compute resources.
The first of these goals is really what is going to form the basis of our delivery model. It has involved analysis of our current build, package, test and release processes and taken steps to remove many of the manual steps involved.
To this end we have introduced release management software provided by Octopus Deploy which provides us with the capability to compose our release workflow in a consistent and repeatable manner, through built-in functions or extendable PowerShell scripts and modules.
The second goal is to use cloud capabilities to automatically provision compute power as needed. This includes enabling and configuring monitoring to enable us to scale up
or down as required and to make sure infrastructure and security policies are applied dynamically, and ensuring current releases are deployed to new instances.
While much more can be accomplished in time, both these goals will provide the team with a strong foundation for continually refining the automation processes and governance around them.
Managing automation
As we build towards automation, more emphasis is placed on cooperation and understanding between teams. The term ‘DevOps’ comes to mind here – not as a definition for a job description but as a mindset that teams are encouraged to adopt. It fosters a culture of collaboration and removes barriers of understanding. Communication is key, as is a knowledge and appreciation of each team’s requirements. Strengthening these relation-ships will also allow us to optimise for our respective solutions much more easily.
Whether you are a large or small organisation, automation will be central to the success of managing and growing your cloud environment. We anticipate that developing the knowledge and resources required to manage it will take time, cooperation, communication and investment in skills and tools.
It is also important for us to not over-engineer our solutions and find a good balance between establishing good governance and policies and actually implementing solutions; and learning from your mistakes. This is an iterative journey and adopting an agile mindset will be a cornerstone of our success.
Look at areas that can be automated and assess your current processes. Identify areas that have high cycle times, costs, and levels of manual intervention and gather metrics to help you make better decisions. Be prepared to make changes to your current processes; start on the fringes to minimise impact and continue to evolve and improve. Automation can open up a variety of possibilities and also lead to a cultural shift in your organisation. As the rate at which you deliver services increases, the expectations of you and your customers, both internal and external, will also change.
Stephen Liedig is lead consultant at Ajilon