Adidas Test Documentation - Phillip Kigenyi

Introduction

This is the adidas backend challenge.

All in all, the three services; public, email and subscription were created successfully. Evenmore, kubernetes configurations files were created infra/k8s and CI/CD was also implemented .github/workflows

Setup pages

  1. Architecture diagram

  2. Production test

  3. Setup instructions

  4. CICD

  5. More

Tools

  1. Typescript: Used to enforce data types mostly in asynchronous communication

  2. Swagger: Used for documentation

  3. Postman: Used to test various endpoints and create documentation

  4. Expressjs: Used to run microservices using Javascript and Node version 16(16-slim)

  5. Kubernetes: Used to manage microservice deployment, scaling and monitoring

  6. Docker: Used to encapsulate each service for easy deployment

  7. NATS: Used as an event bus in asynchronous communication

  8. Skaffold: Used for quick testing and running k8s commands

  9. Minikube: Used to run k8s on dev environment

  10. kubectl: Used to manage k8s resources

  11. kubectx: Used to change between k8s contexts ie minikube, gke_foobar

  12. PostgresDB: Used for storage of more permanent and consistent data

  13. NPM CommonLibrary: Used to share commonly reused components between services

  14. Ingress-Nginx: Routes incoming traffic to the services/pods

  15. reStructuredText(rst): Used to write the docs

  16. Markdown: Used to write short docs in the README.md

  17. Django: Used to create web microservice(only authentication service)

  18. Django Rest Framework: Used to create REST api endpoints in Django

  19. Python3: Used to implement the programming logic in Django microservices

  20. GCP: Used to build and run the k8s production app

  21. Github actions. Used these to create the CI/CD pipeline which tests, builds and deploys to production

  22. Travis. Used it run tests

  23. Codecov. Used it to check the coverage and provide a report

Github repos

Microservices

  • adidas-express-public. A backend for frontend service that acts a proxy server. Handles authentication, DDOS attacks

  • adidas-express-sub. Allows users to subscribe to a newsletter or campaign(one public url, the rest are admin access only)

  • adidas-express-email. Allows admins to send emails to the users(admin access only)

  • adidas-django-auth. An authentication service written in django and generates JWT tokens

Contacts

Incase of any inquiries, please reach me on any of these channels

Email: codephillip@gmail.com Phone: +256756878460 LinkedIn: https://www.linkedin.com/in/kigenyi-phillip-461778101/