Not so long ago, many Heads of IT worried about vendor lock-in. Some may well do today.
However, today lock-in does not mean being unable to switch application vendors, rather, it means being unable to switch cloud vendors.
There is no question that cloud vendors in the main serve us well. However, there are situations in which having options many be a good idea.
Until now cloud pricing has in the main been reasonable. However, all providers offer services that come at a premium, such as API gateways and is possible that better value may be found with other suppliers.
It may be the time will come when a vendor decides to significantly increase their prices. Or it may simply be that you wish to cherry pick the "best offerings" from each of the vendors.
It is also worth mentioning that even the major vendors AWS, Google and Azure, from time to time have issues in delivering their service. At times these issues have extended to several days of outrages.
Of all of the cloud providers, there are three clear leaders, AWS, GCP and Azure, but not forgetting the many others such as IBM, Oracle, Digital Ocean, Heroku.
Frequently organisations have an affinity for a particular provider this is usually driven from dogma rather than any special knowledge.
Specifically, many Public Sector organisations have a preference for Azure, while the maturity of AWS appeals to many, not forgetting the ability of GCP to service big data. So which to choose?
The truth is that most if not all of the vendors do a good job, and they can all deliver most of what any business will need. Having said this, there are specialist offerings offered by some of the big players that would tend to suggest some work loads are better run in those environments.
Clearly, the first advantage of a vendor neutral cloud deployment, is the ability to run your applications on any of the major clouds, so what benefit does this bring?
For us at EA-Optimised, cloud independence means the ability to:
Achieving all of the above is not as time consuming as it might seem. It does take care and a little determination, but the rewards are grate.
To achieve cloud independence, there are some simple rules to follow. At first they may seem counter intuitive, however they do preserve your ability to deploy your business capability where you wish.
Once said, this seems obvious, however, the vendors all provide specialist offerings that apparently make it easier for you to deploy you workloads, or work smarter.
These services many well be very genuine, but if they cannot be replicated (generically) on other clouds, then you are locked-in!
The other side of this message is that you should only consume generic services, because they can be deployed at will.
The Cloud vendors go to a great deal of trouble to ensure their environments are secure. To simply deploy solutions to any cloud, there is a certain amount of security that must be navigated.
Having said this, within the security domain of many providers, capability such as AWS's IAM and Azures B2B / B2C exist. There are levels of administration at which the use of these capabilities cannot be avoided. But user access must not be controlled through these mechanisms, as they are a potent means of locking in workloads.
A far better approach is to utilise a third party IAM offering such as Ping Identity or ForgeRock. These tools will enable your solution to seamlessly work with your customers and staff providing powerful and portable solutions.
IaC, basically, the ability to write software that defines cloud environments has been growing in popularity of the last 3-4 years.
Writing IaC software means that deployments are repeatable and consistently provision a cloud infrastructure, building the networks and servers and database instances required to create and run systems.
The use of IaC means security is enhance since the programs can be managed under source control and can be run without human intervention with the use of build pipelines.
There are several products contending in this space, however a leader is Terraform, providing the ability to write to multiple clouds from a single script.
This approach enforces the intended environmental design and can be used to deploy environments in minutes, built as designed!
Containers offer a challenge to traditional server virtualisation. Specifically, offering isolation of services, efficiency and ease of deployment, containers provide a modern paradigm for many different types of service including micro services.
In support of any cloud environments, containers are stored in registries and then deployed from there to the required environment. This allows the same containers to be deployed in many places (clouds) concurrently.
Once deployed, it is simple to run many instances of a container to provide both scale and resilience.
Kubernetes is an environment created by Google. It exists to orchestrate containers in a fault tolerant manner, such that if a container fails Kubernetes will automatically rip it down and replace that component.
Further, Kubernetes allows for Auto Scaling and within defined parameters will automatically scale up or down the number of container replicas running a given service.
In this way the cluster can scale to meet the need under any load conditions.
There are basically, three cloud deployment models that can be adopted.
It is probably fair to say that which of the above models you adopt will depend where your business is on its cloud journey.
Invariably, businesses start out on one cloud, but this is a crucial point in the cloud adoption journey. It is all to easy to embrace all that a vendor has to offer and find that you have production services that rely of specialised offering, and thence forth you are locked-in to that vendor.
As Larry Larry Ellison said, "the network is the computer". And that has never been more true than it is today!
If you are to embrace a true multi cloud model, then, providing networking that will Seamlessly carry data between providers without bringing it "on premise" is a must.
Recently, the options in this area have increased dramatically. There used to be few solutions and your services needed to be placed close to the data. Thankfully, we now have a few more realistic options.
It must be said, there is no right answer, and the best solution for one organisation many not be the same for another in a very similar business space.
Part of the solution is in knowing where the data is to be accessed. This is because most of the cloud providers charge for sending data out side of there environments. This can be a major factor in determining the operational cost of any given service.
The key thing to remember is, don't let your business become locked-in to a single cloud provider. That is different from choosing to only use offerings from a single business.
As your experience in the cloud grows it is likely that you will want to deploy across many clouds or cherry pick the services that best suits your organisation.