Let us not be “ clouded” by the Cloud
There are some words that I never understood in my 33-year corporate career. In a sales career spanning 21 years the words like " being transparent to the user" (meaning the user does not see this!!), "Massively scalable or infinitely elastic" (means more CPUs, more users, other varying definitions or sometimes no definition!!) and “ turning the Industry on its head (means certainly an innovation and not sure about the somersault!!). The IT services (be it service providers or IT department in end-user firms) has its lingo (my last 12 years of Corporate life). End to end (the highly elastic meaning of the end!!) deliver value (a lower price or 1% faster!!), and transformation solutions (mobile app or an AI algorithm!!) are some samples. Cloud is a technology foundation has its own platitudes – serverless (does not mean no server!!), Switching on and off VM instances ( Really?), Software-defined everything makes the hardware a commodity ( kidding me? Try to run a performance-hungry app that is badly architected on "any" hardware!!).
In the last 12 months, in my entrepreneurial journey, I have been involved in Cloud Consulting for IT Products and Services firms. As in any subject, the axiom the more you know, the less you know is so true, and the Cloud subject is no different. I spent several 100 hours of work on this, and I know I am barely getting started. I am convinced product firms, customers of private & public Clouds, Cloud service providers, and IT service providers need to understand the fundamentals well.
To understand the Cloud, we need to focus on four distinct areas.
1. Business Knowledge or frequently called as Business Domain skills
2. Architecture knowledge – Business functions need to be expressed as Applications with requisite UI and data stores. Architecture can be Microservices ( ideally ) or Monolith.
3. Orchestration and Automation layer knowledge – As it is difficult to manage many loosely coupled services, these technologies help. A good understanding of this layer is critical.
4. Software-defined data center aka Private Cloud or Public Cloud Knowledge – SDX ( Software-defined Compute, Storage and Network knowledge – both software and hardware stack)
Business knowledge will always remain critical to writing applications that deliver value to the organization and its customers. We need to understand the basics of the Industry, a given business domain within an Industry, and details of a given area. This knowledge will always remain essential whether we do Agile/ waterfall development.
Understanding the business and understanding how the systems need to be architected would remain paramount even in the Microservices era. The best microservices architecture will be based on what is called Domain-Driven Design. The functional and non-functional needs are ever more critical in building a great system. The mantra that a great engineer would develop ten times better code than a good engineer is valid even in this era. DevOps, CI/CD, and Developer workflow tools are essential for this era. Still, they would be irrelevant if the code is not designed and written well.
There is little doubt orchestrator like Kubernetes and Infrastructure automation tools like Ansible or Terraform will make life easier for operations people. Reams of paper written about replica sets, where a new well sized (means over configured) instance will be spun up that can replace the failed instance without worrying much. However, an operator with in-depth knowledge of the full stack would solve root cause problems (not just keep it running by spending more) for any kind of workload!- Stateful or no- state business logic.
One would say that we need not know details of Intel or AMD processors powering the compute or storage system specifics and network characteristics in the cloud era. This assumption may be correct to some degree to the operations but certainly not for the Architecture team. Cascade Lake Gen X CPU is not equal to Previous Generation Intel CPU nor AMD Epyc processor is the same as AMD previous generation CPU. Input/output operations/ second on storage and network latency are essential characteristics that affect application performance. Age-old principles of understanding the infrastructure details to power the application to guarantee performance are valid even today. The software layer only helps to provision, de-provision, and other administrative tasks, but underlying infrastructure still ensures performance. Basic knowledge of the infrastructure and the SDX software must be essential to design a top-class data center or leverage a world-class Cloud.
Cloud, associated tools, and practices have abstracted many complexities. Still, it should not encourage illiteracy of the basics of computer science, at least for several roles. Again, proper knowledge is essential to build great applications that leverage the appropriate infrastructure well.
Salespeople, software developers, customers, and skilled operators need to understand the fundamentals well to be effective in their roles. Not knowing is certainly not a virtue. I am convinced that let us not be clouded by the " cloud" and ignore the basics as we move to the Cloud. I am getting back to learning across the stack. Are you?
Thanks for sharing Mohan . Appreciate it.
Well-articulated sir !! Nice overview presented in simplest way. Reading your articles is like KaaS : Knowledge as a Service !!!
Very well written. Totally agree, Cloud helps faster provisioning but the value add is in developing applications understanding business, technology and infrastructure.
Well articulated, sir. The coverage of 4 pillars are the icing on the cake. Especialy, resiliency of pods in Kubernetes through ReplicaSets, were certainly pointer to important characteristics of the orchestrator (Ks8) It's up to the architecture and development team to leverage these features and provide a build that is stable, resilient and accomodate changes for faster feature delivery.. With more and more DevOps , CI/CD and Infra asCode, the PS responsibility is slowly dimishing and getting shifted to development..
Agreed 100 percent in what is written in the article. Cloud is just remote dc . Still we have to take care of infrastructure area for optimal performance of application.