Yes; I just finished my tenth year in Click Travel, working in the product and technology department. During this time I have been junior, middle level, senior, teacher, team leader, manager and hopefully even more roles as my career unfolds before me. You see, the great feature of Click Travel is that it never stands still. In all these ten years, no two have been alike. Things are constantly being adjusted as we adapt and strive for what we can do given what we have. It sounds like a headache and I would be lying if I said that sometimes it felt like my poor head was about to explode! But I certainly wouldn’t have the position I have now if everything was boring or not working. So let me take a short tour of my years, and hopefully you will see for yourself why I am still proud to be a member of this company and department.
In the beginning
I joined in June 2011, did not even graduate from university, with a degree in computer science on the way and a desire to do everything in computer science. How naive I really was! Now I understand that doing everything is not something someone wants to do. In your head just too much! However, I worked well in my time here. I think it has to do with the pleasure of being part of a smaller company that was nothing more than a startup when I joined; progress in your Dev-Ops and Cloud path. I was one of about 47 other employees, and now we have about 150. I’m also sure that every year we’ve received at least one award for excellence in something. So, as you can imagine, the growth has never stopped, and this is no more true than with our software. I think to focus on the path, I will divide technological change into three different eras: the legacy era, the new platform era and the serverless era.
The era of heritage
When I first joined, MVC and session-based web apps were in vogue. Our software was based on Apple technology called WebObjects, backed by an entire community. It was based on Java, but like many Java structures, it distracted most of the underlying language. It had a method for everything you wanted to do, and came complete with ‘The Enterprise Objects Framework’ or EOF, which allowed you to develop a database in the style of object graphs. The concept was that your Java objects are linked directly to rows in the database. At one point this was very advanced, and I can’t argue that having objects with behaviors that also represent exactly what you store has helped keep domain logic close to all important data. With most of the old technology, unfortunately, it’s not surprisingly scalable, and any changes to major facilities have been very painful to introduce.
We have already used AWS for most of this stack with very large instances of EC2 for application content and sessions and RDS for 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 a very rewarding job at the time, as the team was small and the profits seemed big. During the week we held flexible-style meetings such as booths and planning sessions, and I felt it was the first time I had become part of a strong business team. When you start adding value to production software and hear other departments talk about it, you feel special, and I knew this “engineering thing” was for me. Although the quality of the code was high and the development cycles were quite short, it was clear that the technological world was moving forward, and if we did not introduce new practices, we would be left behind. So I was lucky enough to be a member of a new “platform team” that set out to develop a green field project that would bring new practices such as CI, automated testing, REST, event-driven architecture, and code-based infrastructure.
The era of the new platform
At this point, I was a professional engineer for several years and I was deviating from the role of “junior”. This next stage of my career really contributed to my growth when I was introduced to the very frontiers of new technology. This is because we have begun to explore modern techniques and best practices of the modern technology industry. I started reading about continuous integration and re-assembly, as well as how this is reflected in the developer pipeline. We have reviewed modern architectures and ways to model our software to make it easy to maintain while extending it to future iterations. We read about how engineers could get the fastest feedback from the changes they made, and how we could split our huge software into parts that allowed 1,000 fixes a day and 10 releases without drops. All of this and more was poured into the foundation of the New Platform, and I sat in the front seat watching my senior colleagues masterfully develop guidelines for the platform, many of which are still the basis for our project work.
The end result was the beginning of a new era for Click Travel, when our software was written in DDD style, with a hexagonal architecture, REST interfaces and a separate web client. We combined this with many events that prompted internal action. All of this was developed using the most suitable AWS products at the time, and was created and released using a CI server. We have stepped right into the modern era and started migrating parts of our monolith to new microservices, trying to put functionality on top of this platform.
I will always believe that I am lucky to be a part of this process. The technology was completely different from what we had before, and we had to be aware that customers were satisfied while we all moved on to something new. For a number of well-run years we have done this; and in late 2019, we shut down all old software and infrastructure. We have completely moved our product to this new platform and satisfied our customers in the process. This may be the greatest achievement of the band in my career !? This does not mean that I was by no means the only or main orchestrator, I just played my part and tried as hard as I could to make everything go as smoothly as possible!
An era without servers
Now there was no clear exchange between the era of the “new platform” and the era of “serverless”. Around 2016, we started moving some of our new microservices to AWS lambda with an API gateway, which took on the hard work for our REST interfaces. We made sure it suited us, starting small and repeating how we made these paradigm shifts. It turns out that although there was enough training to deal with the new NodeJS language and how all the projects stuck together, the overall approach fit very well with our microservices platform. In fact, we found that it simplified many aspects of software, both operational and inside code. If you view one REST endpoint as a feature that is very accessible, executed on request, responds, and doesn’t work again, it actually makes thinking about things much easier. Of course, not all the complexity is removed, everything that could not be calculated in 5 minutes or less was unusable, but if you wait 5 minutes for an answer, you still need a better design!
When your software is deployed and run in a serverless way, surrounded by engineers developing Lambda’s, you begin to really understand the AWS constructor template that, in my opinion, underlies the success of the serverless model. This template allows you to directly map projects to AWS products, sometimes without the need for special code, just the infrastructure that connects the two products together. For example, you may have a part of the application that creates a file in the S3 bucket, and then you have to run a step function from the back of the AWS putObject event to further process it. Previously, you probably would have had special software to control this action, but now it’s as simple as a few lines in a cloudformation template. This is the true power of the “serverless era” that connects the cloud to your goals in the easiest way.
So the Click Travel platform is now mostly built using these server-free principles, and we have about 1,000 lambda features that perform their specific tasks in harmony with the rest of the cloud. Every week this number increases!
What does the future hold?
It’s hard to sum up ten years of my life in a blog that doesn’t send someone to sleep. Truth be told, I learned more than I ever thought possible, but the main thing is that technology never stands still. So if you want to be successful, both in the software of both the company and as the engineer who creates it; you have to make sure you are not left behind. So what does the future hold for me and Click Travel? Well, recently we had some interesting news that Click Travel is joining TravelPerk. We hope that this will lead to many more interesting experiences and opportunities. So if it’s about as interesting as the last ten years, I will probably still be here enjoying the trip!
Senior Software Engineer