(This article aims at providing additional factors for CIO/CTO to consider when going to cloud. If there will be sufficient feedback or needs, widening of the audience can be done to make things easier to understand.)
Commonly known benefits of cloud computing are:
- Costs savings from economy of scale, on-demand consumption, and avoidance of infrastructure provisioning and maintenance
- Ease of scaling for peak loads leaving the hardware headache to the cloud vendor
- Variable vs capital expense allowing better cashflow management
- Leverage of cloud global infrastructure to reduce latency and improve redundancy for availability and recovery
- Speed of infrastructure changes fostering faster software development and deployment
However, there are a few extra gems in adopting cloud if-and-only-if done right. The emphasis here is “if-and-only-if done right”. I would like to make the analogy of C++ and Java programming languages. The former is extremely powerful, but in the wrong hands, it can be a much worse mess than the simpler counterpart of the C programming language. Personally, I have only seen good coding in the C++ language in Linux kernel, Asian Stock Exchange system, and a multi-million line CAD program. That’s why some established institutions, like banks, mandate simplified and pattern-confined usage of the C++ language. Java was created in many sense to make things simpler than C++ to allow more average developers to use properly. So, while many cloud offerings are great, but if used in the wrong way, can nullify the benefits which I am going to mention here. Assuming your cloud adoption is done right in the first place, here are the hidden gems which can sometimes even outweigh the common benefits above.
Potential Benefits Of Using Cloud
- Standardization of Technology Stack: It is not uncommon in enterprises to find different technologies for development, devops, or infrastructure being used by different parties. Since cloud vendors have often adopt well proven and widely used technologies in their offerings, while migrating to cloud, it will be a great opportunity to standardize technology use, making management obviously easier. Here are some of the benefits of IT standardization for CEOs, COOs, and CFOs not intimately familiar with technology: simpler licensing and vendor management, better expertise accumulation and hence efficiency/accuracy in support because of smaller sets of technology, and better bargaining power in licensing, etc etc.
- Standardization of System Operations: Similar to the benefits of standardizing technology stack by converging, when appropriate, to those provided by the cloud, operations or processes, can also be standardized along the way making execution, monitoring, auditing, and hence improvement more efficient.
- Increasing Abundance in Skilled Resources: People, process and technology are 3 keys for good IT operation. With the growing popularity of cloud offerings, especially from well-known vendors like AWS, Google, Azure, and Alibaba Cloud, more and more professionals are getting well trained in them. The resulting pool of available talents will reduce the impact of attrition, and make it easier to grow your team should your needs expand.
- Adoption of Best Practices: As of 2017, most cloud offerings are created within the recent few years. So, it is no surprise that these offerings or services are based on best of the breed practices out there. By migrating to the cloud, a company can inherit these best practices while reaping the aforementioned commonly known benefits.
- Encouragement of Distributed Computing Pattern: Mentioned as the last point, but this is by no means the least significant. As a matter of fact, to those with vision, this is likely one of the most important goal of going cloud for most organizations. In this digital age, the explosive growth in internet/mobile usage, together with big data (collection and processing), artificial intelligence, and business importance for stellar response time for user experience, systems need to cope with much bigger load under ever competing performance and costs constraints. Building a single huge server with everything (front facing, application logic, and database layers) all-in-one is definitely a fossilized approach. Even simple multi-tier system is insufficient, especially when the traditional relation database can often be the bottleneck eventually. So, in layman’s terms, using the divide and conquer method to break computing tasks up, will result in better division of labor and/or parallelization for improved overall processing speed for quicker response time. A distributed system can be easier to maintain and develop too. Thus arise the distributed computing trend. This in technical terms often involve the use of NoSQL database, data partitioning, sharding, in-memory caching, MapReduce, machine learning, and service oriented interfacing among components. However, while the few technologies mentioned above are all over 10 years old, the pace of their demand and needs have far outgrown their learning by the IT community. Putting all these technologies together in a cost-effective large scale manner is not trivial. For example, just setting up a NoSQL or MapReduce clusters, e.g. Hadoop, will require some extended testing and tuning. Fortunately, with cloud, e.g. AWS, most of these can be provisioned either as pre-configured setup or as services which the users can specify the desired bandwidth. From my personal experience, sometimes customization and further tuning might be needed to fit particular business needs. But leveraging such cloud provisioned service will greatly reduce the entry barrier, and speed up the time to market.
This is not an exhausted list, and cloud is also not without its anti-patterns. This article is written with the intention to provide additional insights for the readers. Individual situation might require analysis from different perspectives to understand the risks and drawbacks as well.