Deploy Tracking is Here
Skylight’s new deploy tracking feature allows you to zero in on performance improvements or regressions caused by a deployment. Now, each of your deployments will be marked on the Response Timeline, allowing you to answer the following questions:
Did this deployment make my app any faster?
Use the Time Explorer to zero in on responses just before and just after your deployment, noting differences in your app’s Problem and Typical response times. Click on endpoints you changed in the deploy to see differences in endpoint response times or the aggregated Event Sequence.
Which changes caused this new slowdown in my app?
Spot app slowdowns in the endpoints page response timeline and correlate them with specific deploys. If your app is linked to GitHub, click the git sha to be taken to the commit associated with that deploy.
With deploy tracking configured, each of your deployments will be marked on the Response Timeline. Hover over the deploy icon to see information about that deploy. Depending on your configuration, you will see the deploy id, the git sha of the commit you deployed, and a deploy description.
Multiple deploys in a short timespan will be combined into one icon, with the deploy count indicated next to the icon. You can click on the deploy info popover to see a modal with deploy info for all deploys in that timespan. As you zoom in, these collapsed deploys will expand.
Behind the Scenes
The deploy rockets are rendered with d3. One challenge was ensuring that rendering the deploy markers (using information from our Rails app) doesn't block the rendering of the latency data (from our Java collector) while still synchronizing the animation of the two. We ended up with a three-step render process. Here's what happens behind the scenes when we render new deploy markers in the gif below:
- Pre-render from the Ember Data Store: Get all of the cached deploys that match the previous and the new timeframes and pre-render the new deploy markers using the previous scale.
- Transition the cached deploys: Update all of the deploy markers from above with the new scale, using d3 transitions to animate them in place. This is the part that is synced with the latency graph animations.
- Update the cache and render anything new: Make an AJAX request to the Rails app to get the deploy information matching the new timeframe. Fade in any new markers after all of the transitions are complete. (If not, the markers update mid-transition and the animations get un-synced from the latency graph's transitions.)
Linking Your Deploys to GitHub (optional)
Linking your app to GitHub allows us to provide additional context to your deploys in the Skylight UI, such as the commit message from GitHub and a link to the relevant commit. While we don't require linking to GitHub to configure deploy tracking, we do recommend doing so to get the full benefit of the feature.
The challenge of linking deploys to GitHub commits is that just because a deploy has a git sha assigned to it does not mean that the sha is guaranteed to be on GitHub. Thus, we can't just automagically link you to your GitHub commit; it might be a 404. Instead, we need to check that the commit exists on GitHub before generating the link.
While we're at it, we grab the first line of the commit message. For Heroku users, we use the commit message for deploys that come from Heroku with the description
Deploy <gitsha> (what Heroku titles deploys triggered by a code push). If you have manually configured deploy tracking and leave the deploy description blank, we will show the GitHub commit message.
In order to link your deploy information to GitHub, we need the following things to be true:
- The app owner needs to link the app to a GitHub repo.
- The current user needs to be a member of the GitHub repo's organization.
- The current user needs to connect and sync their Skylight account to GitHub.
- Your deploys need to have git shas assigned to them (either automatically or through manual configuration.
A Long Time in the Making
Longtime Skylight users might know that deploy tracking is a feature we’ve been wanting to provide for a while. Due to the small size of our team, we had to prioritize other features, and deploy tracking moved to the back burner. It’s great to see this feature finally come to fruition. Deploy tracking will help you navigate your performance issues even more easily, in line with Skylight’s goal of providing Answers, Not Data.