We have been deploying applications on Kubernetes for over two years. We mostly followed a lift-and-shift approach while migrating to Kubernetes. We looked for everything that Ansible used to do for us and tried to replicate it in Kubernetes. At first, everything seemed to work. But over time we realized that a simple lift-and-shift approach can complicate things over time and perhaps adopting a more Kubernetes native approach from the beginning can be better to avoid rework later. …

Every company today most likely has vendors in their technology landscape. There are ways and parameters that technology teams use to assess risk while selecting vendors. In this post, I am going to talk about one such risk to consider while selecting a (software or SaaS) vendor — the product strategy and roadmap.

Why is the product strategy important?

It’s important that the vendors you are evaluating satisfy your requirements. Their current features should meet all your current business requirements. And while you are at it, perhaps also consider that the current features product can also satisfy your short term to mid term requirements. …

Very well said. I have felt the same way when I had been subjected through a similar interview process.

At my current employer (Grofers), we try to keep interview as realistic as possible:

* scenario based questions

* building a real-world software or a small component

* explicit call out on architecture, design, code quality, documentation than algorithms

* we typically do take home assignments. that gives the candidate the time to do things in their comfortable environment instead of being pressured. And yes, using Google and Stackoverflow is absolutely fine because we do that all the time

* After…

Design by Asif Jamal

Almost two years back, we took the decision to leave behind our Ansible based configuration management setup for deploying applications on EC2 and move towards containerisation and orchestration of applications using Kubernetes. We have migrated most of our infrastructure to Kubernetes. It was a big undertaking and had its own challenges — from technical challenges of running a hybrid infrastructure until most of the migration is done to training the entire team on a completely new paradigm of operations to name a few.

In this post, we would like to reflect on our experience and share our learning from this…

Image credit: Rooadmunk.com

There are more than a dozen OKR templates and tracking tools out there. We started adopting OKRs at Grofers a couple of years back and went through our cycles of adopting the methodology. While adopting a new way of working, having the right tool can accelerate the transformation.

We explored a lot of different tools and ended up settling with 15five. We liked it’s simplicity, features that pushed the behaviour around using OKRs for goal setting, along with some additional features for employee engagement and performance management. …

Even though we all agree about the importance of good documentation, there seems to be a widespread failure on our part to act on this belief and pay attention to how we document our software. Why does this happen?

I have often seen documentation not being the focus of teams. Somehow, teams don’t get around to realizing that documentation is as much a part of their work as producing software and hence should be a part of their definition of done.

Developers should not be the only ones who take the blame here. Their managers and leaders don’t think of…

I was working on a small project recently to learn working with the Docker tool chain and get an idea about how things work. I decided to build (yet another) open-source Docker image of etcd and publish it on Docker Hub. Like all open-source projects, building a working Docker image was pretty straight forward and didn’t really take much time. What took more time was the process to publish it nicely that someone can find it useful. And in that process, I learned a few things about working with Docker, Docker Hub and Travis and have a few questions unanswered…

On November 25 at 4:30 AM, our consumer apps stopped working because of some issue with our backend API. This article is a postmortem of what happened that night.

Some Background

Our product search and navigation is served from Elasticsearch. We create daily index of products, related merchant data and locality data in one index but under different mappings. This index is built on a daily basis and then the latest index is switched with an existing one under a fixed alias. This works well.

Most of our requests are geolocation dependent, which is the reason why we are so heavily dependent…

Vagrant is an amazing tool for developing throw-away dev environment that closely resembles production. It greatly reduces turn around times and effort on setting up your development environment. It gives you the flexibility to experiment around, play with new experimental stuff and if you mess it up, then you can easily destroy and quickly re-create another one.

You may find a ton of projects on Github that make use of Vagrant for development. However, they use Vagrant for development of the project alone. That may work fine with one off projects or open-source projects. In a real world scenario where…

Dated: May 31, 2015

As someone working with the web stack and languages like Python or Ruby, there are high chances that you have heard of Non Blocking I/O. You might as well be using it with some of your projects or have tried your hands with libraries like Gevent or Tornado. But how do these libraries make network requests non blocking. This is something that I had always wondered when I tried Gevent. I just couldn’t get my head around the fact that when you send something to a socket or receive from it, it will block execution for…

Vaidik Kapoor

Software Engineer, Building Tech at Grofers

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store