Category : Deployment

Our Git Workflow

As happy git users, we love learning how other people use our favorite version control system. So, we thought we’d add to the discussion and share how we use git and other tools to drive our engineering work. We’ve been improving our git workflow for a few years, and our current solution is optimized around:

  • Easing work parallelization
  • Communicating who’s working on what
  • Allowing us to prioritize tasks
  • Allowing external stakeholders to view task progress
  • Preventing us from deploying un-QA’d code
  • Creating a clear path for engineers to take their tasks through the pipeline of development, testing, QA, all the way to production without blocking on work from others

We’ve been pretty satisfied with our setup – check it out, and let us know what you think!

Read More

Support Engineer: Experiments & Learnings

Each year Panorama Education helps thousands of teachers, principals and school administrators across the country to gather feedback from their stakeholders in a several different ways. Our relatively small engineering team (we just hired our 10th engineer!) strives hard to make sure that it is not only a great experience for millions of students who take our surveys but also a delight for schools and districts to gather and analyze feedback. With ever-increasing engineering needs, teams in a growing startup like ours often have to balance product development with operational and support-related tasks. And one of the ways we address this at Panorama is by a weekly support engineer rotation process.

Read More

A way to change a foreign key reference with zero downtime

In a project we recently completed, we had to refactor an object so that one of its foreign key associations referred to a new model. We use Ruby/Rails and deploy code to Heroku with Preboot enabled. Implementing this change safely without any downtime was surprisingly tricky to get right (in fact we didn’t at first, and ended up with a brief outage in a part of our product, although fortunately no data was lost). Pedro Belo’s post on hot compatibility lists some patterns to make basic data migrations zero-downtime deployment safe. As Belo mentions at the end of his post, hot compatibility needs to be addressed at the application level, and often takes a lot of planning and work. This article describes a reusable pattern to safely make a change to a foreign key reference with no downtime.

Read More