Build A Redis Server Clone: Master Systems Programming Through Practice

4.9 (5)

·

5 Days

·

Cohort-based Course

Code a network server from scratch. Master network programming, concurrency, testing, and systems software while building a Redis server.

Course overview

Become a better software developer by building real-world systems software.

Challenge yourself by implementing a lite version of a Redis server. Starting from scratch we’ll work through building a clone of the original Redis server and extending it to support the RESP2 protocol and some additional commands.


This course is entirely project focused. The goal of the course is not just to learn how to write a server, but also how to approach the problem of server software. Part of the course involves group discussion about problem decomposition, coding techniques, design tradeoffs, testing, and other related topics. The rest of the time is spent working on individual coding.


Coding examples are written in Python. However, the project involves no third-party libraries, esoteric language-specific features, or language-dependent tooling. As such, you're free to implement the project in any programming language that you wish. Writing a server is a great way to learn a new programming language too.


Who is this course for

01

Mid-level developers who want to learn how to sharpen their skills, improve their unit testing and gain experience code reviewing.

02

Senior+ developers who want to learn from their peers and gain insights on how others tackle real-world problems with a hands on project.

03

Engineering Managers - who want to remain hands on and refresh their understanding of current software development methodologies.

What you’ll get out of this course

Learn about Redis, how it's built, and the data structures behind it

Redis is one of the most widely used key-value / NoSQL databases. It's also a great example of the power of Open Source software, great code and great documentation.

Develop your parsing skills.

These can be applied to a variety of problems including data munging, scraping, protocol implementation and more.

Understanding network programming.

This can be applied to making more robust, secure and scalable distributed systems.

Experience handling concurrency and parallelism in software.

Giving you the core skills to build scalable distributed systems.

Improved testing skills.

Network servers are complex system software with components that can interact in non-trivial ways. Figuring out how to test them is a challenge. You’ll explore unit and integration testing.


An introduction to Test Driven Development.

TDD is a great way to develop core components of system software, you’ll learn how it can help.

Experience pair / mob programming.

Optionally pair or mob with your peers and experience collaborative development practices.

Develop your code review skills.

Experience reviewing code written in different programming languages and styles.

This course includes

5 interactive live sessions

Lifetime access to course materials

In-depth lessons

Direct access to instructor

Projects to apply learnings

Guided feedback & reflection

Private community of peers

Course certificate upon completion

Maven Satisfaction Guarantee

This course is backed by Maven’s guarantee. You can receive a full refund within 14 days after the course ends, provided you meet the completion criteria in our refund policy.

Course syllabus

Week 1

Dec 9—Dec 13

    Dec

    9

    Session 1 - Introduction and Parsing RESP.

    Mon 12/94:00 PM—10:00 PM (UTC)

    Dec

    10

    Session 2 - Listening for connections and handling the the Echo and Ping commands.

    Tue 12/104:00 PM—10:00 PM (UTC)

    Dec

    11

    Session 3 - Handling concurrent clients and set and get commands.

    Wed 12/114:00 PM—10:00 PM (UTC)

    Dec

    12

    Session 4 - Handling expiry and the remaining commands.

    Thu 12/124:00 PM—10:00 PM (UTC)

    Dec

    13

    Session 5 - Persistence and benchmarking.

    Fri 12/134:00 PM—10:00 PM (UTC)

Meet your instructor

John Crickett

John Crickett

I'm a software engineer and sometimes a manager of software engineers. I've worked as both a senior individual contributor (Staff+) and a senior manager (VP Engineering, Head of Software Development).


I've worked across many tech stacks. I've spent most of the last six years building distributed systems with Python and Flask deployed on AWS using CloudFormation and some CDK.


Recently I've done some TypeScript/JavaScript, React and Next.js on the frontend with Node.js and Express on the backend. All deployed on AWS using CDK.


For most of my career before that I worked in C++. I'm coming the full circle now and currently learning Rust. Coding Challenges was born out of the process of learning Rust by building real-world applications.

A pattern of wavy dots

Be the first to know about upcoming cohorts

Build A Redis Server Clone: Master Systems Programming Through Practice

Course schedule

6 hours per day

  • Monday to Friday

    08:00 to 14:00 PT

    For 6 hours per day we will work on building a working, tested clone of a Redis server.

Frequently Asked Questions

Stay in the loop

Sign up to be the first to know about course updates.

A pattern of wavy dots

Be the first to know about upcoming cohorts

Build A Redis Server Clone: Master Systems Programming Through Practice