Time to meet Claudio, who has been with Aptoide since the very first day - even when Aptoide wasn't Aptoide yet -, and is the man behind all the innovative web technology we're deploying. See how Claudio dealt with the technical challenges of a company that has grown from a side project to a platform with 120 million users in such a short amount of time, and how he is leading the Aptoide web team into the future.
1. In a nutshell, who are you and what do you do?
I'm Aptoide's Head Web Developer, and currently, I lead a team of 8 web developers and I am responsible for a lot of the programming and decision making on how things work under the hood in the servers (Databases, Web Services, Sites, etc).
2. Tell us about your Aptoide journey.
Over the years, I had the rare opportunity to see a project going from pretty much a side project to this huge ecosystem we see today, and met all sorts of people that joined and left Aptoide over the years. I ended up learning a lot from my own experience but also from working with those people.
It all started a few years ago, even before Aptoide became a company when Aptoide was nothing more than a side project from Caixa Mágica Software, and the application was still in its first version (V1).
Back in the day the site wasn't even www.aptoide.com, it was bazaar.aptoide.org, and it went through another domain change (www.bazaarandroid.com) before we settled with what you see today, and it was hosted in a single Pentium III desktop working as a server in a corner somewhere.
I wasn't the one who developed the site, it was a group of three developers back then that made a fork from another site that Caixa Mágica Software had.
When I started, the first thing I did was the very first version of the mobile version of the website (what is today m.aptoide.com), and I did all the design and the code and did it while I was a trainee in Caixa Mágica Software.
Given that I had never programmed in PHP before (the language we use) and my design skill was lacking in every department, you can easily imagine how ugly it was, in both ends.
After that, I developed my very first Web Service, one to upload applications to Aptoide, which is the same web service still used nowadays by applications such as Aptoide Backup Apps and Aptoide Uploader.
From there, the developers who were originally leading the project left either the company or the project itself one by one and I ended up supporting it alone for some months.
Back then I was responsible for developing a lot of the web services, site features, search, custom store layouts and overall architecture some of which is still being used nowadays.
Fast forward a couple of years and Aptoide as a company is born. I became its first employee and by then our architecture was far from being a single server - it was at least more than a dozen. And then I was given a small team to manage (2 developers) and things weren't as simple as before.
At this point, I had already learned a lot, but I still had a lot to learn, especially when it came to service scalability, and thus many mistakes were made back then that were only finally properly solved a few years later.
Over the years, with new developers joining in, as well as the establishment of a design team, system administrators and other teams specialized in what until then was part of my work, I started to focus mostly on the core of the Aptoide server application layer.
And what this means essentially is that over the years I started to redesign everything from the ground up from data models to web services and that was when I first created our own in-house PHP SDK, which has been our main secret ingredient for the huge performance and quality boost from Aptoide V5 to V6 and later.
Nowadays, I'm mostly focused on managing the team that has become bigger, this SDK of ours and the creation of new features with it as well as the refactoring and migration of the current ones - of course, having the help of the rest of the teams has been essential to speed up this process.
3. Would you imagine Aptoide to get to where it is today when you first joined back in 2011?
Not at all.
One time, before the company itself, was created, the founder and CEO Paulo Trezentos arranged a meeting with those involved in the project and one of the things he said back then was: "One day this is what is going to pay our salaries." ...and I didn't really believe him. :)
Regardless, I did my very best (along with the rest of the team) to make it work since it was, and still is, such a powerful concept nonetheless, and if it failed it wouldn't certainly be due to lack of trying. Furthermore, I also used Aptoide early on, since despite its early shortcomings, it was still the better app store for me and the one I trusted the most (and still is of course).
I only started to believe we were onto something once we started to grow faster than we were able to patch things up and create new features, but even then I didn't imagine it reaching this scale at all. Looking back at it all it's truly amazing how it went from a single slow Pentium III machine with everything in it to the hundreds of servers and different data centers we have today, and Paulo saw it a mile away.
4. What is the most challenging part about your job at Aptoide?
Would this be asked years ago, I would certainly say: convincing the CEO that we needed to change our architecture from repository to service based during the development of Aptoide V6. :)
After some time nagging him about this (with the help of the head Android developer back then), he eventually gave in and it certainly paid off, big time. He was highly skeptical of this kind of architecture back then, especially since if not done correctly it would require a lot more servers and time to maintain than what we already had, to not mention that it would require a complete refactor of the code, but fortunately it worked well as is been the used architecture we have been using in order to scale.
That is to say that the biggest challenge over the years was scalability, which caused the service to be sporadically slow or have hard limits in the past.
Having that said, the fact that there isn't really anything out there that poses the same kind of challenges as we get here forces us to be quite creative, constantly.
Nowadays, however, although the scalability is still a challenge in some areas (which are being worked on), the biggest one right now is the huge amount of things that need to be done and the lack of manpower to do them all, as there's enough work for at least an entire year non-stop.
5. What kind of exciting and innovative things is Aptoide doing in terms of web technology? In order to solve all the problems of scalability and performance, we have been developing and using an internal PHP SDK which is focused mostly in easily create both CLI and API applications in the servers, and specialized in handling PostgreSQL and Redis servers.
So with this SDK we have things such as:
- API endpoints which are able to generate their own usage documentation automatically and reliably (if anything changes, the documentation changes with it) - CLI applications with easy parallelization and its own render engine to display graphics in the console such as: progress bars, real-time graphs, etc - Ability to pipeline SQL queries (both read and write) to PostgreSQL as well as template tables and schemas which can be automatically created - A new "query language" for Redis, where instead of dealing directly with Redis itself and calling commands, there's a set of classes we call "Primitives" which are able to store data distributed across several nodes and still act like a relational database - etc
The SDK is totally written in PHP (except the Redis part, which runs on the Redis side as LuaJIT), and is closed source, at least for now.
However, this will translate into some cool features for the end-users, such as much better and way faster API endpoints anyone can use and also something big that our team is currently working on for a good while already.
Would you like to work with us?
Funny you should ask, 'cause we're actually looking for a talented web developer to join Claudio's team. FYI: We're hiring 40 (!) new people until the end of the year. Come join us or tag someone below you think would be a good fit! Check out all our job openings and get in touch with us.