Automating Code Upgrades in Spryker CI

Sophisticated DevOps automation for Spryker customers
19.09.2023

Spryker is the leading composable commerce platform for enterprises with sophisticated business models to enable growth, innovation, and differentiation. Designed specifically for sophisticated transactional business, Spryker’s easy-to-use, headless, API-first model offers a best-of-breed approach that provides businesses the flexibility to adapt, scale, and quickly go to market while facilitating faster time-to-value throughout their digital transformation journey. As a global platform leader for B2B and B2C Enterprise Marketplaces, Thing Commerce, and Unified Commerce, Spryker has empowered 150+ global enterprise customers worldwide and is trusted by brands such as ALDI, Siemens, Hilti, and Ricoh. Spryker was recognized by Gartner® as a Visionary in the 2022 Magic Quadrant™ for Digital Commerce and was also ranked as a Strong Performer in The Forrester Wave™: B2B Commerce Solutions, Q2 2022. Spryker is a privately held technology company headquartered in Berlin and New York.

Abstract

Spryker offers a next gen Platform-as-a-Service+ (PaaS+) that hosts and deploys customers’ implementations of Spryker Commerce OS. However, the Spryker Commerce OS is also dependent on third-party libraries and therefore requires maintenance and upgrading.

To simplify this, Spryker expanded its PaaS+ offering with Spryker Code Upgrader, powered by Spryker CI. This time-saving tool offers upgrade suggestions and semi-automatic code upgrades towards the customer’s code repository.

Spryker CI and Spryker Code Upgrader accelerate business innovation by providing a seamless process for continuous upgrades to Spryker Commerce OS. This offers multiple benefits:

  1. Improved code quality.
  2. Streamlined upgradability efforts -
    a) Spryker introduces automated and semi-automated upgrades, reducing upgrades efforts and costs.
    b) Upgrades cover minor and patch releases of Spryker modules when the following the customization strategies are in use by the customer: Configuration, Plug and Play, and Project Modules. These do not make changes to project code.

This fits with the Spryker vision of providing an effective, efficient and safe method of ensuring Spryker business solutions are continuously up-to-date, allowing customers to focus on sophistication and innovation, not maintenance.

Future releases of Spryker’s CI will continue to focus on providing self-service capabilities to customers, enabling them to further customize the DX according to the functionalities they require.

The problem

Upgrades are often disregarded to avoid the immediate cost and manual effort. In addition, new upgrades must be tested with any custom implementation to prevent breaking the software. This would result in missing security patches and potentially even new features.

Furthermore, the customer might undertake code changes that are not compliant with Spryker’s ecosystem, which could lead to technical debts in future maintenance.

In other cases, some customers using the Spryker Cloud service had little understanding of the CI/CD process of their application. This led to customers having to ask the Spryker operations team for information on when a fix could take place.

The solution

Customers can utilize Spryker PaaS+ and Spryker Code Upgrader to enable a semi-automatic and seamless process for continuous upgrades in Spryker Cloud. This process covers the end-to-end flow, starting from the code being pushed to a repository via Git, right up until it is deployed with AWS code pipeline.

To achieve this, each customer receives pre-defined CI/CD pipelines placed in their dedicated workspace. Workspaces are powered by Buddy, a managed solution that provides a UI for building CI/CD pipelines and comes with many actions.
Spryker Case CI/CD graph 1

The workspace contains a pipeline with one step: Spryker Code Upgrader runs every week per default, but this can be configured according to customer needs. If an upgrade is available, it will create a Pull Request (PR) on Github or Merge Request (MR) on Gitlab. The user only needs to approve these, should they wish. There is also an available feature to auto-approve every PR and MR without requiring user interaction.

The whole Spryker CI integration is written in Terraform.

The result

Customers cannot enjoy an authentic platform experience until platforms provide true enablement for DevOps automation. Spryker’s PaaS+ seeks to provide automated CI/CD workflows that enable customers to continuously integrate and deploy their Spryker containerized solutions.

Instead of connecting their repositories directly to the provided AWS CodePipelines, Spryker customers can now, in a self-service manner, deploy their application via Spryker CI.

This solution provides:

  • A great DX/UX.
  • Visibility and control over CI/CD jobs.
  • CI capabilities as the customer’s code is checked against Spryker best practices and PaaS compatibility.

Spryker CI and Spryker Code Upgrader have enabled Spryker customers to be more proactive in their work, minimizing their need to contact Spryker engineers. This results in reduced upgrade and maintenance efforts, enabling easier adoption of new releases or fixes.