skygate / skyexpo-matchmaking

The matchmaking app for skyexpo AI 2020
http://skyexpo.hal.skygate.io/
0 stars 0 forks source link

Deep refactor of DevOps #195

Open marcinjosinski opened 4 years ago

marcinjosinski commented 4 years ago

Drone:

  1. Build trwa za długo. Głównie ze względu na brak cachowania paczek. Przy pierwszym buildzie nowego brancha budujemy wszystko od nowa, a powinniśmy cachować node_modules oraz paczki instalowane przez poetry.

    • [ ] Zaimplementuj podejście z multiple branches: https://laszlo.cloud/how-using-cache-from-can-speed-up-your-docker-builds-in-droneci
    • [ ] Napisz paczkę która będzie obsługiwać secret environments dla poszczególnych serwisów. Na podstawie:
    • name: prepare .env image: python:3.7.5-alpine3.10 commands:
      • python -m pip install --upgrade pip
      • pip install dump-env
      • dump-env -t ./backend/config/.env.template -p 'SECRET_' --strict=SECRET_DJANGO_SECRET_KEY > ./backend/config/.env environment: SECRET_DJANGO_SECRET_KEY: from_secret: SECRET_DJANGO_SECRET_KEY SECRET_SENTRY_DSN: from_secret: SECRET_SENTRY_DSN
        
        Serwisy powinny posiadać w swoim pliku .env tylko te secrety, które potrzebują. Serwis `frontend` nie powinien widzieć `secret environments` od serwisu `backend` itd.
  1. Rozmieszczenie plików konfiguracyjncyh oraz plików związanych z Dockerem jest niejasne. Każdy serwis powinien mieć swój osobny folder, gdzie znajdowałaby się konfiguracja.
    • [ ] Podziel aplikacje na następujące foldery: backend, frontend, nginx, mobile, deployment (wszystkie utilsy dla CI/CD, pliki .env, skrypty CI/CD powiązane z całą aplikacją), w środku folderów z serwisami folder /docker z wszystkimi skryptami/Dockerfile potrzebnymi dla serwisu
    • [ ] Wszędzie zmienić nazwy web na backend oraz web-app na frontend
    • [ ] Refaktor docker-compose: depends_on, restart policies, environments przenieść do .env, gdzie się da, networks ustawić odpowiednio.
    • [ ] Pozbyć się  deployu produkcyjnego za pomocą docker-compose
    • [ ] Napisać nowy deploy na podstawie budowania obrazów dockerowcyh oraz AWS; frontend pliki statyczne na S3, backend, nginx, celery na ECS, redis i baza w osobnych serwisach itd. (szczegóły do przemyślenia)

Stary PR z próbą refactoru: https://github.com/skygate/skyexpo-matchmaking/pull/113