Yes; I have just completed my tenth year at Click Travel working in the Product and Engineering department. In that time I have been a junior, a mid level, a senior, a mentor, a team leader, a manager and hopefully even more roles as my career unfolds in front of me. You see the great thing about Click Travel is it never stands still. In all those ten years no two years have been alike. Things are constantly being tweaked as we adapt and strive for as good as we can do, given what we have. It sounds like a headache and I would be lying if I said that at times it felt like my poor head was about to explode! But I certainly would not have had the tenure I currently have if things were boring or didn’t work. So let me take you through a quick tour of my years and hopefully you can see for yourself why I’m still proud to be a member of this company and department.
In the very beginning
I joined in the June of 2011, not even graduated from university, with a computing science degree on the way and aspirations of doing all the things in computing. How naive I truly was! I now understand that doing all the things is not what anyone wants to do. There is just too much to fit in your head! That said, I have given it a good go in my time here. I think this is due to having the pleasure of being part of a smaller company that wasn’t much more than a startup when I joined; progress on its Dev-Ops and Cloud journey. I was one of about 47 other staff members and now we have around 150. I’m also pretty sure that with each passing year we have won at least one award for excellence in something. So as you may imagine the growth has never stopped and that is no truer than with our software. I think to keep the journey focused I will split the technology changes up into three distinct eras: the legacy era, the new platform era and the serverless era.
The Legacy Era
When I first joined, MVC and session based web apps were all the rage. Our software was based on Apple technology named WebObjects that had quite a community behind it. It was based on Java but like so many Java frameworks, it abstracted away much of the core language. It had a method for everything you wanted to do and came bundled with ‘The Enterprise Objects Framework’ or EOF that enabled object graph style database development. The concept was that your java objects related directly to rows in the database. At one point this was very cutting edge and I cannot argue that having objects with behaviour which also represent exactly what you are persisting, helped keep the domain logic close to all important data. With most old tech sadly it didn’t scale amazingly and any changes to core entities were very painful to roll out.
We were already using AWS for most of this stack, with very large EC2 instances to hold the application and the sessions and RDS for the backend databases. Even then we relied heavily on AWS cloud products to drive innovation using S3, SimpleDB, elasticache and SES as the feature set in our monolith grew and grew.
It was very rewarding work at this time, as the team was small and gains seemed big. We would have agile style meetings like standups and planning sessions throughout the week and I felt like I was part of a strong business team for the first time. When you start adding value to production software and you hear other departments talking about it, it makes you feel very special and I knew this ‘engineering thing’ was for me. Even though the quality of the code was high and the development cycles were fairly short, it was clear that the technology world was moving on and if we did not adopt newer practices, we would be left behind. So I was lucky enough to become a member of a new ‘Platform team’ that set about designing a green field project that would bring in newer practises like CI, automated testing, REST, event driven architecture and infrastructure as code.
The New Platform Era
I’d been a professional engineer for a handful of years at this point and I was pushing out of the ‘Junior’ role. This next stage of my career really aided my growth as I was thrust into the very edges of new technology. This is because we started investigating the current techniques and best practices of the modern technology industry. I started reading about continuous integration and repeatable builds and how it mapped into a dev-ops pipeline. We looked at modern architectures and ways that we could model our software so that it was easy to maintain while being extensible for future iterations. We read about how engineers could get the fastest feedback from the changes they were making and how we could carve up our huge software into portions that enabled 1000’s of commits a day and 10’s of releases without falling over. All this and much more was poured into the very foundations of the ‘New Platform’ and I had a front seat watching my senior peers masterfully carve out the guidelines for the platform, many of which are still the basis for our project work today.
The end result was the beginning of a new era for Click Travel where our software was written using a DDD style, with a hexagonal architecture, REST interfaces and a separate web client. We coupled this with a sprinkling of events that drove internal actions. All this was developed using best suited AWS products at the time and built and released using a CI server. We had stepped right into the modern age and we began migrating portions of our monolith over to new microservices in an attempt to lay functionality on top of this platform.
I will always think myself lucky to have been a part of this process. The technology stack was totally different to what we had before and we had to be on top of keeping customers happy while we all moved to something new. Over a number of well managed years we did it; and in late 2019 we switched off all the legacy software and infrastructure. We had completely shifted our product over to this new platform and kept our customers happy in the process. It could well be the biggest group achievement of my career!? That’s not to say I was by any means the sole or main orchestrator, I just played my part and tried as hard as I could to make it all run as smoothly as possible!
The Serverless Era
Now there wasn’t really a straight swap between the ‘New Platform’ era and the ‘Serverless’ era. We had started moving a few of our newer microservices to AWS lambda with API gateway picking up the heavy lifting for our REST interfaces in about 2016. We made sure this was right for us by starting small and iterating on how we went about this change in paradigm. It turns out that although there was a fair amount of learning up front, to tackle the new NodeJS language and how all the projects held together, the overall approach matched our microservice platform very well. Actually we found that it simplified many of the facets of the software, both operational and within the code. If you consider a single REST endpoint as a function that is highly available, executes when requested, responds and goes idle again, it actually makes reasoning about things much easier. Of course not all complexity is removed, anything that couldn’t be computed in 5 mins or less was unsuitable, but if you’re waiting 5 mins for a response you need a better design anyway!
When your software is being deployed and run in a serverless way, surrounded by engineers designing for Lambda’s, you start to really understand the AWS builder pattern that I think underpins the success of the severless model. This pattern allows you to directly map designs to AWS products, sometimes without the need of any bespoke code, just infrastructure coupling two products together. For example you could have a portion of an application that creates a file in an S3 bucket and then have a step function start off the back of a AWS putObject event to further process it. In the past you probably would have had a piece of bespoke software manage that action but now it’s as simple as a few lines in a cloudformation template. This is the true power of the ‘serverless age’, knitting the cloud together for your purposes in the simplest way.
In summary Click Travel’s platform is now mostly built using these serverless principles and we have close to 1000 lambda functions all doing their specific tasks in harmony with the rest of the cloud. With that number increasing week by week!
What does the future hold?
It’s hard to summarise ten years of your life into a blog that doesn’t send someone to sleep. In truth I have learnt more than I ever thought possible but my main take home is that technology never stands still. So if you want to be successful, both in software as a company and as an engineer creating it; you have to make sure you don’t get left behind. So what does the future hold for myself and Click Travel? Well very recently we have had some exciting news that Click Travel are joining up with TravelPerk. This will hopefully lead to many more exciting experiences and opportunities. So if it’s anywhere near as interesting as the last ten years, I’ll probably still be here enjoying the ride!
Senior Software Engineer