With the rise of the Internet economy, the release cycle for Internet products has become a major issue. What was once month or week-long cycles, is now days or hours.
It’s an ever changing market where customers shape products with their reviews and suggestions. The proliferation of the agile mindset means product teams need to be able to use tools and techniques to push changes to their systems in a near immediate time frame, while maintaining the quality.
This phenomenon is defined by some people as “painting a car while you drive 200 MPH in the wrong lane.” That’s the kind of pressure today’s Internet companies are working with but luckily the way systems are built and operated has also evolved.
Agile methodologies were key in unlocking a team’s performance to be able to cope with this changing environment, as opposed to the old fashioned waterfall methodologies which were more suited to static requirement.
When it comes to systems operations (which is now known as “DevOps”), a lot of new topics have appeared in the last few years, like cloud computing (I still remember when it was new), CI, CD, Blue Green / Canary deployment, Docker, Kubernetes and the list goes on.
All those tend to empower the developer, reducing the time and differences from the developer’s box to production, removing all the inefficiencies the old ways of operating created by siloing responsibilities and not having endto-end ownership of the service.
Nowadays most efficient teams follow the “you build it, you run it” moto where developers own the full stack and operate it as a system instead of just writing code, reducing development cycles and consolidating ownership of the operations with the knowledge of the creators.
Here at Travelperk, we started with a simple CI (continuous integration) pipeline, deploying to a magical hosting platform with a manual process deploy.
That was simple and worked, but the problems that come with it force you to release less often, making more stressful releases as they include more changes. When something goes wrong, it’s harder to know what it is (“it works on my machine!”) and then during the CI phase (when you put it all together and test if it’s going to work or not) there aren’t as many things you can test: like lack of proper browser testing or versions of the database for composing different systems, allowing you to have an environment that is as close as possible to production.
We moved our CI to Code ship; it allows several containers to run parallel, taking less time and allows mimicking production by utilizing a hosted CI process – i.e. you pay somebody else to make sure your building process works, so you can concentrate on building your product.
Our production environment was moved to AWS where you have plenty of rock solid, internet scale services available to deploy your infrastructure – requiring higher domain knowledge (like some proficiency in EC2, RDS, etc.), but giving you more control and information about your systems.
Also we moved to continuous deployment, meaning every time a developer creates a pull request, and after one gets approved by another developer, this code is built, tested and deployed without any human intervention. This may sound scary at the beginning, but it forces you to put the proper measures in place: proper testing, good metrics, automatic deployment and rollback mechanisms – and the best of all, it can be in front of customers in just a fraction of the time.
Last but not least, we moved to the end-to-end ownership model. Teams called “squads” (we share the Spotify model) own the full lifecycle of a set of services. This means that they’re responsible for keeping the lights on, evolving the product and making sure everything works as expected.
All of this together, paired with the fact that we have an amazing group of professionals, made us capable of creating a multi-vertical, world-class Business Online Travel Agency, evolving it and operating it with a team of 20 engineers.
About the Author
Dave Garcia, VP of Engineering at TravelPerk. He has resourceful experience of 11 years in creating solid and creative startup companies with small but versatile teams and with a very strong culture. Prior to TravelPerk he has been a Tribe Engineering Lead at Skyscanner and a CTO of a Fintech company that brought the real paperless instant credit to Spain, that is combining A.I., Big Data, Mathematical models and the best Trends and Challenges.