# Introducing Grab-Kit: Distributed Service Design at Grab

[Grab](https://yomu.fyi/company/grab) · Karen Kue · Jun 8, 2018

**Type:** Problem & solution

## Summary

As Grab migrated from a monolith to microservices, maintaining consistency, coordination, and code quality across rapidly expanding teams became a major engineering challenge. To address this, the Developer Experience team built Grab-Kit, a Go framework that automates service scaffolding, code generation, and distributed system design patterns. The framework uses Protocol Buffer definition files as a single source of truth to generate data transfer objects, communication bindings, and standardized middleware for logging and profiling. Grab-Kit also features declarative metrics definitions that synchronize with the DataDog API to build and update service dashboards automatically. Adopting the framework reduced development time for creating new services by up to 70% in teams such as GrabFood while improving overall system stability.

## Context

Transitioning from a monolithic application to a microservices architecture created challenges in maintaining consistency, coordination, and quality across exponential growth, resulting in inconsistent APIs, fragmented logging formats, and time-consuming manual dashboard creation.

## Approach / What changed

Grab developed Grab-Kit, a Go microservice framework that automates scaffolding, uses .proto files as a single source of truth for code and DTO generation, standardizes middleware stacks, and automates DataDog dashboard generation using declarative metrics.yaml files.

## Takeaways

- Grab-Kit treats generated .proto files as the single source of truth to automatically produce Go data transfer objects (DTOs), boilerplate code, and protobuf bindings.
- A standardized middleware stack automatically instruments logging, stats, panic recovery with compacted stack traces, and developer-mode CPU profiling and execution tracing.
- The grab-kit dash tool parses declarative metrics.yaml files to automatically create and update modular DataDog dashboards for services and their upstream dependencies.

**Tags:** [Architecture](https://yomu.fyi/topic/architecture), [Developer Experience](https://yomu.fyi/topic/developer-experience), [Go](https://yomu.fyi/topic/go), [Microservices](https://yomu.fyi/topic/microservices), [Monitoring](https://yomu.fyi/topic/monitoring)

[Read original post](https://engineering.grab.com/introducing-grab-kit)
