A Practical Step-by-Step Approach to Building a Platform
In this article, we dig into the adventure of a platform engineering crew and outline a step-with the aid of-step method to building an internal developer platform.
In my preceding article, I mentioned the concept of a platform within the context of cloud native application development. In this article, I will dig into the adventure of a platform engineering crew and outline a step-by way of-step method to constructing this kind of platform. It is crucial to notice that building a platform should be treated no in a different way than constructing every other product, as the platform is ultimately developed for inner users.
Therefore, all of the software program improvement lifestyles cycle (SDLC) practices and methodologies typically employed in product development are equally relevant to platform constructing. This includes know-how end customers’ pain factors and needs, assembling a devoted group with a product proprietor, defining a minimal viable product (MVP), devising an structure/layout, enforcing and checking out the platform, deploying it and ensuring its continuous evolution beyond the MVP level.
Before beginning to construct a platform, it's far vital to determine if the organization certainly desires one and what's using the need for it. Additionally, it's miles important to set up clean dreams for the platform and define criteria for measuring its fulfillment. Identifying the specific business desires and outcomes that the platform will deal with is critical to validate its necessity.
While the advantages of decreasing cognitive load for builders, providing self-serve infrastructure and improving the developer revel in are obvious, it's far essential to apprehend the organization’s specific challenges and ache factors and how the platform can address them. Some commonplace commercial enterprise goals include the subsequent:
Accelerating software modernization through shared Kubernetes infrastructure.
Reducing charges by way of consolidating infrastructure and tools.
Addressing ability-set gaps via automation and self-serve infrastructure.
Improving product transport times by way of lowering developer toil.
Step 2: Discover Landscape and Identify Use Cases
Once platform teams establish excessive-stage business goals, the next step inside the platform improvement process is to understand the modern-day generation panorama of the corporation. Platform teams have to expand a thorough know-how of their present infrastructure and their destiny infrastructure needs, applications, services, frameworks and tools. Platform groups must additionally apprehend how their inner teams are dependent, their competencies in using frameworks like Terraform, the SDLC gear, etc. This may be completed thru a series of discovery calls and user interviews with extraordinary application groups/commercial enterprise units, inventory audits and interviews with capability platform customers.
Through the invention manner, platform groups need to pick out the challenges that the internal groups face with the modern offerings and gear, deriving the use cases for the platform based totally on the ache points of the inner customers. The use instances can be as easy as growing self-serve development environments to more complex use instances like a single pane of glass management for infrastructure control and application deployment. The following are numerous discovery items:
Current infrastructure (e.G., public clouds, non-public clouds)
Kubernetes distributions in usage (Amazon EKS, AKS, GKE, Upstream Kubernetes)
Managed offerings (databases, storage, registry, etc.)
CI/CD methodologies presently in use
Security equipment
SDLC gear
Internal teams and their structure for enforcing RBAC, clean isolation barriers and crew-unique workflows
HA/DR requirements
Applications, offerings in use, common frameworks and era stacks (Python, Java, Go, React.Js, and many others.) to create widespread templates, catalogs and documentation
Step 3: Define the Product Roadmap
The use instances amassed all through the invention manner should be taken into consideration to create a roadmap for the platform. This roadmap ought to define the MVP necessities important to build an initial platform which can display its value. Platform groups may also to start with consciousness on one or use cases, prioritizing those probably reaping rewards a larger group of inner customers.
It is suggested to start via piloting the MVP with a small institution of inner users, software groups or business gadgets to acquire remarks and make enhancements. As the platform turns into greater strong, it could be elevated to serve a broader range of users and cope with extra use cases. The following are several example person memories from cloud local software development projects:
As a developer, I want to create a CI pipeline to compile my code and create artifacts. (CI as a Service and Registry as a Service)
As a developer, I want to create a sandbox surroundings and set up my software to the sandbox for checking out. (Environment as a Service)
As a developer, I need to set up my packages into Kubernetes clusters. (Deployment as a Service)
As a developer, I need get right of entry to to utility logs and metrics to troubleshoot product issues.
As an SRE, I want to create and control cloud environments and Kubernetes clusters compliant with my organisation’s protection and governance regulations.
As a FinOps, I need to create chargeback reviews and allocate expenses to numerous commercial enterprise units. (Cost control as a Service)
As a security engineer, I want to continuously observe community safety and OPA rules across the Kubernetes infrastructure. I additionally need to peer coverage violations and access logs in the central SIEM platform. (Network and OPA coverage management as a Service)
Building the platform entails growing the automation backend to provide the infrastructure, services and tools that internal customers need in a self-serve way. The self-serve interface can vary from Jenkins pipelines to Terraform modules to Backstage IDP to a custom portal.
The backend involves automating duties which include growing cloud environments, provisioning Kubernetes clusters, growing Kubernetes namespaces, deploying workloads in Kubernetes, viewing application logs, metrics, and so forth. Care have to be taken to apply the organisation’s protection, governance and compliance policies as platform teams automate those tasks. The following easy era stack is believed for the example enterprise:
CI/CD: GitLab for CI and ArgoCD for application deployment
Databases: AWS RDS Postgres, Amazon ElasticCache for Redis
Observability: AWS OpenSearch, Prometheus and Grafana for metrics, OpsGenie for alerts
Security: Okta for SSO, Palo Alto Prisma Cloud
The example organisation runs workloads within the AWS cloud. All stateless utility workloads are containerized and run in Amazon EKS clusters. Workloads make use of AWS RDS Postgres for the database and Amazon ElasticCache (Redis) for the cache. The initial user stories are:
Create an AWS surroundings that creates a separate AWS account, VPC, an IAM Role, protection agencies, AWS RDS Postgres, AWS ElasticCache.
Create an EKS cluster with accessories required for safety, governance and compliance.
Create a Kubernetes namespace.
Using Backstage as the developer portal and Rafay backstage plugins because the automation backend, the subsequent are the high-level steps to build the self-serve platform assisting the above use instances:
Install the Backstage app and configure Postgres.
Configure authentication the usage of Backstage’s auth provider.
Set up Backstage catalog to ingest employer information from LDAP.
Set up Backstage to load and discover entities the usage of GitHub integration.
Create a blueprint in Rafay console to define a baseline set of software additives required via the enterprise (value profiles, tracking, ingress controllers, network security and OPA guidelines, and many others.).
Install Rafay frontend and backend plugins in the Backstage app.
Use template movements furnished via the Rafay backend plugin to add software program templates for developing services.
Create a Cluster template with ‘rafay:create-cluster’ motion and provide the blueprint and other configuration from person input or with the aid of defining defaults in cluster-config.Yaml.
Create Namespace and Workload templates the use of ‘rafay:create-namespace’ and ‘rafay:create-workload’ moves.
Import UI widgets from the Rafay frontend plugin to create factor pages for offerings and sources advanced via templates (EntityClusterInfo, EntityClusterPodList, EntityNamespaceInfo, EntityWorkloadInfo, and so forth.).
The screens in the behind the scenes developer portal seem like the following after the implementation:
While this is a simple representation of a platform built the use of Backstage and Rafay behind the scenes plugins, the real platform may also want to remedy for plenty other use cases, which may require a bigger attempt. Similarly, platform teams may use a few different interface and automation backend for constructing the platform.
Treat the Platform as a Product
When embarking on the journey of building a platform, it's far essential to deal with the platform as a product and observe a scientific approach much like every other product development. The first step is to make investments time in thoroughly coming across and know-how the business enterprise’s technological landscape, figuring out modern pain factors and accumulating requirements from internal customers. Based on these findings, a roadmap for the platform have to be described, setting clear milestones and organising achievement criteria for each milestone.
Building this type of platform calls for attention of different factors, which includes cutting-edge and future infrastructure desires, software deployment, safety, running models, price control, developer experience, and shared offerings and equipment. Conducting a build as opposed to purchase analysis enables determine which components of the platform ought to be built internally and which open source and business equipment can be leveraged. Most platforms in the end use all of these components. It is vital to treat inner customers because the platform’s customers, continuously searching for their feedback and iteratively enhancing the platform to make certain its fulfillment.








Comments
Post a Comment