Skip to content

A set of regular microservices for practice and reference

License

Notifications You must be signed in to change notification settings

nddbk/microservices

Repository files navigation

microservices

A set of regular microservices for practice and reference.

List of microservices to implement

Status

Service Type Port Status
Front-end GUI View 7777 Step 0
Load balancer with Nginx Routing 7776 Step 0
Load balancer with Traefic Routing 7775 Step 0
Load balancer with HAProxy Routing 7774 Step 0
API Gateway in Deno Routing 7150 Step 4
API Gateway in Golang Routing 7250 Step 0
API Gateway in Node.js Routing 7350 Step 4
API Gateway in Python Routing 7450 Step 0
API Gateway in Vlang Routing 7550 Step 0
Article Parser service in Deno Extraction 7151 Step 0
Article Parser service in Golang Extraction 7251 Step 4
Article Parser service in Node.js Extraction 7351 Step 4
Article Parser service in Python Extraction 7451 Step 4
Article Parser service in Vlang Extraction 7551 Step 0
Feed Parser service in Deno Extraction 7152 Step 0
Feed Parser service in Golang Extraction 7252 Step 4
Feed Parser service in Node.js Extraction 7352 Step 0
Feed Parser service in Python Extraction 7452 Step 4
Feed Parser service in Vlang Extraction 7552 Step 0
Email Sender service in Deno Event 7153 Step 0
Email Sender service in Golang Event 7253 Step 0
Email Sender service in Node.js Event 7353 Step 0
Email Sender service in Python Event 7453 Step 0
Email Sender service in Vlang Event 7553 Step 0
Image Store service in Deno File 7154 Step 0
Image Store service in Golang File 7254 Step 0
Image Store service in Node.js File 7354 Step 0
Image Store service in Python File 7454 Step 0
Image Store service in Vlang File 7554 Step 0
Image Classification service in Golang CV 7255 Step 0
Image Classification service in Node.js CV 7355 Step 0
Image Classification service in Python CV 7455 Step 0
Face Detection service in Golang CV 7256 Step 0
Face Detection service in Node.js CV 7356 Step 0
Face Detection service in Python CV 7456 Step 0
Text Classification service in Golang NLP 7257 Step 0
Text Classification service in Node.js NLP 7357 Step 0
Text Classification service in Python NLP 7457 Step 0
Sentiment Analysis service in Golang NLP 7258 Step 0
Sentiment Analysis service in Node.js NLP 7358 Step 0
Sentiment Analysis service in Python NLP 7458 Step 0

Status explaining

  • Step 0: Not started yet, no code base created
  • Step 1: Initialized, setup code base with default router, few lines of doc
  • Step 2: Implementing, working on the functions
  • Step 3: Basic implementation, main function works, but incomplete
  • Step 4: Done, finish main function, standardize data format, fully tested

Tech stacks

  • Programming languages: Node.js, Deno, Python, Golang, Vlang
  • Databases: MongoDB, Postgres, SQLite, Redis/KeyDB, InfluxDB
  • Job queue: bull, celary, rqueue, etc
  • Testing tools: Jest, pytest
  • DevOps: Docker, Drone, nginx, Traefic, HAProxy
  • Machine Learning: TensorFlow, PyTorch, spaCy, fasttext

And not only that, of course :)

Contributions

If you would like to learn more about micro services, or a new programming language, or one of the above tech stacks, feel free to contribute.

To keep things consistent for others, please refer the next section.

Rules and standards

Naming convention

Each of service should be stored within a separate folder. These folders must be named in dash-case style by the format of {SERVICE NAME}-{LANGUAGE}, for examples:

  • article-parser-node
  • feed-parser-py
  • email-sender-go

Service.json file

Each of service must have a service.json file to declare name, version and some basic configs.

{
  "name": "Article Parser service in Go",
  "version": "1.0.0",
  "host": "0.0.0.0",
  "port": 7251
}

These values should be used to introduce the service at its starting time:

Dockerfile & docker-compose.yaml

All services must be able to containerized.

The images should be carefully selected. Good to use the minimal ones, or those are designed for microservice.

The containers should be configured to run within the same virtual network named micro-net, so please create it at first.

docker network create micro-net

Functional Programming

It's recommended to apply Functional Programming style here.

Coding convention

  • Node.js, JavaScript: standardjs
  • Python: PEP8
  • Golang: default
  • Vlang: default
  • Deno: not defined yet

Output format

License

The MIT License (MIT)