About three years ago, the Hootsuite Engineering team began a transition from a monolithic application to a services oriented architecture. While the journey is ongoing, we have come a long way from learning how to build services at all to efficiently delivering new customer value on top of a constellation of services.

This post shares what our journey has looked like, what we’ve learned along the way, and how key metrics have been impacted.

To gauge our progress we have tracked a number of relevant metrics:

  • Production lines of code in monolith vs SOA
  • Services in production
  • Team size
  • Reliability
As the data shows, there have been three distinct phases in our transition to SOA. This post goes into detail on each phase.

Read More …

A codebase with many active contributors grows and evolves like an organism. File systems that store code are shaped like trees, and all of the changes that happen over time are akin to organic growth and decay.

On the sixth anniversary of the Hootsuite’s codebase, Specialist Engineer Bill Monkman spent a weekend building a beautiful visual artifact that conveys those organic qualities and much more. Using Gource, Andrew Caudwell’s amazing code repository visualization tool, Bill has given us a macroscopic, time-lapsed view of every change, big or small, that has gone into making our product what it is today.

For those of us who have been fortunate enough to be a part of the team that builds Hootsuite products, being able to see our codebase grow up from its humble beginnings is a moving experience. Now with over 10m users, Hootsuite engineers get to work under the hood of a codebase that runs on hundreds of Amazon instances, and processes millions of social messages every day.

Read More …

We have been using statsd and Graphite at HootSuite to get visibility into the frequency of events within our technology stack for over a year now. And to great effect.

In real time we are able to see the health of the HootSuite dashboard, supporting services, the myriad APIs our product uses and get to better understand things like our payments systems. Visibility has reduced downtime, made us more responsive to performance problems and generally forced us to confront more technical debt than we otherwise might have. Read More …