The transition from large monolithic systems running on on-premises infrastructure to modern approaches like microservices, virtual machines (VMs), and containers raised concerns about how developers would effectively handle this complexity. It prompted questions about whether developers should become experts in every facet of these technologies or if there should be abstractions to manage high-level concerns.
This blog is based on an interview with Ramiro Berrelleza, Founder and CEO at Okteto, which focused on developer experience and platform engineering.
The rise of Kubernetes
The growth of Kubernetes and its implications for the developer experience have been fascinating. These advancements brought numerous benefits, such as breaking down monolithic applications, enabling frequent software releases, and establishing a unified infrastructure for production. However, they also introduced complexity. The most significant complexity arises from the shift from a simple, single binary application that could run on a laptop to a complex orchestration of microservices, cloud services, APIs, infrastructure code, networking, and policies. This complexity is often overlooked, but it’s essential to recognize that these trade-offs empower us to achieve much more. Kubernetes, for example, can be intricate, but it automates tasks that were once done manually.
Now, the focus needs to shift towards creating a developer-centric experience. Allowing every developer to make individual choices without standardization is counterproductive. It leads to many deployment and development methods within an organization, making it challenging to maintain consistency and causing inefficiencies. The key is to enable developers to spend more time addressing critical business challenges. This is where developer experience and platform engineering come into play. They help make these choices deliberately, balancing empowering developers and ensuring organizational effectiveness, ultimately delivering maximum value.
Understanding platform engineering
Platform engineering refers to a group of individuals or a formal team responsible for designing, developing, and operating essential shared services universally required within an organization. This encompasses many services, including fundamental infrastructure components like cloud accounts, continuous integration (CI) systems, and source control. It can extend to more complex services like application infrastructure, logging solutions, Grafana clusters, Kubernetes clusters, and even defining patterns and practices such as standardizing REST APIs and event-based services for the entire organization.
The role of the platform team can vary in scope and approach. On one end of the spectrum, it might provide well-defined templates and command-line interfaces (CLI) that every team should follow. Conversely, it could be more lightweight, offering published standards, guidelines, and APIs for teams to adopt as they see fit.
The core purpose of the platform team is to alleviate the burden on individual application developers, recognizing that it’s unreasonable to expect every developer to be an expert in all these domains. By centralizing the ownership of common, critical services and decisions, such as adopting technologies like Kubernetes or selecting monitoring tools like Datadog or Dynatrace, the platform team ensures a more efficient and coordinated approach across the organization. In essence, they act as the custodians of shared resources and best practices, making it easier for development teams to focus on their core tasks and ultimately improving the overall productivity and effectiveness of the organization.
Adopting open-source solutions, industry-wide standards, and common practices is influencing a shift toward utilizing external resources rather than building everything from scratch. As a result, fewer organizations are attempting to create databases or source control systems from the ground up.
Octeto for platform engineering
Octeto is a platform that sets itself apart by focusing on automating the developer experience for organizations building cloud-native applications. It caters to developers, empowers platform teams, and extends the software development life cycle to include a broader range of stakeholders. This vision and approach make Octeto distinct and well-suited for organizations seeking to optimize cloud-native application development processes.
Here’s what makes Octeto distinct:
- Cloud-Native Focus: Octeto is specifically designed for cloud-native applications. It caters to the needs and complexities of modern, microservices-based application development. The team behind Octeto has extensive experience in this domain, making their perspective unique.
- Developer-Centric Approach: Unlike many other platforms primarily focusing on production and deployments, Octeto starts with the developer experience. This approach is centered around making developers’ lives easier and more productive.
- Built-In Container Services: Octeto streamlines container operations by incorporating features like container build services and a container registry on the cluster. This emphasis on container efficiency is meant to speed up development workflows, especially when pushing and pulling containers.
- User-Friendly UI: Octeto’s UI abstracts many of the complexities of Kubernetes for developers. It provides easily accessible status information, logs, and error messages catering to most developers’ daily needs.
- Platform Team Empowerment: Octeto includes features for platform teams to define and standardize what environments should look like and establish governance rules, reducing manual enforcement efforts. This streamlines platform operations and makes it more efficient.
- Cost Control Features: Octeto offers cost control features, such as scaling infrastructure up and down, ensuring that resources are utilized optimally. For example, scaling down at night can save costs, and scaling back up in the morning for developers to resume work.
- Inclusive Software Development: Octeto’s vision is to involve everyone in the software development life cycle, not just developers. It enables non-developers to participate by providing physical preview environments, allowing stakeholders like CEOs or design teams to interact with and provide feedback on new features.
- Leveraging Open Source Standards: Octeto leverages open-source tools, including Kubernetes, to simplify user adoption.
Future of platform engineering and developer experience
Looking ahead, platform engineering and developer experience have come a long way regarding automation, ease of use, consistency, and predictability. The focus has been on simplifying processes and accelerating development. The goal is to unlock the next level of productivity and streamline development workflows by seamlessly integrating cloud resources into the developer’s toolkit.
- New Types of Applications: Emerging application types, such as WebAssembly, are making a strong presence. Service catalogs and other innovations are shaping the landscape.
- Access to Specialized Workloads: The future might involve giving developers access to specialized workloads, especially as AI and machine learning become increasingly important.
- Cloud as an Extension of Your Laptop: The next significant evolution could be treating the cloud as an extension of your local development environment. This means seamlessly integrating cloud resources into your daily workflow.
- Challenges and Opportunities: While the vision of a cloud-connected laptop is compelling, it also presents various challenges, such as security, resource management, and cost control. Many companies are still in the process of understanding and addressing these challenges.
Okteto founder advises companies to “focus on the 20% that makes your organization unique and adopt standardized practices and tooling that solves for the remaining 80%.” Wondering how? Watch this podcast to find out.