My Journey at Exotel - 2021
A few days ago, on 29th June 2021, marked my first year at Exotel as a full-time Software Engineer. This is the story that captures, most of the key moments, learnings, works, and people who have helped me grow in the past year.
Exotel is the largest customer engagement cloud platform in the emerging markets, with a presence in close to 60 countries. You think of communication, from Flipkart to Zomato, from ICICI to Zerodha, from WhitehatJr to Ola, Exotel got them covered. In your, day-to-day life, it is almost certain that you have already used some of the Exotel Products, in other words, you have used my code. Yep, I do take a lot of pride in my work. 😎
The Journey:
- I joined Exotel as an Intern on 2nd Jan 2020. This was the first time, Exotel hired ~15 Interns at once. But Exotel was in full throttle to expand the team, evolve the product and take over the Cloud Communication space. 15 of us were divided into separate teams based on our interview process, I landed on the Core-Services team which handles the core-backed of Exotel.
- We had an onboarding session for one month. We learned about the Exotel-product, Exotel-Terminologies, the services owned by the team, and the interconnection between them. Some general Linux tips, Common Git procedures, API designing sessions to give us a taste of how it's done and what's to come.
- After a month, we started to contribute to small tasks, bugs, and features in the Exotel backend. And I am still riding that roller-coaster.
- Zoom past 3 months, and we were picking up the pace and doing some cool contributions. It was the first week of March-2020 when Exotel sent out a mail, saying let's work from home until further notice due to rising Covid-viruses. After 3-4 days, I came back to Patna with a single backpack containing my work laptop and few clothes thinking it would be a one or two-week affair. 😂
- From the 25th-March 2020 onwards, government-imposed nationwide complete lockdown. This means no customer communication, which affected Exotel's revenue in a very negative way.
- On 24th-April-2020 in the middle of nation-wide lockdown, we got a mail from Shivku(CEO) for an organization-wide meeting. Multiple folks from multiple positions & teams were put on temporary leave. All the interns were let go. That marked my last day as an Intern at Exotel. It was supposed to be a 6-month Internship and a full-time position afterward. By mid-may, all the paperwork was done, and it was a wrap-up.
- Exotel did start an outreach program where they tried to connect the folks who had to leave Exotel, with some other companies which needed engineers at that time.
- 1st week of June, slowly unlocking procedures were starting, and businesses were slowly coming back on their feet. I was getting interviewed by a startup for a Software Intern position during that time.
- Last week of June-2020, My manager from Exotel, Abhi called me and extended an offer for the Software-Engineer position at Exotel. I was taken aback. I queried about the current financial status of Exotel, and why is it that within 2 months everything changed. Till date, I consider that, as one of my toughest decision to join back or not. I had another great offer by this time from another great startup. But to go back or not, was not an easy decision to take. (There is a whole story behind this decision, which might be a blog for some another time). But at end of the week, I choose Exotel. Why? because of the team and the gigantic amount of engineering problems to be solved.
- 29th June-2020, marked by the second-first day at Exotel. The fascinating part of this is that due to the nationwide lockdown, I still had the company laptop with me, which I could not courier back. I just started to use it again!
- From then onward it has been a roller coaster ride in my technical learning, ability to contribute to a large code-base, the spectrum of technologies, and software designs concepts. Sometimes it is overwhelming, but that is exactly what I signed up for. I believe in a marathon race, where I would do multiple short sprints.
- Few other key moments that made the ride more exciting and adventurous:
- December-2020, Exotel raised a 40Cr funding round led by A91 Partners. https://yourstory.com/2020/12/funding-alert-cloud-telephony-exotel-a91partners-digital/amp
- June (1st week) -2021, Exotel raised 45Cr funding round led by A91 and Blume ventures. Where prominent minds like Binny Bansal, Reliance Jio president Vikas Choudhury, MakeMyTrip's Deep Kalra, and ICICI Labs' Rohan Angrish also invested. https://inc42.com/buzz/cloud-telephony-platform-exotel-raises-inr-45-cr-funding/
- June (last week) - 2021, Exotel, Asia’s largest cloud communication platform, and Ameyo, Asia’s largest contact center platform, announced a merger, which created the largest customer engagement cloud platform in the emerging markets, with a presence in 60 countries and an ARR of 300 Crore (40 million USD). https://www.prnewswire.com/in/news-releases/exotel-and-ameyo-announce-merger-form-the-largest-customer-engagement-cloud-platform-893070507.html
- Oh! did I mention Not only me who started to build Exotel in June. Ten years ago, in June Shivku, Ishwar, and Sid started to build Exotel from scratch. And this year we celebrated the 10th Anniversary of building Exotel. I really feel lucky and grateful to be in the middle of all the exciting events and news.
The Impact:
- Worked on 45+ different tasks on ~6 different services, ranging from bugs, tasks to stories.
- Revamped Exotel's recording pipeline. Closing one of the tech-debt of my team.
- Explored and Proposed a new HaProxy & squid service configuration to enhance Server<>Cloud communication which would increase reliability and scalability of Exotel's infra.
- Automated a wide range of manual processes via Go, PHP, and Shell Scripts.
- Developed Go-scripts to calculate and push reliability metrics for core services to track SLAs.
- Introduced Platform level throttling to handle the sudden surge of call requests.
- Enhanced Exotel's Call Monitoring system and enabled the co-existence of multiple types of monitoring.
- Improved service deployment script to stop 5xx, dynamic limiting of parallel deployments to ensure high availability of machines to serve the request, and removed a SPOF (dependency on 3rd party CDN tool) during deployment.
- Revamped and Introduced metrics to track and validate the post-processing of data generated by the services owned by our team.
Recognitions:
- Received 4 Spot awards(which are recognized every month). Among which 3 are for commitment and 1 for excellence.
- Got nominated for 2021's Annual Award in the category of commitment and integrity. Among which I won the Commitment award.
Learnings:
- The team plays the utmost important role. All the things that I have bragged about in this blog, would not have been possible without the people in my team. Each of them has mentored, encouraged, inspired, and supported me to do the things I have managed to do. Special thanks to Abhinav, Nikhil, Archit, Prashanth, and Abhi.
- In times of difficult times, solve one problem at a time. Simple but very effective.
- To maintain a healthy habit of following a TODO. And sticking to it. It does get hard sometimes to follow the ToDo but I recently read a quote - "Everyone overestimates one's ability in a day, but underestimates one's ability in a year".
- Help will always be given, to those who ask for it.
Technical Learnings:
- Golang. It is a very powerful language because of its capability of concurrency. And the standard way of structuring and packaging the services.
- Basics of system-design/architecture principles like Message Queues(beanstalkd), Caching(in-memory, global(Aerospike, Redis)), Proxies (Forward(squid) and Reverse(haproxy). Transparent and non-transparent), Load balancing (L7, L4), Networking (IP tables like nat, mangle, traffic control on network packets), DB Partitioning(sharding), CAP theorem, Relation between Eventual consistency <> high reliability and distributed systems.
- Life in a Shell: I spend 50% of my time working in a terminal. And I have learned about a lot of Linux utilities to move quickly within servers, files, logs, and text processing.
- Cloud Concepts(AWS) like EC2 Instances, Auto Scaling Groups, target-groups, Elastic-load-balancers, Route53 service, etc.
- Automating deployment steps of service with Ansible.
- Automating Integration and Deployments using those Ansible scripts via Jenkins
- Exposure to monitoring services like Nagios, and logging services like Rsyslog.
- Usage of ElasticSearch queries and visualization tools like Grafana, Kibana.
- Importance of code-readability, good documentation, and proper unit-testing.
- Importance of metrics and alerting. Which is almost a continuous evolution process.
- Note: The best thing about my job is I get the opportunity to learn everyday.
I am grateful for everything. I really look forward to contribute more, change gears and take Exotel to the Moon!
This is my current Work-From-Home Workspace
