GithubHelp home page GithubHelp logo

npathai / system-design-with-code Goto Github PK

View Code? Open in Web Editor NEW
21.0 8.0 6.0 648 KB

System design not just on whiteboard, but with code.

Java 79.48% HTML 0.89% JavaScript 9.23% Dockerfile 0.60% CSS 0.83% Scala 0.90% Go 8.08%
microservice system-design interview-preparation architecture architectural-patterns software-architecture software-design

system-design-with-code's Introduction

system-design-with-code ๐Ÿ’ป

System design not just on whiteboard, but with code.

Build Status

Why this repository?

This repository represents an effort to learn System Design by experimenting, failing-fast, learning from that experince and providing all the fellow developers a wealth of knowledge in terms of source code.

System design always seemed quiet far from reach because the knowledge available online either is too shallow or basic, or quiet high level. Being a developer, I wanted to learn by looking at code and experimenting. Facing challenges head on and building robust systems. If you feel the same, then this repository is perfect for you!

Goals

Try to re-create system design case studies, not just on prototype scale but full scale. I intend to deploy sytems on cloud and load test them at scale.

All systems built in this repository should be

  • Microservices driven (or even Serverless)
  • Lightweight
  • Highly scalable
  • Fault tolerant (kill machines randomly and system shouldn't cave in)
    • No single point of failure
  • High performance
  • Observable and Traceable

Projects

URL Shortening Service

Chatter (Slack) - Inspired from Mattermost

Discourse (QnA)

BookMyShow

Technology Stack

  1. Micronaut Framework
  2. Zookeeper
  3. Consul Service Discovery
  4. MySQL
  5. Redis Cache
  6. Test Containers
  7. React (frontend)
  8. Docker
  9. Zipkin
  10. Hystrix/Resilience4J
  11. Micrometer
  12. Prometheus
  13. Grafana
  14. Gatling

system-design-with-code's People

Contributors

npathai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

system-design-with-code's Issues

Twitter

Create a twitter like service

Leetcode

Create Leetcode type service, specifically the code execution and verification aspect.

WhatsApp Messenger

Create WhatsApp messenger like service, where history is maintained in client device. Undelivered messages are kept in cloud.

Google Docs

Create Google Docs type service, which allows basic collaboration writing feature

Facebook Messenger

Design Facebook messenger like service. Message history is maintained in cloud.

Url Shortening Service

  • From long url to short url
  • From short to long url
    • Basic conversion
    • Who should append the hostname in short url
    • Considerations for load balancing
    • What if there are multiple hostnames
  • Redirect the user to long url when short url is visited
  • Url expiry
  • User Authentication
    • Basic authentication or OpenId Connect
    • Authenticated User will get Analytics and Tracking
    • Without authentication create url with default expiry maybe a week
    • Delete url
  • Add Documentation
  • Add logging (include user IP for tracking and analytics)
  • short-url-gen service should only be accessible using public network, id-gen-service etc should not be directly reachable from outside network.
  • Distributed tracing with Zipkin

Dropbox

Create Dropbox, Google Drive or One drive like service

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.