Towards a Platform Engineering Culture

Empowering Innovation and Collaboration inside Licious

Prabuddha Chakraborty
Licious Technology

--

Introduction

In the rapidly evolving realm of software development, forward-thinking organizations are embracing the transformative power of a platform engineering culture. This innovative approach emphasizes the creation of shared platforms, tools, and practices that empower developers to deliver high-quality software faster and more efficiently. In this article, we will delve into the core principles and far-reaching benefits of a platform engineering culture, exploring how it fosters a unique blend of collaboration, innovation, and scalability within tech teams.

The Essence of a Platform Engineering Culture

At its heart, a platform engineering culture revolves around the concept of building a set of reusable and scalable tools, services, and frameworks that empower developers across an organization. Rather than treating infrastructure and common services as isolated projects, this culture promotes the creation of centralized platforms that can be leveraged by different teams and projects. The collaborative and proactive nature of this approach eliminates duplication of efforts, streamlines the development process, and ensures a cohesive and consistent output across products and services.

Fundamental Principles Guiding Platform Engineering

Abstraction and Standardisation: Platform engineers adeptly abstract the complexities of underlying infrastructure and services, providing developers with simple and standardized APIs. By doing so, they empower developers to focus on building features and functionality rather than dealing with low-level implementation details.

Automation: At the core of a platform engineering culture lies a strong emphasis on automation. Automated provisioning, deployment, testing, and monitoring processes enable teams to deliver software with heightened speed, reliability, and consistency.

Self-Service: Platform engineers diligently work to empower developers with self-service capabilities, enabling them to access and manage resources effortlessly. These self-service platforms facilitate quicker iterations and reduce reliance on centralized teams for routine tasks.

Continuous Improvement: A platform engineering culture is deeply ingrained in the principles of continuous improvement. Platform engineers actively seek feedback from developers, identify pain points, and iteratively evolve their platforms to cater to evolving development needs.

Benefits of Embracing a Platform Engineering Culture

Accelerated Development: By providing pre-built components and services, a platform engineering culture accelerates the development process. Developers can concentrate on building application logic, thus reducing redundancy and expediting time-to-market for new features and products.

Enhanced Collaboration: A platform engineering culture fosters a spirit of cross-team collaboration. Platform teams work hand-in-hand with application development teams, promoting a sense of partnership and shared responsibility for delivering high-quality software.

Scalability and Efficiency: Shared platforms inherently reduce redundant efforts and promote efficiency in software development. As the organization grows, the platform seamlessly scales to accommodate increasing demands without necessitating a significant increase in resources.

Consistency and Reliability: Standardised platforms guarantee consistency across products, resulting in a more reliable and predictable user experience. Additionally, automated processes lead to fewer human errors and a heightened level of system reliability.

Cultivating Innovation: By entrusting common infrastructure concerns to platform teams, application developers are liberated to focus on innovation and building unique features that add substantial value to their products or services.

Risk Reduction: The standardized platform reduced the risk of system failures and outages, enhancing the overall reliability and performance

Transitioning to a platform engineering culture may pose its share of challenges. A gradual adoption process, coupled with continuous feedback loops, ensures a seamless transition and secures everyone’s enthusiastic buy-in.

Case Study: Licious Journey to Platform Engineering Excellence

In order to illustrate the practical benefits of transitioning to Platform Engineering, let’s explore the case of Licious. Internally we at Licious have recognized the need for a more streamlined, scalable, and efficient approach to software development and deployments.

In our journey, we, like many organizations, have experienced challenges related to scaling our software development efforts. With a growing number of applications, frequent releases, and a complex technology stack, we found it increasingly difficult to maintain consistency, reliability, and efficiency in our DevOps practices.

Recognizing the limitations of our existing DevOps approach, early last year, we decided to transition to Platform Engineering to address these challenges comprehensively.

We followed implementing a strategic roadmap in phases.

Phase 1: Empowering DevOps with Automation and Shift Left

In Phase 1, we identified the following areas of work:

  • Strategy & Measurable Metrics: We conducted a thorough assessment of our current practices, identified pain points, and developed a vision for a robust DevOps engineering approach with metrics. We established a clear strategy that aligned platform engineering objectives with the company’s long-term business goals.
  • Team Restructuring and Skill Development: The team of skilled DevOps engineers was restructured and upskilled to specialize in platform engineering. Additional training was provided to ensure they were equipped with the necessary knowledge in areas like infrastructure-as-code, containerization, and automated deployment pipelines through cloudnative approach. Help them adapt programming as a core and not just for scripting.
  • Infrastructure as Code Adoption: We invested in infrastructure-as-code (IaC) practices using Terraform to automate the provisioning and management of our infrastructure. This allowed for consistent, repeatable, and version-controlled infrastructure deployments and patches.
  • Containerization & Orchestration: Containerization using Docker and orchestration through Kubernetes were introduced to streamline application deployment, scaling, and management across different environments. Embraced Cloudnative stacks. Created Kubernetes based operator to handle manual operation in an automated fashion.

Migrated 100+ services from EC2 to Kubernetes in the span of 45 days.

Some Random Kubernetes memes from the Internet
  • GitOps & Shift Left: We have invested significant time to develop a self-service process and leverage GitOps principles, enabling development teams to provision resources, manage deployments, and monitor services autonomously. This eliminated resource bottlenecks and reduced the need for manual interventions.
  • Continuous Improvement: We continuously collected feedback from development teams and iteratively improved the platform engineering practices based on real-world usage and challenges.

Outcome :

The results of phase 1 were extremely positive. Internal to the team, we were able to

  1. Lower redundant tasks DevOps were doing on a daily basis.
  2. Reduce dependency and blockers on DevOps.
  3. Increase the reliability and scalability of our system.
  4. Less unexpected outages due to peak hours and campaigns.
  5. More power to the service owner to manage their application confidently.
  6. Most importantly improvement in the work-life balance of DevOps engineers. Less time spent at night firefighting.

Phase 2: Internal Developer Platform

The next phase of the licious platform engineering journey is its own Internal Developer Platform.

Why? During our migration to the Kubernetes Platform, most of the challenges we faced were finding ownership of the deprecated service and the active branch being deployed on Git. Hence the idea of having an internal service catalog came to exist.

What are we trying to solve? Reduce Onboarding time for new services. Improve developer experience and implement the Service Maturity Index.
Streamline the journey of our releases from development to production with zero dependency on a DevOps/Platform engineer.

How are we going? At this moment we are at a very early stage of our IDP journey. But the more we read about other company’s adaptation of Internal Developer Platforms, like Spotify’s Backstage, we are confident that we are on the right path. Hopefully, by the next article, we will touch more on this area.

Wrap up

The Licious transition from DevOps to Platform Engineering showcases the transformative impact of adopting a holistic approach to software development and deployment. By creating a standardized, scalable, and self-service platform, we were confident to overcome the challenges we are facing and achieve new levels of efficiency, reliability, and collaboration.

--

--