Many CIOs, IT Directors, and IT Managers are excited about the potential flexibility and freedom that Google Anthos promises.
For new applications/solutions being developed, it allows them to be very nimble with their go-to-market strategy. If they anticipate an initial slow adoption, they can deploy on-prem until they start to see a higher volume of traffic. Once they see usage and where it is coming from, they can negotiate cloud provider rates and choose provider(s) based on geography and other factors. They can deploy to multiple cloud providers for redundancy nearly as easily as deploying to one provider. If their application has a down-turn, they can very easily go back to on-prem. GKE (Google Kubernetes Engine) gives companies that flexibility. It means moving from on-prem to cloud, or from one cloud provider to another won’t require a complete overhaul of their applications and containers. It allows them to be cloud agnostic and keep costs low by leverage best negotiated rates among cloud providers.
For existing applications/solutions, they may still need an initial development effort in order to retrofit their systems for the Kubernetes, Istio, and Knative environment that Anthos is based upon. And if they are developing a brand new application/solution their team may not have the right experience necessary to put it on this platform. This brings its own set of questions and challenges for them:
- How do get my team up to speed on some of these technologies if they are not already using them?
- How do I do this migration when my team is already extremely busy? I don’t have budget for additional headcount
- How do I ensure the quality of this work when my team will be implementing some of these technologies for the first time?
- How do I even get started?
- If I outsource this work, how do I make sure my team completely understands it and I have not created a long term commitment to the outsourcing company I used?
One approach that is growing in popularity is to utilize a development lab for a migration like this, or for the initial build out and deployment of a new application/system.
Development lab services offer many benefits vs. outsourcing or traditional contract work. A development lab utilizes LEAN development and a paired programming. Senior software engineers from the development lab are paired with members of the in-house team. The in-house team either writes the code themselves with expert assistance from somebody well versed in the technologies used, or they observe the the expert writing code. They trade off writing/and observing until the task has been completed. In the end, they both know the code and when the migration or project is complete the in-house team knows and understands the code and can take over from there. Because both coding and code reviews are happening at the same time and two heads are catching errors and problems before they make it to production, efficiency is extremely high. Non-productive time is kept to a minimum in this scenario, because the pair must work together which makes it harder for them to be distracted and spend time on non-productive activities (web surfing, long coffee breaks, etc.). And instead of having to send in-house team members to training, the training actually happens as the code is being written. Often the development lab has libraries for commonly used activities that they have already developed that can be plugged in; further gaining efficiency and speeding deployment. Even the knowledge of where to find common libraries is a huge advantage vs. a software engineer having to web search to find some code for what they are trying to accomplish. Development labs also pair Technical Product Managers with in-house Product Managers to help organize and manage the product and project.
For some IT Management, the thought of peer development brings a thought of inefficiency because now you have two developers working on the same activity instead of one. But because of the efficiencies already mentioned, very often the opposite is the case. You get higher quality code, built-in training, expert development, and more rapid development.
For a company looking to develop and deploy a new application, utilizing a development lab to build that application on the GKE platform helps them get their product to market faster with rapid deployment and with more go-to-market options than what they would have had in the past.