What I learnt in Crio’s #IbelieveinDoing Challenge

Vishnu Kalyan
7 min readJun 25, 2020

Key Takeaways from Crio’s #IbelieveinDoing Challenge

Crio.Do is a platform built to Build real products to learn tech hands-on with multiple micro experiences to work with. Crio helps in getting work-like software product development experience and learn the tech skills you need to excel in your career.

Introduction

I recently participated in Crio’s #IBelieveinDoing challenge organised by Crio.do where all the participants will get a chance to work on QReview & System Design Micro Experiences. Before starting one of the sessions we were asked to answer this question to check our understanding…

When you open Uber App, you see a list of cars available near you. Can you explain what might be happening technically in terms of flows and what kind of systems/components are involved in serving this request. Write as descriptively as possible?

So, Lets see what are Micro-Experiences(ME’s)?

The Micro Experience

Micro-experiences describe brand interactions that happen across all the digital channels at our disposal today — email, web, mobile web, push notifications, and more. The ME’s in Crio were divided into multiple modules with setup and milestone tasks. Each task is designed to give good learning experience about the module’s goal. VS code based workspace is provided for the user thereby no installation is required.

  1. QReview

In this ME we will create a QEats (QEats is a popular food ordering app. It gives users a list of nearby restaurants and popular dishes.) Reviews page on various social media sites. We will then use a series of REST APIs to post user-submitted reviews to the QEats Reviews pages. Finally, you will also use a hosted AI-powered classifier to suggest relevant review hashtags.

Source Crio.Do

This ME is made with 3 modules with a goal of learning about REST API, Python Requests Module, CURL, Postman, JSON Parsing, Facebook Share API, Clarifai Predict API in learn by doing methodology.

Module 1

The goal this module is to publish a post to a Facebook page using python code. We have to clone the QEats Sneak Peek code repository, Install the required python libraries and use the python requests module to publish posts to a Facebook page.

I wrote a function using the python requests library to create a post request to the facebook API. All the details about the API are given in the facebook documentation. I used the curl to python converter to convert the curl request to python to use in the publish_photo_message()

Module 2

The goal of this module is to share a Review from the App to Facebook. We have to Install the QEats app, Run the QEats backend server, Use share_review() to publish a photo message to the QEats Review facebook page from the command line, Use the QEats app to share a review directly to the QEats Review facebook page.

I learnt about the django server and tried to share a review from QEats app to the facebook page. I used the VScode debugger to debug the django application in the Crio workspace. After completing this module I got clear understanding about REST API, cURL, JSON and HTTP Error Codes.

Module 3

The goal of this module is to Suggest review tags using an AI service. We have to Use the Clarifai Predict API to categorize review images and send #hashtag suggestions to users.

I learned about using the clarifai predict API. We had to accomplish this using the HTTP requests only. Here Clarifai’s documentation gave clear idea about using the HTTP requests in the application. The QEats app with the django server running gave the required response but I struggled to parse data from json response to python which was key take away from this ME.

So, From this Micro Experience I learned how to Publish a Message to a Facebook Page, Share a Review from the App to Facebook, Suggest review tags using an AI service (Clarifai API) using python.

2. System Design

This ME helps to learn some important concepts necessary to crack System Design interviews like Client-Server Architecture, HTTP, DNS, Load Balancing, Caching, Data Consistency. This ME is designed for Developers looking to get a practical exposure to some important concepts required for System Design interviews.

Source Crio.Do

Module 1

This module is all about Host a webserver in cloud. The objective is to Create a Virtual Machine (VM) in cloud and deploy an HTTP(Nginx) server. All the major cloud providers like Google Cloud, Amazon Cloud, and Azure provide these Virtual Machines to users.

Nginx is a web server which can also be used as a reverse proxy, load balancer, mail proxy, and HTTP cache. As it can be used in these multiple ways, you have to be careful in looking at the right tutorials when you try to configure Nginx as a web server

I used my AWS account to create a Virtual Machine(VM) and ran a HTTP server (Nginx). After that I configured the firewall to allow HTTP traffic and hosted my website.

Module 2

This module is about hosting your site in a domain and understanding protocols involved. The goal of this module is to gain a deeper understanding of how HTTP works, Purchase a domain, Configure DNS server to point the domain to your IP.

Source Crio.Do

In this module I learnt about the things happening in the browser when you go to http:// from your browser and I explored Request Headers, Response Headers, Response Body, etc. After that I configured the DNS settings of my domain to point to my newly created website. So that my website is loaded when I hit the domain.

Module-3

The objective of this module is to configure a simple Load Balancer using DNS and understand the concept of Load Balancing.

At first I created a duplicate VM by cloning my VM. So that second VM (cloned) will serve as my second HTTP server. After that i have shutted down VM1, Loaded my domain in a browser then added VM2’s IP as another ‘A’ record to the DNS configuration and finally restarted VM1 now.

This way, I learnt how to achieve high availability of the service.

Even when one of your VMs go down, your website will continue to run (served by the other VM.)

Up Next, HTTP Load Balancing is the optional task which describes about the Load Balancing that can be done in different layers. Load Balancers are the reason for the website to run even if one of our VM’s goes down.

Source Crio.Do

Module 4

This module is all about scaling the server performance with Content Delivery Network(CDN). The goal of this module is to Understand the performance bottleneck, Configure Content Delivery Network (CDN) to improve server performance.

At first I have chosen a CDN Provider and started serving a considerably large image in my website and I reloaded the website to see the larger image. Then I scaled down the instance to the smallest size available which helps in visualizing the server’s performance with very little load. Without cache, it took over 7+ minutes to completely load the image.

Source Crio.Do

Now I started the CDN and configured a small cache expiration time so that I can observe Eventual consistency. Then I compared this time with the time taken to download the original image (without cache). See what happened…

Website performance to load image: without cache vs. with cache.

So with the CDN in action the performance of the website is improved.

Finally, From this Micro Experience I learned about Client-Server Architecture, HTTP, DNS, Load Balancing, Caching, Data Consistency.

Now, I’m pretty confident that I can answer the questions like ” What happens when you type www.google.com in a browser? ” in any of the interviews.

Support

The entire group of participants had a Slack workspace with channels. The workspace is filled with all the queries related to the modules and virtual sessions where we helped each other and explored our potential out of our comfort zone. A big shout out to the crio forums where the actual Crio team involved in guiding us through the solution. Also handing out direct answers was also strictly discouraged.

There were times when I felt that they should really help me now, I’m stuck and there is no way out but all they gave were hints and The feel cannot be described in words when we fix it by ourselves

Conclusion

Crio is a platform which is perfectly designed for most of the IT individuals who loves to learn things by doing. It helps in exploring different ways like reading documentations, communicating in forums and many more to reach the goal. Thank You Crio.Do for this wonderful experience. I would love to participate in more such challenges.

--

--

Vishnu Kalyan

Tech-Enthusiast | 2x Microsoft Certified | One-side lover of Google