Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developing Microservices Frictionlessly

Developing Microservices Frictionlessly

My sprint talk for London Microservices User Group on 2 November 2016.

https://www.meetup.com/London-Microservices-User-Group/events/234613236/

Paris Kasidiaris

November 02, 2016
Tweet

More Decks by Paris Kasidiaris

Other Decks in Programming

Transcript

  1. A look on our stack web: Django / Celery auth:

    Flask event_watcher: Python proxy: NGINX / Ceryx db: Postgres cache: Redis
  2. How we build microservices We do tests/CI/CD on Docker We

    run production on Docker We orchestrate with Docker Compose
  3. Run Docker and the whole stack in a VM Ditched

    Slow to download images and production data Host ↔ VM ↔ container volumes are a mess Not easy to get feedback (we are a remote-first team)
  4. Develop locally and mock services Ditched Does not run the

    whole stack ➡ wild bugs appeared Slow to download images and production data Not easy to get feedback (we are a remote-first team)
  5. We layed down the requirements to fix this Fast and

    easy to build dev environments Containers should be accessible via the internet Working offline should be an option
  6. Solution Set up a dev server containing all Docker images

    Connect local Docker client to dev server's Docker sync.sh: Sync local workspace with dev server via Unison watch.py: Expose containers via NGINX a er docker start
  7. Takeaways Fast and disposable environments Resource saving (common build cache

    and images) Accessible containers via a URL Offline-fallback since we use Docker Compose
  8. Technical challenges Authentication of multiple users with one Docker server

    Synchronization of local files to the proper remote directory Dynamic allocation of URLs for each container port Thanks ! sourcelair/ceryx