Coder Social home page Coder Social logo

aditya43 / microservices-applications Goto Github PK

View Code? Open in Web Editor NEW
32.0 1.0 9.0 28.96 MB

:tropical_drink: Microservices built using Docker, Kubernetes, Apache Kafka, NATS Streaming Server, TypeScript, Node.JS, Express, React, Redux, Next.js, MongoDB, Mongoose, Event Driven, Pub-Sub, CI/CD, Skaffold etc.

License: MIT License

HTML 1.01% JavaScript 27.65% Dockerfile 2.81% TypeScript 68.52%
typescript nodejs express react redux nextjs mongodb mongoose event-driven docker

microservices-applications's Introduction

Microservices Applications

๐Ÿน Technologies: TypeScript, Node.JS, Express, React, Redux, Next.js, MongoDB, Mongoose, Event Driven, Pub-Sub, Docker, Kubernetes, CI/CD, Skaffold, Apache Kafka, NATS Streaming Server etc.

Author

Aditya Hajare (Linkedin).

Current Status

WIP (Work In Progress)!

License

Open-sourced software licensed under the MIT license.


Notes

+ Why Database Per-Service
  • We want each service to run independently of other services.
  • Database schema/structure might change unexpectedly.
  • Some services might function efficiently with different types of DB's (SQL vs. NoSQL).

+ Communication Strategies Between Services
  • Sync: Services communicate with each other using direct requests.
    • Conceptually easy to understand.
    • Service won't need a database.
    • Introduces a dependency between services.
    • If any inter-service request failes, the entire service fails.
    • The entire request is only as fast as the slowest request.
    • Can easily introduce webs of requests.
  • Async (Event Based Communication): Services communicate with each other using events.
    • No inter-service dependency.
    • Service will be extremely fast since it has it's own data store.
    • Introduces data duplication. Paying for extra storage + extra DB.
    • Harder to understand.

+ Event Bus
  • Many different implementations. For e.g. RabbitMQ, Kafka, NATS etc..
  • Receives events, publishes them to listeners.
  • Many different subtle features that make async communication way easier or way harder.

+ Kubernetes Basic Terminologies
  • Cluster: A collection of nodes + a master to manage them.
  • Node: A virtual machine that runs our containers.
  • Pod: More or less a running container. Technically, a pod can run multiple containers.
  • Deployment: Monitors a set of pods. Make sure they are running and restarts them if they crash.
  • Service: Provides an easy-to-remember URL to access a running container.

+ Kubernetes Config Files
  • Tells Kubernetes about the different Deployments, Pods and Services (Referred to as Objects) that we want to create.
  • Written in YAML syntax.
  • Always store these files with our project source code - they are documentation!
  • We can create Objects without config files - DO NOT DO THIS!. Config files provide a precise definition of what our cluster is running.

+ Securely Create Secrets In Kubernetes
  • Following command will create a secret called JWT_KEY:
kubectl create secret generic jwt-secret --from-literal=JWT_KEY=adityahajare

microservices-applications's People

Contributors

aditya43 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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.