Giter Site home page Giter Site logo

backend-challenges's Introduction

Backend Team Challenges

The aim of these challenges is to learn more about the software systems we use everyday. One of the best ways to learn how something works is to implement it yourself. We will attempt to implement our own versions of systems like Redis, Memcached, Postgresql, Celery, Flask, etc. By thinking about and implementing our own version of these systems the internals will become transparent to us, allowing us to better understand the real versions.

We do not of course plan to use anything we implement in these challenges in production. We are not pretending we can reimplement such systems in a single day. Our implementations will be optimised for readability and simplicity over performance. They will support a minimal feature set, dealing with (some of) the most common use cases rather than edge cases.

These challenges are NOT competitions! We will each write our own code but we will solve the problem together. We will discuss the challenge together before we write any code and at intervals during the coding session. When we get stuck we will discuss as a group and help each other out. The aim of these challenges is for everyone to learn something, whether you have never used the the system we are implementing or you wrote the original!

General Rules

  • The implementation must be in Python 3 and use only the standard library.
  • The implementation should be optimised for readability first, then efficiency.
  • The implementation must support the agreed protocol and client.
  • Ask each other for help before asking google/stackoverflow (except for simple syntax things that you don't keep in your head because you know they are on the internet!)
  • Please do not copy/paste any code from StackOverflow etc. Research and discuss until you understand and then write your own code!

Challenge 1 - Build a Key-Value Database Server from scratch

A Redis/Memcached 'clone'.

KVDB Challenge Details

Challenge 2 - Build a Document Oriented Database Server from scratch

A MongoDB/CouchDb/Dynamodb 'clone'.

Challenge 3 - Build a Relational Database Server from scratch

A Postgresql/Mysql 'clone'.

Challenge 4 - Build a PubSub Server from scratch

Like Redis PubSub / RabbitMQ PubSub

PubSub Challenge Details

Challenge 5 - Build a Task Queue from scratch

Like Celery/Kuyruk/Resque/Fifo

Challenge 6 - Build a Micro Web Framework from scratch

Like Flask/Pico/Bottle/WebPy

Challenge N+1 - Make a suggestion!

backend-challenges's People

Contributors

alicertel avatar chpmrc avatar fergalwalsh avatar yigitguler avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.