UrbanClap Tech World
At UrbanClap, we work on three major core values which are Basic, Hustle and Re-Imagine. Our tech infra is also built out on these core values. UrbanClap infra has grown from 2–3 nodes to 60 nodes now within a period of 1 year but it still has a long way to go to become an ideal tech startup.
UrbanClap infra like any marketplace company can be divided into frontend and backend. For our frontend, we have different mobile apps catering to our customers and service professionals. Both these set of users can choose between iOS or Android platforms. That means, we have a total of 4 mobile apps which need to be all running in sync with each other. We do provide native experience across all these apps i.e. Swift for iOS and Java for Android. Code reusability has been a huge headache because of this, something we plan to address in the near future. While we have always been app first, quite lately we have started focusing a lot on our Web user base too. We recently redesigned and launched our new website built on React, which has empowered us with better code modularization and control on performance. It was a big learning curve for our team, but it is something that we strongly believe will help us in the long run. Angular is still widely used for our internal dashboards.
Our main serving backend is written in Node.js with Redis caching layer for performance. NGINX is used as our entry point for any traffic which equipped with a load-balancer distributes traffic to auto scaled backend servers. Our backend servers run on AWS. We utilize Redis for API caching, Job Scheduling and Listing professionals on our SEO pages and Apps. Backend is mainly written in Node.js, Python, Java and Scala.
Chat
Chat is one of our most important features which connect professionals and customers on a single platform and creates a very healthy communication channel between both parties. We have been working hard to provide a seamless experience to end users. In starting we built our Chat on Pubnub, a third party chat enabler which can be integrated easily with apps and web. Pubnub didn’t work out for us because of a number of reasons: iOS dual certificate limitation did not play well with chat notifications, lack of chat analysis and need of learning algorithms on chat. So we have now built in-house chat.
We have built our Chat on Ejabberd. WhatsApp and previously Facebook chat (which later moved to MQTT) are built on same technology although they have modified it a lot for their use cases. We are also gunning into the same direction to provide an awesome experience to end users. We have built a layer on top of Ejabberd in Java using Play Framework to boost our chat analysis and provide additional functionality which XMPP protocol of Ejabberd is not able to provide.
Matchmaking
Matchmaking Algorithm is at the heart of UrbanClap which matches a particular service request to the right professionals. This algorithm is targeted to be self learning, efficient and fault tolerant over time. Algorithm is written in way such that it can predict the right professionals for placed request depending on past behaviour of professionals for various service requests and their likelihood to convert with highest accuracy.
We have written our matchmaking algorithm on Python using Django framework running as a separate service.
Data
After using a bunch of third party tools for our data and cohort analysis we are now migrating to in-house solutions. Currently each and every event made on App or Web is passed through our in-house data platform which stores it on HDFS. Real time data propagation is done through Flume and jobs are written in Scala. We use Redshift for running complex jobs on denormalized tables and Tableau for data visibility. Server data logging is built on ELK stack (Elasticsearch, Logstash and Kibana) which is later used for analysis and debugging purpose.
For customer experience and operations to be efficient, we have built in-house dashboards so that issues can be resolved sooner. Frontend is made on Angular.js and backend on Node.js.
For customer acquisition, we have built in-house recommendation engine which has given us a boost in retention and user engagement. This has been built on Node.js, just like the majority of our backend.
We are using Airflow, an Airbnb opensource for running our cron infra and Redis for our event driven jobs. All crons are written in Python for efficiency, performance and ease of development.
This pretty much summarises our tech infra, stay tuned for our next blog digging into each and every component in detail.
Cheers,