May 10, 2021

How Grover Moves Faster with Prisma

Grover offers monthly tech product subscriptions and splits work on its services across many teams. Some teams have recently found huge productivity gains by adopting Prisma. Read on to find out how Prisma has benefited Grover and how you can benefit as well.

Refresh my Gadgets

Grover offers monthly tech product subscriptions. Instead of always buying the latest phones, tablets, and computers at full price, Grover gives customers a way to rent the gear and refresh it when something new comes along. Not only does this break the barrier between ownership and usage, but it's also a more sustainable and circular way of using tech products.

More than 800,000 people have opted to not let old tech gear collect dust in their drawers by using Grover, and with the €60 million in Series B funding they recently raised, the number of their consumer electronics subscriptions are forecast to grow significantly.

Splitting Services Across Teams

As organizations grow, it's common to have multiple teams of developers, each working on a specific service or area of the product. When teams are split and have their own tech stacks and preferences, data and knowledge can be siloed and communication can be challenging.

Grover is a great example of a company that was able to balance team independence and agency with overall collaboration: they are able to move quickly with independent teams of developers, each using different stacks but bringing their services together cohesively.

Grover is successful at this largely because of how they bring data together and make it accessible through federated GraphQL APIs. Increasinly, Prisma is becoming a key component to this success in both greenfield and brownfield projects.

Let's take a closer look at this setup: all of Grover's services are exposed through a federated GraphQL API, which means that each team can work in a stack of their choosing, so long as the output is consumable through GraphQL.

Specifically for their Apollo Federation, Grover has 14 unique services developed and maintained by multiple development teams (with more being continuosly added).

Languages used across the teams include TypeScript, Ruby, and Python. Some teams use TypeGraphQL, while others use Nexus.

Overview of Grover's Apollo federated GraphQL APIOverview of Grover's Apollo federated GraphQL API

Experimentation Encouraged

Experimentation is encouraged and rewarded at Grover, as well as knowledge sharing between teams. Through cross-team collaboration, developers at Grover share important lessons learned and are able to promote technologies that might make each other's lives easier.

We spoke with Ricardo Almeida, Software Engineer at Grover, who shared his journey with Prisma and how it was encouraged by his team. He started experimenting with Prisma in 2020 and saw success immediately. Ricardo's interest in Prisma quickly caught on with his team (who implemented Prisma in production) and with others at Grover as well, resulting in an ever-increasing organic adoption of Prisma for new projects.

"Prisma has a low learning curve. Productivity becomes higher because it gets combined with end-to-end type-safety using TypeScript."

This freedom to bring innovative technologies onboard and be allowed to try out various languages and libraries ensures that Grover can meet customers' demands and increase its time to market.

Success With Prisma

Prisma offers three core products that help developers move quickly and code safely.

  • Prisma Client - a type-safe database access client for TypeScript and Node.

    Prisma Client gives Grover confidence in their database access by providing type safety when making queries.

  • Prisma Migrate - a tool for seamless database migrations

    Database introspection and migrations are smooth and simple for Grover using Prisma Migrate, especially when they need to change the database structure in production

  • Prisma Studio - a modern database GUI for the browser and the desktop

    Grover's developers benefit from a rich user interface for their databases allowing them to view and edit data easily.

For Ricardo, all three of Prisma's core products have come together to provide an exceptional developer experience and time savings when writing code.

"Prisma provides a more standardized way to access databases, carry out migrations, and view data, all out of the box. Prisma provides single and standardised way to build queries, where we're sure not to face issues with grouping data, worry about joins or glue different libraries together."

With Prisma, developers get a type-safe database access client out-of-the-box.

Database models are written with the Prisma Schema Language and TypeScript types are generated from it automatically.

Databases modeled with Prisma are simple to read and write.

datasource db {
url = env("DATABASE_URL")
provider = "postgresql"
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String @db.VarChar(255)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}

With a single command, the Prisma model provides a type-safe database access client.

npx prisma generate
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function getPosts() {
return await prisma.post.findMany({
include: {
author: true,
},
})
}

Prisma is Catching on at Grover in Many Different Stacks

Grover's encouragement of experimentation means that the various teams at the company have different stacks. For most, it's a mix of TypeScript and GraphQL in some fashion, but the details vary.

Since Ricardo started using Prisma at Grover, he's been hosting learning sessions with other teams, where developers can see the benefits of type safety that Prisma offers, along with comprehensive tooling to make working with databases easier.

The magic usually happens when Grover's developers see Prisma's products in action.

Features such as database introspection give a powerful glimpse into Prisma's capabilities. With introspection, developers can start with an existing database and derive a Prisma model from it with a single command. This saves developers many hours they would otherwise need to spend recreating a model. Instead, they can be productive immediately.

Prisma Migrate offers another powerful glimpse. With Migrate, a few commands will modify the database to align with the state of the Prisma model. Migrate can be triggered along a CI/CD pipeline to have the migrations take effect in production easily.

Since Prisma is useful anywhere you can install a node module, it fits in perfectly with the various stacks in use at Grover.

Grover has 14 different services using various tech stacksGrover has 14 different services using various tech stacks

Conclusion

While some teams are still holding out, Ricardo foresees Prisma adoption increasing in the near furture.

"I would be very interested in seeing other teams migrate to use Prisma, since I can only see benefits in using it."

Prisma has made Ricardo, his team, and many other teams at Grover much more productive when working with databases.

To find out more about how Prisma can help your teams boost productivity, join the Prisma Slack community.

Join the discussion

Follow @prisma on Twitter

Don’t miss the next post!

Sign up for the Prisma newsletter