Learn Redis Through Design Discussions
To make our meetups and conferences interesting to a diverse audience set, we constantly try out various formats. We have had success in architecture group discussions and presentations, moderated by a person with deep knowledge in system software in general and redis in specific.
This page has use cases to start off a discussion. It also has instructions for participants and moderators.
On this page:
- Format of Discussions
- Instructions for Moderators
- Instructions for Participants
- Use Cases:
Format of Discussions
- Two teams work on the same case study and come up with solutions.
- Then they present their solution to the larger audience.
- Invariably, different approaches and technologies are chosen.
- The moderator asks leading questions on the choices or tradeoffs, and involves the larger audience into the discussion.
- Finally, the moderator summarizes the discussion, perhaps commenting on the solutions presented as well.
- The next two teams present their solutions, and the cycle continues
Typically, 6 teams and 3 use cases, with each team having 4-8 members works best. You can scale up or down as appropriate.
Why this Format Works
- Participants are forced to be active and thinking
- Participants get to interact with diverse people, and this brings in different perspectives. They end up learning from each other, rather than from the speakers.
- Forcing them to present in 20 minutes makes them focus. It’s enough time to arrive at a decent solution, and not enough time to get into analysis-paralysis.
- Two independent teams will almost always pick different technologies. The ensuing debate is always fun and engages everyone
Instructions for Moderators
Create teams randomly. You want to encourage people of diverse backgrounds to be part of the same team. Ask participants to pick up chits, or print the team name in the conference lanyards / badges.
The group discussions are intentionally open ended. You can never be sure of the questions participants ask, or the solutions they present. Therefore, you really must have deep knowledge to be able to moderate successfully
While the group discusses the solution, go around and speak to each team. Clarify the use cases, and help them in making assumptions on the requirements. But do not influence their solution, even if you know they are obviously wrong.
Before starting presentations, read out the case study / project the case study for the other teams who would have worked on a different use case.
When teams present their solutions - maintain your private notes on the key technologies / decisions that are being presented.
After both teams have presented, summarize both their solutions. Contrast the technologies/approaches that are different between the teams. Bring to attention particular approaches you disagree with
- Then open up to the audience by asking pointed questions:
- Is kafka a good choice for running background jobs?
- Do you think you should use sorted sets for storing frequently visited articles?
As much as possible, let the two teams and the audience arrive at a solution
- Finally though, intervene and summarize the conversation :
- For obviously wrong choices, explain why it is wrong and suggest a better approach
- For use cases that can be solved in multiple ways, explain the pros and cons of each approach, and suggest under what circumstances one solution works better than the other
- For solutions that were correct - acknowledge the solution and give credit to the teams
- There will be distractions, people will ask tangential questions not related to the use case. Use your judgement - if the question is relevant to the larger audience, answer it. If it is very specific, discuss the question later with the individual.
Instructions for Participants
- You have 20 minutes to discuss the solution
- You have 2 minutes to present your solution
- The presentation is verbal, no slides.
- Choose the best technology for the job, don’t be limited to just Redis
- Some requirements may not be clear. Use your judgement, make reasonable assumptions, and build your solutions on the basis of those assumptions
- Choose one person from your group as the presenter. The presenter will summarize the solution and present it to the larger audience at the end.
Use Case - MONITRON
Monitron is a monitoring company. It has deployed thousands of sensors across the country. These sensors monitor heavy machinery and constantly capture the following data:
- GPS locations - latitudes / longitudes
- Signal Strength
- 20 optional parameters, values between 0.0 to 100.0 double precision
This data is sent over HTTP to a central location and is then written to a relational database. The relational database is now under heavy load, and Monitron is now losing metrics.
Additionally, the management wants a operational dashboard that shows the latest values for each sensor in a fast and efficient manner.
As a consultant, how can you help Monitron to solve their problem? You do not have to use only Redis. Pick the best technology.
Use Case - NAYA NEWS
Naya News is a very popular offline newspaper. Recently, they launched a digital online version of their paper. Their website became an instant hit and they are now trying to scale / improve performance.
- About 80% of their visitors view the articles anonymously.
- About 20% login and see personalized articles.
- 5 recommended articles are shown along with each article. These articles can change every 5 minutes and the database query to calculate this takes 3 sec to execute.
As a consultant, you have been asked to improve the performance of the website. What would your suggestions be?
Use Case - RESIZER
Resizer is an online image processing API. Clients can upload images, and Resizer will resize the images to the desired size. Clients pay for the services depending on the number of the API calls they make.
Resizer has the following challenges:
- How do you perform authentication and authorization at high scale?
- How do you prevent client A, from modifying images of client B?
- How do you rate limit free trier users, so that they do not abuse the system?
- How do you bill users at the end of every week?
Their current solution uses MySQL, but they are now facing challenges scaling this solution.
As a consultant, how can you help them architect this solution?
Use Case - VIDEOCODER
VIDEOCODER is a video management company. Users can upload videos, manage/convert into different resolutions/ formats and share them.
The user dashboard provides the following functionality:
- Upload high resolution videos
- Select formats / encodings to transcode the videos.
- VIDEOCODER runs background jobs to transcode the videos
- User gets real time updates on the progress for transcoding jobs.
- In case of heavy demand, the job can get queued up. In such cases, the user should get the queue status
- Additionally, the estimated remaining time, is to be provided, based on the format and size, of the items ahead in the queue.
Their current solution struggles to handle huge number of transcoding jobs. Can you help them architect this solution?
Use Case - UrbanStore
UrbanStore is a leading clothing retail store, with 1000+ retail chains globally as well as an online portal. The key selling point is that they keep huge variety of clothes and with limited quantity, so that the store always has new stuff to display.
As the business is growing, they want to update their business strategy. As per the new business needs, they wanted to handle the following real time scenarios:
- Users should be given about 5 recommendations based on what user is searching online.
- The product inventory is limited and should get updated in real time.
- The new pricing model, keeps updating the prices, discounts of each time, quite frequently, and it needs to be visible in all global retail outlets in real time.
- Manage user score - Scoring business model has been devised and they want to use that to manage score of each user, based on his interests and purchasing habits.
Can you help them architect this solution?
Use Case - Savaari
Savaari is a leading taxi booking solution provider. Using their mobile app, users can search nearby taxis and book them.
Following are the keys features of the customer support dashboard:
- Able to identify taxis in a given location, in real time.
- Manage communication with the driver. Such as chat, accept / decline rides.
- Manage real time stats for a taxi, as in
- Current location.
- Any speed violations done by the driver.
- How many successful rides done
- Total amount of travel done, in miles and in hours.
- Overall rating and feedbacks
- Driver’s history
The current solution is struggling to scale up, as the number of taxis they are managing in real time has increased to around 12000.
Some of the other challenges are:
- Some of the drivers don’t get enough rides, while the others get.
- Real time communication with the drivers in sluggish, especially, during repeated speed violations, has real time dashboard is not performant.
- Users are not able to find the nearby taxis quickly, as the api is performing slowly, during peak hours.
Can you help them re-architect this solution?