Platform Engineering: A new hot topic in the DevOps and Cloud space.
Discussion: Whether platform engineering replaces DevOps or complements it.
Impact: Changes many established rules about DevOps, SRE, and Cloud engineering.
Defining Platform Engineering
What is Platform Engineering?: Platform engineering standardizes the deployment and runtime tools used for applications across teams.
Purpose: To solve problems arising from the evolution of roles and to address issues not sufficiently solved by existing solutions.
Evolution and Need
Traditional Model:
Separate developers and operations teams.
Inflexible and slow process with lots of dependencies.
Silos of knowledge and communication challenges.
DevOps Model:
Merged development and operations teams to increase flexibility and reduce communication silos.
One team handles the entire stack (application, infrastructure). High cognitive load and responsibilities.
Platform Engineering Solution
Standardization: Platform engineers standardize tools and processes across teams to improve efficiency and reduce cognitive load.
*Responsibilities:
Platform team manages CI/CD platforms, Kubernetes clusters, logging/monitoring, security, etc.
Implementation
Setting Up: Platform engineers set up the required tools and infrastructure based on best practices.
Self-Service Interface: Provides an abstraction layer through UI or API for application teams to self-service their needs quickly.
Internal Developer Platform (IDP): Platform as a service that allows internal developers to access pre-configured services.
Practical Benefits
Resource Management:
Reduces the need for each team to have deep expertise in all tools.
Allows platform engineers to take over extensive operational tasks, freeing up application teams.
Consistency and Security: Ensures tools and services are consistently managed and secured across the organization.
Balancing Standardization and Flexibility
Choice of Tools: While standard tools are provided, application teams can request alternative tools which can later be integrated into the platform for others to use.
Avoiding Rigidity: Platform engineering avoids reverting to old inflexible models by keeping platforms flexible with guardrails.
Continuous Development
Treat as a Product: Develop the platform over time, continuously improving it based on feedback.
Start Small: Integrate common tools used across teams first and gradually expand.
Collaboration with Teams: Work closely with application teams to address their challenges.
Role of DevOps in Platform Engineering
Shared Responsibility: Platform team handles operation side, but application teams still manage proper use of tools.
Cognitive Load Distribution: Reduces the cognitive load on DevOps engineers by sharing responsibilities.
Conclusion
Platform Engineering and DevOps Coexistence: Platform engineering complements DevOps by reducing operational burdens and standardizing processes without sacrificing flexibility.
Future of Roles: DevOps engineers remain essential, focusing on using tools correctly, while platform engineers enhance the operational foundation.
Practical Learning
Courses and Bootcamps: Learning both aspects of DevOps and platform engineering to be effective in any given role.