How To Build A Serverless, Internal Developer Platform

Peter Mbanugo - Jan 10 '22 - - Dev Community

Many teams still deploy and manage apps on their own infrastructure. Some use their own private data centre and others a public cloud IaaS offering. I've worked with teams that depend on their own infrastructure using a custom-built developer platform to deploy, manage, and monitor the status of services. Usually, the interface is nothing fancy, but it does the job well and is adapted to the team/company's process.

What Is An Internal Developer Platform?

According to internaldeveloperplatform.org An Internal Developer Platform (IDP) is a layer on top of the tech and tooling an engineering team has in place already. It helps Ops (or DevOps) teams structure their setup and enable developer self-service.

This platform can be a web console or CLI that integrates with the existing tools the team uses.

Why Use An Internal Developer Platform (IDP)?

IDPs have a huge impact on the velocity and productivity of the team. If done right, they increase the deployment/delivery frequency, promote better visibility and transparency across teams, and improve ways of working.

How To Build An Internal Developer Platform on Kubernetes using Knative, Tekton, GitHub, Cloud Native Buildpacks and Next.js

An IDP is built on top of the tech and tooling an engineering team already has in place. So for this post, I'll focus specifically on some of the tools I work with. They are:

  1. Kubernetes: an open-source system for automating deployment, scaling, and management of containerized applications.

  2. Knative: a Kubernetes-based platform to deploy and manage modern serverless workloads.

  3. Tekton: a Cloud Native CI/CD system, allowing developers to build, test, and deploy across cloud providers and on-premise systems.

  4. GitHub: a development platform to build, ship, and maintain software.

  5. Cloud Native Builpacks: transforms your application source code into container images that can run on any cloud, without requiring you to write Dockerfiles.

  6. Next.js: A React framework with a very good development experience.

The platform will run on Kubernetes and support serverless applications through the use of Knative. Developers can access the platform using a web console that's written in Next.js.

Here's a preview of what the workflow looks like:

I put all this knowledge in my book; How to build a serverless app platform on Kubernetes. It's a hands-on book that will teach you how to build a serverless developer platform using the technologies and tools I mentioned previously.

You will learn:

  • What Knative is and how to install and use it for your serverless workloads on Kubernetes.
  • How to use and create CI/CD pipelines with Tekton.
  • You will learn how to use Buildah to build container images in your pipeline. And then you will move on to using Cloud Native Buildpacks to build images.
  • You will integrate with GitHub by building a GitHub App which will trigger your CI/CD pipeline when it's time to deploy a new app or update an existing one.
  • You will build the platform's web UI using Next.js. Although some knowledge of JavaScript is required for this part, no Next.js experience is required because every line of code will be explained, so that non-React developers can also follow along.

I'm giving a 50% discount to any DEV community member who buys the book with the discount code devcommunity. The discount code is valid for a maximum of 50 purchases, so hurry and get your copy now!

Follow these steps to purchase with your discount code:

  1. Go to the book's website - bit.ly/3q3UKij
  2. Enter 20 (the min. purchase price) in the price field and click the Buy this button.
  3. Enter devcommunity in the discount code field.
  4. Enter your card and personal details to complete your purchase.

If you encounter any errors or have any feedback, feel free to comment here or send me a DM on Twitter

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .