# Our Journey to Continuous Delivery at Grab (Part 1)

[Grab](https://yomu.fyi/company/grab) · Sylvain Bougerel · Sep 23, 2020

**Type:** Problem & solution

## Summary

Around the end of 2018, Grab's backend architecture consisted of roughly 270 services managed through fragmented, manual deployment workflows. Engineers copied release parameters between build logs, wiki pages, Slack bots, and multiple Jenkins jobs, leading to high operational friction and an average of 10 business days between production updates for a service. To streamline delivery, Grab built Conveyor, an internal automation platform built on top of open-source Spinnaker. Conveyor introduced a custom user interface focused on pipeline visibility and a pipeline-as-code DSL called Artificer using Jsonnet files in the monorepository. The platform automatically registers build artifacts with commit metadata to eliminate manual parameter entry and automatically provisions integration, staging, and production pipelines.

## Context

Around late 2018, Grab operated about 270 backend services with a lengthy, manual deployment process involving copy-pasting release versions across Jenkins jobs, wiki release notes, and Slack bot scheduling, averaging 10 business days between service updates in production.

## Approach / What changed

Grab built Conveyor, an internal platform on top of Spinnaker, featuring a simplified dashboard interface, artifact registration directly from CI jobs, and an in-repo Jsonnet-based pipeline-as-code DSL interpreted by a tool named Artificer.

## Takeaways

- In 2018, Grab averaged 300 staging deployments per business day across roughly 270 services, but only about 10% (28 per business day) reached production.
- Conveyor uses Artificer to interpret service-level conveyor.jsonnet files on every commit, allowing services to onboard with minimal configuration specifying service and group names.
- Artifacts generated during Jenkins CI runs are automatically registered with metadata in Conveyor, eliminating manual copy-pasting of build log versions for deployments.

**Tags:** [CI/CD](https://yomu.fyi/topic/ci-cd), [Deployment](https://yomu.fyi/topic/deployment), [Developer Experience](https://yomu.fyi/topic/developer-experience), [Microservices](https://yomu.fyi/topic/microservices), [Monoliths](https://yomu.fyi/topic/monolith)

[Read original post](https://engineering.grab.com/our-journey-to-continuous-delivery-at-grab)
