My Distributed Systems journey with Crio
Learn by Doing

Ever booked a cab online? Ever wondered what happens when you open the Uber app and schedule a cab?
Ever ordered food online? Ever wondered how Swiggy and Zomato handle requests from a wide array of customers from different locations?
Ever posted on a social media website? Ever wondered why your friend is not able to view something you just posted but can see it after some time?
If any of those questions ever stuck your mind, the answer is -Distributed Systems. Be it a cab booking, a food order, or a social media post, the data goes through a humongous architecture of computers and network instruments like Servers, DNS, Load Balancers and whatnot, before it reaches the intended recipient and useful information is returned to the user. Especially after the boom of microservices architecture, the need for proper system design has increased dramatically. That said, even monolithic architecture requires an appropriate system design to have a robust system that can withstand dire circumstances.
What are distributed systems?
Wikipedia defines distributed systems as follows.
“A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another. The components interact with one another in order to achieve a common goal.”
So what’s the big deal, they are just a bunch of interconnected computers working together, isn’t that the internet.
Yes and no. Distributed systems have various layers at which they work, and yes, they are a part of the internet, but they are slightly different and more interdependent in the way they work. The internet is an example of one big distributed system.
About Crio.do
Crio.do is an ed-tech startup that aims at upskilling developers by their novel learn by doing methodology. Their platform provides an arena for their students to work on live industry scaled projects and gain experience by actually doing against the prevailing trend of rote memorization and watching video tutorials.

For System Design, Crio has two modules or “Micro-Experiences” as they like to call it, namely, QPrep System Design and QReview, which they offer as a promo. These two modules cover core concepts like hosting a website, load balancing, configuring DNS(Domain Name Servers), fetching and processing JSON(JavaScript Object Notation) data, and testing and using APIs.
QReview
Take the developer’s seat and implement a Social Reviews feature in QEats — a popular food-ordering app. Take this Micro-Experience to get a flavour of Crio’s signature Learn-by-Doing methodology.
The QReview Micro-Experience by Crio is a review sharing backend for their app QEats(which is another Micro-Experience), which lets users click photos and share their reviews about the food to social media websites like Facebook and Pinterest directly.
QEats is a popular food ordering app. It gives users a list of nearby restaurants and popular dishes. Users can use the app to order their favourite dishes from restaurants of their choice. Millions of users across the country have been using the QEats app to satisfy their hunger and taste buds. — The most requested feature on QEats is the ability to share reviews on past orders on QEats’ social media pages. Users want to click a photo of the orders they have received, write eye-catching captions and add relevant tags to make their reviews easily discoverable. — The QEats team is relying on your expertise to implement this Reviews feature. Are you up for the challenge?
QReview covers concepts like REST API, Python Requests Module, CURL, Postman, JSON Parsing, Facebook Share API, Clarifai Predict API.

Above is the architecture for the QReview app. There is an Android app provided by the Crio team, which lets user post reviews after which the data is passed to the backend that you design. You start by learning basic Git commands and using the Facebook share API to post reviews on Facebook from the Android app. One then progresses to the next module to learn about REST APIs, using cURL to access and test those APIs, fetch JSON data, and understand HTTP status codes. After this, you use Postman to test the Pinterest API and implement the feature of posting reviews on Pinterest. One then goes on to use the Clarifai Predict API to suggest hashtags to the user while they write their review.
QPrep-System Design
System Design interviews are a great opportunity to showcase your understanding of the complexities of a typical web architecture. For this, it is essential to have a solid knowledge of the basics. With a series of simple steps, this Micro-Experience will help you pick up these fundamentals, in an applied way.
This Micro-Experience offered by Crio is focussed on System Design interviews and basic concepts of website hosting and principles and best practices to provide high availability and optimal resource usage with non-disruptive service.
What goes on behind the scenes when you use a browser to navigate to google.com? Take this Micro-Experience to get a preview of how scalable, distributed, and fault-tolerant systems are designed.
This module covers concepts like Client-Server Architecture, HTTP, DNS(Domain Name Server), NS, Load Balancing, Caching, Data Consistency, CDN(Content Delivery Network).

Above is a simple network diagram for common web architectures and aspects of network design you will be able to explain to an interviewer after completing this ME(Micro-Experience). This ME requires you to get a free cloud account to host a VM(Virtual Machine) in the cloud, which will serve your website. The server we learn to set up in the cloud instance is Nginx, which is also a commonly used load balancer, reverse proxy, mail proxy, and HTTP cache. After that, we learn about security groups and protocols involved while hosting the website and making it available to the internet.
After this, we host the website on a domain that is readily available through services like GoDaddy. We learn about different name-fields while hosting the site on the domain and how we can distribute load using multiple servers and different algorithms that alternate between these servers on the DNS and see them in action by hosting different websites on different servers. The one explained is a standard DNS load balancing technique. We also learn to configure a simple HTTP load balancer.

After this, we learn to use CDN to distribute substantial resources like images and videos on our website, to servers capable of handling heavy loads and reduce our server load. So basically, resources on our website will be loaded from a third-party server, which is capable of handling burdensome data requests. Passing big sized data like images and videos, down to the CDN, cuts down resource usage on our website and makes the service more robust.
Conclusion
Crio methodology speaks for itself as they march towards their goal of teaching professionals and students and giving them industry required skills. With their state-of-art platform, a production-like environment and a feedback system of mentors and teaching assistants and community support alike built upon their core value of “Learning by Doing”.
Crio provides some ME like the ones mentioned above for free for people to take and explore their platform. Once you register, you can go to www.crio.do, and experience first hand the Crio learning journey.