EP 41: What is Kubernetes?

This week’s system design refresher:


Thanks for reading ByteByteGo Newsletter! Subscribe for free to receive new posts and support my work.


New Book Announcement

Our new book, Machine Learning System Design Interview, will be available on Amazon on Feb/01.

No alternative text description for this image

Table of Content:
Chapter 1 Introduction and Overview
Chapter 2 Visual Search System
Chapter 3 Google Street View Blurring System
Chapter 4 YouTube Video Search
Chapter 5 Harmful Content Detection
Chapter 6 Video Recommendation System
Chapter 7 Event Recommendation System
Chapter 8 Ad Click Prediction on Social Platforms
Chapter 9 Similar Listings on Vacation Rental Platforms
Chapter 10 Personalized News Feed
Chapter 11 People You May Know

My co-author Ali Aminian and I have spent countless nights and weekends on the book. Our goal is to make complex ML systems easy to understand. Thanks to everyone who helped us make this happen.

There is no pre-order. If you are interested, please provide your email at the link below, and I will send you an email when the book is live. Thank you.

Notify me when the book is available: https://lnkd.in/eA_3FvUR


What is Kubernetes?


Is microservice architecture the silver bullet?

The diagram below shows why real-time gaming and low-latency trading applications should not use microservice architecture.

No alternative text description for this image

There are some common features of these applications, which make them choose monolithic architecture:

So microservice architecture is designed to solve problems for certain domains. We need to think about “why” when designing applications.

👉 Over to you: Have you met similar situations at work when you have to choose an architecture other than microservice?


How does Google Authenticator (or other types of 2-factor authenticators) work?

Google authenticator is commonly used for logging into our accounts when 2-factor authentication is enabled. How does it guarantee security?
  
Google Authenticator is a software-based authenticator that implements a two-step verification service. The diagram below provides detail. 

There are two stages involved:

Let’s look at these stages.
 
Stage 1
Steps 1 and 2: Bob opens the web page to enable two-step verification. The front end requests a secret key. The authentication service generates the secret key for Bob and stores it in the database.
 
Step 3: The authentication service returns a URI to the front end. The URI is composed of a key issuer, username, and secret key. The URI is displayed in the form of a QR code on the web page.
 
Step 4: Bob then uses Google Authenticator to scan the generated QR code. The secret key is stored in the authenticator.
 
Stage 2
Steps 1 and 2: Bob wants to log into a website with Google two-step verification. For this, he needs the password. Every 30 seconds, Google Authenticator generates a 6-digit password using TOTP (Time-based One Time Password) algorithm. Bob uses the password to enter the website.
 
Steps 3 and 4: The front end sends Bob's password to the backend for authentication. The authentication service reads the secret key from the database and generates a 6-digit password using the same TOTP algorithm as the client.
 
Step 5: The authentication service compares the two passwords generated by the client and the server, and returns the comparison result to the front. Bob can proceed with the login process only if the two passwords match.
 
Is this authentication mechanism safe

👉 Over to you: What are some of the other 2-factor authentication devices you used?


Is it possible to run C, C++ or Rust on a web browser?

What is web assembly (WASM)? Why does it attract so much attention?

The diagram shows how we can run native C/C++/Rust code inside a web browser with WASM.

Traditionally, we can only work with Javascript in the web browser, and the performance cannot compare with native code like C/C++ because it is interpreted.

However, with WASM, we can reuse existing native code libraries developed in C/C++/Rust, etc to run in the web browser. These web applications have near-native performance.

For example, we can run the video encoding/decoding library (written in C++) in the web browser.

This opens a lot of possibilities for cloud computing and edge computing. We can run serverless applications with fewer resources and instant startup time.

Over to you: Are you familiar with WASM or have you used it in the workplace?


Thanks for reading ByteByteGo Newsletter! Subscribe for free to receive new posts and support my work.