1

A Day in Release Engineering at Grofers

 3 years ago
source link: https://lambda.grofers.com/a-day-in-release-engineering-at-grofers-36aa22b1f5e1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

A Day in Release Engineering at Grofers

Release engineering is all about improving dev and feedback along the release pipeline. Source: https://docs.microsoft.com/en-us/azure/devops/learn/what-is-continuous-delivery

This post touches up facets of what release engineering is at Grofers and what the life of an engineer on this team looks like. After reading this, one should get an idea about why it is important to us, what is an engineer supposed to do to support the team and for the excited engineers, it should help to determine whether release engineering at Grofers is something that they should be interested in.

Why release engineering?

Learning from the experiments is very important for a team that is building consumer product like us. For that to happen, we need to continuously deliver experiments as fast as possible. This means that any initiatives that we undertake in order to optimize our releases while supporting the team from the background has a direct impact on how happy we can make our customers.

While we focus on release engineering, there is a great deal of improvements that we can drive in the way that several engineering teams at Grofers work. This involves practices around quick and easy development setup, testing, effective code reviews, deployment and even post-deployment health monitoring. And while we push that, it’s natural that we become better at those practices along with the team and continuously be at par with the industry’s best standards.

A day in release engineering

While the preceding description should be indicative of what impact a release engineer makes at Grofers from a higher level, what does a release engineer actually do on a day to day basis?

Test Tooling & Continuous Integration

Currently, a major bottleneck in a release is testing the changes that have been done in a sprint. Much of the testing is done manually because either there are no automated tests in systems being changed or if there are tests in a system then there is not enough confidence about releasing it because the systems integrate with each other in complex ways and some integrated testing is required at the end of each sprint.

We’ve been trying to attack this problem by bringing in tools that help us test our micro-services in isolation. One of the most important things for us while testing our micro-services is that any change in a micro-service shouldn’t break other services which consume the APIs provided by this micro-service. We explored consumer driven testing in which the consumers of an API define their requirements and the provider of the API must conform to it at all times. We found a tool called Pact which simplifies setting up consumer driven testing across projects. While these tests help us achieve enough checks to verify integration between services, we continue to automate some of our E2E tests which guarantee that the changes work in an integrated environment.

This is where the release engineering team at Grofers plays an important role. We act as the builders of test tooling involving different tools and frameworks, work on its adoption across teams by making it easy to use and collaborate with the teams for them to understand it. Not only do we build the test tooling, but we also act as purveyors of good testing practices in general for the rest of the teams.

Infrastructure

We talked about test tooling specifically involving testing frameworks like pact and others. Testing conversations can’t be ended however without talking about testing infrastructure. The CI environments like Jenkins, test dependencies like scrubbed databases, and tools to deploy on various testing environments are basic tools that any dev team needs to develop fast.

Even before testing, however, the devs might have the need to quickly test their changes even before committing. With a complex architecture, it becomes an excruciating task to integrate different services together just for testing out small changes in a single service. One of the responsibilities of a release engineering team is to learn about this process and make it easier through infrastructure tooling.

Agile product development

All of the technical initiatives that release engineering team undertakes are towards one goal: the speed at which value is delivered to the customers. This is the overarching DevOps goal for the organization and release engineering is one important aspect of it. Our work directly impacts the performance of the product dev teams and shows up in business outcomes.

The bare essentials to be a Release Engineer at Grofers

Software Engineer First

The work that a release engineer does facilitates fast delivery of software that we build for our customers. As previously mentioned, we find bottlenecks in the software engineering process which may be at any level, it could be design and development, testing, deployment, or post deployment. To be able to figure out these bottlenecks and provide effective solutions that scale across the team and over time, we need to understand software as well as the engineers who build it. The release engineering team comprises of engineers who have previously worked in one or more of these software systems and hold the understanding of software stack at all levels. This proves valuable as it helps us understand the problems from a developer’s perspective and also build solutions that can be effectively used by developers at Grofers.

Even if the knowledge of the existing systems is removed from the equation, this team has exposure to building software at various levels in the stack and with different languages like Python, Java, Golang and Javascript, and experience of having operated infrastructure of various complexity and scale. That’s the kind of engineers who would be well suited to work on the goals of this team.

Compulsive knack for solving problems

While we have been spending a lot of time in making automated testing a norm, we believe that other bottlenecks in the release process can be found anywhere in the workflow. The bottlenecks could be manual processes during the development, testing and deployment of features or unplanned work that happens due to defects arising in production. It takes a keen eye to spot those problems and resolve to solve them to be able to bring the team out of those hurdles.

If you’re an engineer who has the bare essentials and can visualize yourself fitting in the above story, please reach out to us.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK