Written by Diego Pacheco, Principal Software Architect at ilegra.
Innovation is a must for companies today and it works with the product mindset. Given the digital transformation, we live in, having a product mindset is more than delivering software but it is empowering teams and working with OKR-based management models that focus on Business Objectives rather than what teams have to do. Development teams are motivated by challenges and they should have the freedom to make choices. But these choices can often have a very high cost for the business and low return. Cloud usage is certainly a great disruptive force for all digital businesses. There are many ways to architect Cloud-Native solutions (get the most out of the cloud) often for a short-term view many companies are opting for Managed Services solution. These solutions, which are often database solutions, but not limited to the database, give a lot of speed for software development but bring two major problems in the long run.
Managed Services Issue 1 – Cloud vendor Lock-in
When using managed services there is a cost reduction and bottleneck of DevOps, which is a difficult skill set to hire. However, when using managed services proprietary APIs, you are certainly thinking that you are taking a lot of value out of your cloud vendor, based on usage. Using 100% of a service does not mean better value for the business. In the long term, it costs more but often these decisions are taken by lack of software architecture knowledge to support in making the best technical decision.
Managed Services Issue 2 – Cost
Increasingly there are more and more cloud providers and the cost is more and more a central issue not just for software architecture but for the business as well. It is necessary to have solutions that are COST-EFFECTIVE but often this math is made only considering the initial cost of OPS that the cloud provider absorbs. But in the long run, it is much cheaper to run this kind of solution on Compute layers than to run as a managed service. However, when using computer solution many times it is necessary to perform many integrations and development of cloud-native architectures to enable digital products. Soon this equation becomes complex and once again it is common for companies to tend to managed services for cost reduction and simplicity of execution even if this sacrifices portability in the long run.
Istio & Kubernetes: Changing the Rules of the Game
The market changes fast, nowadays we no longer need to choose between productivity, low initial cost, and profitability because with Kubernetes and Istio we can have the 3. That same we can have the maximum of productivity giving total freedom for the technical teams, low cost of ramp-up and still be portable to work multi/poly cloud solution.
With Kubernetes and Istio it is possible to develop microservices in a disconnected form of any cloud provider. Because Kubernetes in conjunction with Istio and Envoy (Lyft’s open-source proxy solution – Uber Concurrent Us) uses the Kubernetes abstraction translation service for the cloud provider. That way your solution is not stuck with any specific cloud vendor.
There are solutions to create, run, update, maintain and destroy Kubernetes clusters of in multiple clouds like AWS (Amazon) and GCP (Google) like Kops. Kops is an open-source software that does all this for us still being able to generate Terraform templates for the translation of specific solutions from Google’s cloud(GCP) or AWS. For example, in Kubernetes, there is the concept of gateway that is used for transfer data and with Kops, this concept will be translated into an Elastic Load Balancer (ELB) in AWS for example.
Why Use Istio?
Istio allows the developer to use any language and any server. There is no such thing as a binary coupling as there was in the NetflixOSS Stack that forced the use of Java and a series of intrusive dependencies in the classpath. With Istio we have the same abstractions that exist in the NetflixOSS Stack but at the platform level, thus leaving the very productive developer and much more focused on business, digital products, without losing all the benefits of a cloud-native architecture.
Benefits to Business
By using Kubernetes and Istio the business can deliver digital products with extreme productivity and at the same time not be locked-in by cloud vendors. So in the future, if the business realizes it more economically viable to migrate to another cloud-provider this is possible in a transparent way. In addition, it is less sensitive to the cloud provider’s cost variations and has the strategic freedom to go where it makes more sense and has the best cost.
There is another great benefit that is in the motivation part of the technical team that helps keep the professionals motivated and the turn-over low because that way the technical team can try out new servers, new languages independently and delivering value to the business. Engineers are motivated by challenges and new technologies, often tied systems do not allow experimentation what is bad for the motivation of the technical team as well as experimenting with new technologies to solve problems and create new business models. With istio, everyone wins.
For the DevOps Team
Creating digital Stacks in the cloud is not a simple task and is expensive. Often the DevOps team is under-resourced and cannot keep up with internal demand. The solution to this problem lies in, building and releasing tools for the developers to be more productive. Building self-service tools and services and thus freeing the DevOps team to focus on improving tools and availability of digital products.
Solutions such as Kubernetes, Kops, and Istio help to remove a lot of manual work from the business engineer and thus deliver a high-profit stack to the business with little effort. Istio provides a complete solution with Observability (Logs, Metrics, Traces) of the entire Kubernetes stack.
In addition to being able to use any language at the end of the day is not bound to the decisions that come from above and is free to reach the OKRs in the best way they understand besides having the possibility to experiment new technologies of easy integration to the stack of existing services. Another advantage is that with the setup time fast and complete isolation is very simple to have more environments and debottleneck platforms teams to release components.
Kubernetes and Istio have great potential and this is just the beginning of the journey. If you are doing digital transformation or starting a new project you need to consider this solution as it has many advantages compared to previous approaches of First Wave of Microservices with Stack of NetflixOSS, ManagedServices using proprietary APIs of cloud providers. We are actually talking about something that is “Game-Changing” for the business and for the technical teams.