This week’s system design refresher:
Software Engineer Promo is SUPER easy - DO THIS (Youtube video)
Explaining Sessions, Tokens, JWT, SSO, and OAuth in One Diagram
Most Used Linux Commands Map
How do we transform a system to be Cloud Native?
CRUD System vs. Event Sourcing
Free tickets to P99 CONF - 60+ low-latency engineering talks (Sponsored)
P99 CONF is the technical conference for anyone who obsesses over high-performance, low-latency applications. Engineers from Netflix, Google, Meta, Twitter, TikTok, Uber + more will be sharing 60+ talks on topics like Rust, Go, Zig, distributed data systems, Kubernetes, edge, and AI/ML.
Join 15K of your peers for an unprecedented opportunity to learn from experts like Gwen Shapira, Bryan Cantrill, Jens Axboe, Avi Kivity, Jon Haddad, Armin Ronacher, Liz Rice & more – for free, from anywhere.
Bonus: Registrants are eligible to win 500 free swag packs and get 30-day access to the complete O’Reilly library & learning platform, plus free digital books.
Software Engineer Promo is SUPER easy - DO THIS
Explaining Sessions, Tokens, JWT, SSO, and OAuth in One Diagram
Understanding these backstage maneuvers helps us build secure, seamless experiences.
How do you see the evolution of web session management impacting the future of web applications and user experiences?
Latest articles
If you’re not a subscriber, here’s what you missed this month.
To receive all the full articles and support ByteByteGo, consider subscribing:
Most Used Linux Commands Map
File and Directory Management
File Viewing and Editing
Process Management
System Information
User and Group Management
Network Configuration and Monitoring
Package Management
Over to you: Which command category did you use the most in your daily Linux tasks?
Guest post by Govardhana Miriyala Kannaiah
How do we transform a system to be Cloud Native?
The diagram below shows the action spectrum and adoption roadmap. You can use it as a blueprint for adopting cloud-native in your organization.
For a company to adopt cloud native architecture, there are 6 aspects in the spectrum:
Application definition development
Orchestration and management
Runtime
Provisioning
Observability
Serverless
Over to you: Where does your system stand in the adoption roadmap?
Reference: Cloud & DevOps: Continuous Transformation by MIT
Redrawn by ByteByteGo
What is Event Sourcing?
The diagram below shows a comparison of normal CRUD system design and event sourcing system design. We use an order service as an example.
The event sourcing paradigm is used to design a system with determinism. This changes the philosophy of normal system designs.
How does this work? Instead of recording the order states in the database, the event sourcing design persists the events that lead to the state changes in the event store. The event store is an append-only log. The events must be sequenced with incremental numbers to guarantee their ordering. The order states can be rebuilt from the events and maintained in OrderView. If the OrderView is down, we can always rely on the event store which is the source of truth to recover the order states.
Let's look at the detailed steps.
Non-Event Sourcing
Steps 1 and 2: Bob wants to buy a product. The order is created and inserted into the database.
Steps 3 and 4: Bob wants to change the quantity from 5 to 6. The order is modified with a new state.Event Sourcing
Steps 1 and 2: Bob wants to buy a product. A NewOrderEvent is created, sequenced, and stored in the event store with eventID=321.
Steps 3 and 4: Bob wants to change the quantity from 5 to 6. A ModifyOrderEvent is created, sequenced, and persisted in the event store with eventID=322.
Step 5: The order view is rebuilt from the order events, showing the latest state of an order.
Over to you: Which type of system is suitable for event sourcing design? Have you used this paradigm in your work?
Regarding CRUD system vs event sourcing system, from this newsletter, I still can not figure out the differences, it seems that order table in CRUD system is the same as the event log in event sourcing system, and the only difference is that event sourcing system adds an additional order view, but this view could be easily built in CRUD system too.
We are investigating scylladb vs redis at my job, curious if any of you have thoughts on choosing one over the other for fast search functionality.