Recent startups, have shown us that traditional barriers to entry like high investments in infrastructure no longer apply. The concept of If you build it, he will come required both, a huge leap of faith and fail not to be an option.

The ‘globalized niche’ market breaks traditional logic. Nowadays, one needs to test ideas as cost-effectively as possible, and either scale and accelerate product development or move on, to the next idea.

Also, there seems to be a great correlation between the ability to grow fast and cloud adoption. If you look at a unicorn list, it is hard not to realize the latter, as one of the key success factors.

On the other side, most of the “traditional” businesses remain clueless on what needs to be made to “catch this train”.

The Concept

Capacity planning in IT (a.k.a. capacity management) is the process of estimating the IT resources, both Hardware and Software, needed by an organization over a period of time.

These estimations depend greatly on customer activity levels, product roadmap, and application performance.

Too much capacity leads to an excessive cost, not enough capacity means service degradation and eventually customer loss. Keeping this balance over time is the key to being cost-effective while maximizing business value.

Usually, there are three moments in the organization regarding capacity management:

  • Budgeting, with a certain time frame, e.g. yearly, the impact of planned projects and business growth is evaluated, estimated and included in the budget. Projects could be dropped for budget reasons.
  • Project allocation, resources are made available according to budget. Deviations and/or delays could affect project or project portfolio execution.
  • Capacity monitoring alerts, when capacity thresholds are met, intervention may be necessary, either by increasing or decreasing capacity. Response time is usually inversely proportional to cost.

Enters Cloud Computing

In particular, Infrastructure as a Service (IaaS) brings to the table, the following relevant capabilities with regard to capacity management:

  • Pay per use;
  • On-demand infrastructure self-service;
  • Infrastructure provisioning automation;
  • Elastic capacity, ability to automatically grow or shrink according to the load;
  • Service and consumption levels monitoring;

Cloud service providers’ business value proposition depends greatly on their ability to reduce the complexity of capacity management. By doing it for a huge amount of customers, economies of scale are established which leads to practically “unlimited” capacity at a competitive cost.

As a result, some of the capacity imposed boundaries are disrupted and with it, multiple pains we have felt over and over again. No need for sharing hardware resources between projects anymore. No need to give up on ideas for lack of resources. No more “two weeks“ setup time to start a project. No more requesting hardware capabilities “three months” ahead. No more waiting for deployment windows. No more infrastructure freeze time. No more hot spares or active/passive clusters. No more underutilized hardware. No more excruciating electricity bills spent on servers with no business value. No more “it worked on the development environment”. No more blinking hard disk lights awaiting replacement in the data center…

Capex is dead, long live Opex. Suddenly, all the financials that made essential the discipline of capacity management are gone.

Adoption challenges

By now, you are already picturing yourself by the pool with a cocktail while the infrastructure takes care of itself. Not so fast, moving to IaaS presents the organization with some interesting challenges.

1. Sunk cost vs “fait divers”

With the first step being, sell it to the organization.

With many years of accumulated investment in hosting and data center, does it make sense to abandon it and move to some wild idea that could just be a fad?

To answer this, put on your sales hat and focus on: the benefits to the business, the risk of not being fast enough, and the need to minimize the cost of failure.

2. New application development paradigms

Monolith applications tend to not behave well with shared resources, are hard to automate and are not elastic. Some key concepts of the development of cloud-ready applications are: decoupling, micro-services, evolutionary database design, horizontal scalability, resilience to remote resources, queuing, etc.

3. Infrastructure as code

IaaS is great but the real revolution is when you move away from the interactive configuration tool and build code to interface directly with the infrastructure abstraction layer.

By taking out the “manual” in the configuration of systems and applications, one can apply the best practices of software development to infrastructure code. The benefits include improved quality by removing the human error and speed by running automated jobs.

New skills need to be considered on the operations team.

4. Operations in a cross-functional project team

Operations should no longer be seen as a siloed team that gets the project once the development is finished. The project team should include an operations team member from the beginning. If not full-time at least part-time.

The ops resource will be delivering code the infrastructure. This form of collaboration defies the traditional status quo for many companies, where operations “just” setup and manage production environments.

5. Security paradigm shift

Opting for any type of outsourcing requires a certain level of trust in the provider.

Nowadays, your organization existing servers are tucked away in a remote location. Which means that while you do your work and interact with your own systems some kind of security channel needs to be opened.

In the end, ownership of the remote location is not that relevant if your cloud provider can attest that the best security practices are applied.

Security actually boils down to two things: security patch efficiency and shared environment.

I strongly believe that cloud providers have much faster security patch cycles than understaffed operation teams doing it by hand. Also, the discipline of cloud adoption accelerates the security patching cycle for everything in the scope of the organization (custom code, custom configuration).

As for the shared environment, one can either opt for private cloud or go the extra mile to isolate as much as possible all the components, apply access control lists, minimize service public exposure, use ephemeral storage for transient sensitive data, etc.

6. Fast pace of change

Some Pitfalls

Shared resources do not behave as dedicated resources. Expect cloud scalability not to be linear. A vCPU is just a vCPU and any resource is one network hop away.

Infrastructure provisioning automation is not enough. People will return to old habits of “dedicated” and persistent resource allocation, pushing the infrastructure costs up (ready for PaaS?). Ephemeral resource usage is key.

“Unlimited” capacity translates quickly into an unlimited cost. Unless there is a positive correlation with user transactions, cap your consumption.

Blazing fast. It is expected to be a lot faster but infrastructure automation means an overhead to code the automation. This initial cost will let you win time and confidence on every release cycle, as well as act as be a safety net for disaster recovery scenarios.

Takeaways

It is up to the management to decide on what to outsource and what is considered to be of competitive advantage. Seldom one can find an opportunity that accelerates your business this way while bringing down costs.

The usual recommendations for an IaaS adoption roadmap would be:

  1. Pick a strong sponsor. Changing the status quo is not easy.
  2. Put up a team of believers to kick-start the initiative.
  3. Start small, pick the new small project/app/site, the one that can be built from the ground with IaaS in mind.
  4. Iterate, review lessons learn and improve with each cycle while increasing the size of the project as well as test coverage and automation level.
  5. Persist. Persist. Persist. None of the success stories just happened overnight. They required persistence, learning and continuous improvement.

As disruptive as it may seem, a lot of investments in infrastructure have been made and companies will tend to incrementally adopt cloud computing as older infrastructure gets decommissioned or new products get delivered.

Let me know if somehow I have contributed to a success story. If not, please drop me a line, so that I can make it better.