Enterprises’ needs are evolving in parallel with the evolution of technology. While technology is catching up to meet business needs, businesses are also catching up with technology and thereby adding more opportunities. Traditional enterprises are adapting with tectonic changes and constantly reinventing themselves. In the context of so many changes, it is important to revisit the state of the art needs of an enterprise for a modern application platform and how that would look like in the current context.
Google has gathered over a decade of experience in open source to address the needs of a modern application platform for enterprises through our products and solutions. That experience was seminal and foundational to Anthos. Google also addresses wider needs of enterprise transformation as enterprises evolve people, processes and applications to adopt a modern application platform.
Containerization and Kubernetes are the primary technologies to host applications on a modern application platform. Running applications as containers brings in speed of development, speed of deployment and speed of scaling up/down and portability all together. While several technologies have come up in the last decade to orchestrate containerized workloads, Kubernetes stood out as the winner in this space. The technology Google was using for a decade inspired Kubernetes, an open source project started by Google, has now become the defacto standard for enterprise application workloads.
Hybrid and Multi Cloud Infrastructure
Enterprises have traditionally deployed applications in their data centers. As a result, all the needs of compute, storage and network have been limited to their data centers` boundaries. One of the biggest changes in the last decade is cloud adoption by enterprises. With extended networks and VPCs, the enterprise data center boundaries have been redrawn to include cloud providers. Today, typical hybrid enterprise infrastructures include investments in enterprise data centers that connect to at least one cloud service provider. Usually these cloud services spread across regions and geographical boundaries to meet enterprises’ global business needs. In addition, having a multicloud strategy has become a common requirement for enterprises.
Modern application platform primarily meets these hybrid, multicloud and multi-regional infrastructure needs. Also multiple Kubernetes clusters spread out across different environments is quite common. So, our modern application platform now refers to a multi-cluster, multi-datacenter, cross-geographical hybrid platform.
As more and more applications are deployed on this modern application platform with multiple Kubernetes clusters, cluster proliferation is inevitable. With Kubernetes cluster proliferation, the need for multi-cluster management is very important in managing these clusters and their lifecycle. A monitoring console that provides a single pane view across multiple clusters, managing the cluster installation, state, and upgrades from this single viewpoint are critical for operations teams to manage a modern application platform.
Operations – Monitoring
Modern application platform’s operations also includes metrics consolidation from across clusters, alerts and notifications for issues. Also the single pane view offers SLO set up and monitoring and dashboard access for SREs to monitor all the clusters.
Operations – Debugging, Log Consolidation, Traceability
With applications deployed across multiple Kubernetes clusters in the modern application platform, for any application issues debugging should not require searching for logs across multiple clusters. A modern application platform consolidates logs from different clusters and makes them accessible through the single pane view. Tools for debugging and traceability of requests across the clusters are reasonable requirements from application owners.
Cluster Lifecycle Management
A modern application platform offers seamless and automated lifecycle management features to the candidate Kubernetes clusters. These include upgrades and patching for the clusters while ensuring zero downtime for the workloads. Kubernetes and other platform software have release cycles with new and evolving features. Certain enterprise workloads may have an appetite for the newest features vs others that demand a stable cluster. A modern application platform manages these varying requirements through release channels and allows rollbacks when needed.
Identity and Access Management
Enterprises have adopted LDAP or Microsoft Active Directory for their IAM needs. A modern application platform seamlessly integrates with IAMs for authentication and authorization, or to import security groups when needed. The overall experience of identity management should be seamless across the platform.
Security Policy Management
Defining and applying security policies consistently across clusters in a multi-cluster environment is a daunting task. While this requirement applies all across the board, it is a critical need for businesses with stringent security policies, in regulated industries, and enterprises that need to meet compliance requirements. With a modern application platform, security teams gain the ability to apply policies from a central location, propagating policies across relevant clusters and workloads running on those clusters, ensuring the clusters do not drift out of sync with the declared security policies.
Configuration Management and Auditability
Implementing infrastructure-as-code with GitOps is becoming an increasingly common standard. Managing infrastructure configurations in a Git repository, using such a configuration repository as the source of truth, applying configurations automatically, and monitoring all the cluster configurations and application deployments to mirror the source of truth will prevent drift on a modern application platform and improve its manageability. Also since all the changes are tracked through the regular Git lifecycle, just like application code, any changes to any of the clusters are auditable.
Applications and Services
With the features discussed so far a modern application platform can run both stateful and stateless Kubernetes applications. Even traditional applications can be containerized and run on this platform. But running modern applications and services requires a lot more capabilities from an application platform. As services are distributed across the platform, a modern application platform should meet additional needs from the application owners. These capabilities include:
Service Management provides abilities such as dynamic traffic shaping, blue/green deployments, canary deployments, version rollouts, circuit breakers, fail-over, mutualTLS between services and many other service level features through configuration with opensource technologies like Istio service mesh. Abilities to trace the flow of service requests, identify delays and choking points, generating service maps based on actual usage patterns are added advantages. A modern application platform comes with a service mesh that can extend across multiple clusters and even to workloads running on VMs.
Scaling workloads up and down quickly based on real-time demand and charging for usage is a feature offered by cloud providers. A modern application platform not only supports this model for the eligible workloads, but also extends the dynamic scaling features to on-premise clusters with open source technologies such as Knative.
Third Party Services
Enterprises depend on services offered by third party vendors. The third party software may also include runtimes, middleware, databases and other software used by the applications. A modern application platform offers the ability to easily consume, run, or integrate with third party services. This includes standard models for third parties to advertise and publish their services, allowing purchase, tracking usage and billing for these services.
Cloud Provider Services
One of the reasons for the modern application platform to span across multiple clouds is to leverage services offered by the cloud providers as appropriate. Certain services are only available on cloud provider platforms due to the nature of infrastructure requirements to run those services and the intelligence behind them. A modern application platform eases integrations with these cloud services so that the applications can utilize the best services when required.
Global Load Balancers
Typical enterprise data centers and networks are distributed across regions. As applications are deployed across clusters across regions, multi-cluster ingress and global load balancing become key features of a modern application platform.
Application Lifecycle Management
Application developers, testers and deployers need tools to integrate and consume the platform for building, deploying, testing, and debugging applications using Agile and DevOps approaches. A modern application platform includes tools such as CLIs, IDEs, frameworks and plug-ins for their current workspaces to build, test and deploy containerized applications to improve developer productivity and reduce inner loop development cycle time. Modern application platform includes or integrates with CI/CD tooling compatible with open source CI/CD technologies based on Tekton. The platform also includes or integrates with source control repositories, container registries, and defect tracking tools.
In this first part of the two-part blog series, we discussed features of a modern application platform for enterprises – a Kubernetes based, hybrid, multicloud platform with tooling to support a consolidated single pane view, application lifecycle, and incorporates industry best practices. In the second part, we will review Anthos, Google Cloud’s implementation of the modern application platform and the solutions we offer with the platform.
Ultimately, any changes to your organization’s IT structure must deliver value to your customers. In our “CIO guide to application modernization” guide, we share how we can help you reorient your IT organization to adopt a product-based model for delivering business capabilities quickly, efficiently and securely. Download the guide to view our in-depth recommendations and start your application modernization journey today.
By: Veer Muchandi (Solution Manager, Application Modernization, Google)
Source: Google Cloud Blog