<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1063935717132479&amp;ev=PageView&amp;noscript=1 https://www.facebook.com/tr?id=1063935717132479&amp;ev=PageView&amp;noscript=1 "> Bitovi Blog - UX and UI design, JavaScript and Frontend development
Loading

DevOps |

GitHub as a Platform Engineering Platform - The GitHub Actions Path

Revolutionize your software delivery with GitHub Actions. Simplify deployment and increase productivity with GitHub as your Platform Engineering platform.

Leo Diaz Longhi

Leo Diaz Longhi

Twitter Reddit

In the dynamic realm of technology, innovations evolve from cumbersome initial concepts to streamlined solutions. This journey of continuous enhancement parallels the shift in system administration from manual, labor-intensive setups to the elegant processes of the DevOps era, emphasizing automation and efficient application delivery.

We’re now entering the Platform Engineering era. Building on DevOps principles, Platform Engineering offers a simplified "DevOps in a box" solution that makes deployment accessible to all without the need to understand complex underlying systems. Bitovi's approach combines open source innovation with our extensive DevOps expertise, transforming what used to require days of manual effort into minutes of straightforward configuration. The Platform Engineering era redefines developer experience and efficiency in deploying technology solutions.

The Trouble with Traditional DevOps

To test and deploy a simple code change without DevOps, developers must understand many tools such as Helm, Kubernetes, Docker, Ansible, Chef, Terraform modules, etc. Alternatively, they can click around in a cloud provider to make the servers exist (e.g., ClickOps), but it becomes difficult to scale.

Traditional DevOps provides value through the internal exchange of knowledge and expertise, but for smaller organizations, the transition to a DevOps team is easier said than done. Removing the traditional operations role can require more senior engineers to become responsible for setting up deployment infrastructure, spending more time resolving requests from junior colleagues than writing code. With this version of DevOps, your organization is misusing its most expensive and talented resources. And the development team at large cannot ship features with the same speed and reliability. In other words, DevOps — the solution — becomes the bottleneck.

So the question remains: how can you elevate DevOps maturity, lessen the cognitive load of your development team, and still increase productivity and satisfy your end users? With Platform Engineering.

Platform Engineering: The Next Evolution of Software Delivery

Platform engineering was born from the ever-evolving cloud landscape and the increasing complexity of modern applications. Platform engineers configure the various tools and resources your developers require, then create an abstraction layer of automations, and, finally, build a user interface — turning complex tools, like Kubernetes and Helm, into a self-service platform, known as an internal developer platform (or IDP), your development team can use.

To cite Puppet’s State of DevOps Report 2021,

“The existence of a platform team does not inherently unlock higher evolution DevOps; however, great platform teams scale out the benefits of DevOps initiatives.”

So, if you’re looking to go from good to great, Platform Engineering shouldn’t be considered just another tech trend; It’s a valuable business solution.

Building an IDP may sound like a vast undertaking, but there’s a way to scale up your DevOps initiatives using tools your team is already familiar with — GitHub!

GitHub Actions is an automation platform provided by GitHub. It enables developers to automate repetitive tasks, streamline development workflows, and improve collaboration through consistent and reliable code builds and deployments. It's a great tool to increase productivity and efficiency in the development lifecycle.

GitHub even has a vast marketplace of pre-built, community-contributed actions. These actions cover a wide range of use cases, including running tests, managing dependencies, and even performing deployments, and they easily integrate standard development tools and processes into repeatable workflows.

Did You Know: Bitovi has built many deployment-based GitHub actions?
You can check out our Open Source GitHub Actions on GitHub’s marketplace.

Enhanced Developer Experience (DevEx) with GitHub Actions

GitHub Actions streamlines your development process, transforming your team into a more efficient unit. It accelerates the delivery of updates and enhancements, keeping your end users and stakeholders happy with your product.

Using GitHub Actions for your developer platform can provide value in many areas:

  1. Automated Workflows: Handle everyday development tasks such as code compilation, testing, linting, and packaging. This ensures a standardized and efficient development process.

  2. CI/CD Pipelines: Run continuous integration (CI) and continuous deployment (CD) pipelines.

  3. Environment Provisioning: Automate the provisioning of development, staging, and production environments. This could involve setting up infrastructure, configuring databases, and deploying applications consistently and automatically.

  4. Dependency Management: Automate dependency management to ensure developers have the necessary libraries, frameworks, and tools in their development environments.

  5. Automated Testing: Automate testing workflows for unit, integration, and end-to-end application tests. This helps maintain code quality and identify issues early in the development process.

  6. Deployment Orchestration: Orchestrate the deployment process, including managing blue-green deployments, canary releases, and rolling updates, to ensure smooth and controlled deployments of applications.

  7. User Access and Permissions: Automate access control and permissions within the developer platform. This can involve automatically granting access to specific repositories or services based on roles or teams.

  8. Integration with Tools and Services: Easily integrate with other tools and services commonly used in the developer platform, such as monitoring, logging, collaboration tools, and communication platforms.

  9. Develop custom actions tailored to the specific needs of your developer platform to create an automation catalog, allowing for seamless integration of specialized processes or tools.

Bitovi DevOps has helped many teams overcome deployment automation challenges by leveraging GitHub as a Platform Engineering Platform, and we’d love to provide that value to you!

Schedule a free consultation today, and accelerate your Platform Engineering Journey with Github!

Bitovi’s Approach to GitHub Actions

One core value of Bitovi’s DevOps services is a strong adherence to GitOps approaches. GitOps is a declarative approach to infrastructure management by committing infrastructure definitions to a repo. Then the magic 🪄 happens, and what you described exists as running infrastructure.

In this case, the magic is Infrastructure as Code (IaC) and its associated tools. Examples of IaC include:

  • Terraform: primarily for broad infrastructure definition
  • Ansible: primarily for setting up virtual machines (installing and starting services, etc)
  • Helm: primarily for deploying to Kubernetes

Bitovi brings this GitOps focus to GitHub Actions as a suite of deployment-based actions that enable developers to own their infrastructure without sacrificing the ability to audit changes via git based infrastructure management.

image-20240221-200935

The formula for Bitovi’s actions is: deploy thing(X) to place(Y). The thing is an application or service in any programming language, and the place can be any of Virtual Machines, container orchestrators like Kubernetes, serverless functions, Content Delivery Networks, or even LLM inference on a cloud host like AWS, Azure, Google Cloud, or data center management tool.

Did you know that Bitovi DevOps has built valuable software automation catalogs for our clients using GitHub Actions? Schedule a free consultation to learn how to add value to your automation efforts with GitHub Action.

Repository Layers for Platform Engineering with GitHub

Bitovi’s GitHub Actions framework is comprised of 3 layers of actions:

  1. IaC Layer
  2. Actions Layer
  3. Deployment Layer

This three-layered repository approach gives significant flexibility and efficiency when managing automation catalogs through GitHub Actions.

1. IaC Layer

Bitovi DevOps Department Slides - 2024 (2)

The bottom layer contains infrastructure as code and tools necessary to connect to cloud providers. Bitovi’s own BitOps (https://bitops.sh/ ) is extremely helpful at this layer as its purpose is to stitch together IaC tooling, and it has a plugin-based architecture for both IaC tools and cloud providers. The IaC is then further wrapped in a GitHub Action we call Commons, which essentially translates GitHub Action inputs into IaC inputs through BitOps.

2. Actions Layer

Bitovi DevOps Department Slides - 2024 (1)

The actions layer is the least well-defined of all the layers because its form depends on the project's needs.

On the one hand, actions at this layer, like Deploy Docker to EC2 (D2EC2), can provide arbitrary deployment wrappers around developers' code, allowing for experimentation, proofs of concepts, and low-overhead service apps for organizations. At Bitovi, we’ve used D2EC2 to support many internal projects, internal services, and client POCs easily. Let’s call these actions “Generic Deployment Actions”.

On the other hand, you might want to deploy to allow repeatable deployments of a specific app or service. For example, at Bitovi, we love StackStorm. This event-driven automation solution is very powerful but also can be tricky to set up, so we built a GitHub Action to make it easier for people to manage StackStorm Deployments: Deploy StackStorm to AWS.

Platform engineers manage the lower two layers and expose features to developers through simple inputs. The commons layer makes it very easy for platform engineers to manage the actions layer (e.g., their organization’s automation catalog) because custom, bespoke, full-stack deployment actions can be created by composing features exposed by the Commons layer.

3. The Deployment Layer

Bitovi DevOps Department Slides - 2024 (3)

The deployment layer is essentially just workflows in project repositories. Your organization’s developers can reference the ‘Actions Layer’ actions in their app and service repositories to quickly deploy valuable features and bug fixes to your users.

What's Next?

To learn more about our approach to GitHub Actions, check out this talk by Bitovi’s DevOps Director, Mick McGrath:

Need help?

Then contact us through Discord or set up a free consultation. We love solving challenging automation problems, especially with GitHub Actions, and we are always looking for ways to share value and expertise.