Skip to content
louay_amor~
2025client work

EasyBooking

I put service discovery config and packaging firstA scalable system is set up before feature fun starts

problem

The challenge: keeping a distributed hotel booking platform clean as it scales multiple services and features

I use configs and tools that prevent future headaches and broken builds

  • API gateway for smooth routing of users and reservations
  • Used Helm with Kubernetes for organized deploys
  • Live monitoring with Prometheus Grafana logs
  • CI for every service keeps code healthy

pipeline

decisions

  1. Package Kubernetes releases with Helm rather than hand-crafted YAML one at a time.

    tradeoffMore templating complexity per chart.

    outcomeEvery microservice release is reproducible from one chart rather than drifted manifests.

  2. Centralize OAuth and config in their own services.

    tradeoffTwo extra deploy units plus a runtime dependency between gateway identity.

    outcomeA new microservice doesn't reimplement auth or config. Its responsibility stays its service domain.

  3. Measure each service's Sonar quality gate in CI.

    tradeoffSlower CI on every commit.

    outcomeCoverage and code-smell regressions are blocked before merging, not detected in code review.

results

services
6
gateway, OAuth, user, room, reservation, config server
runtime
Compose
full stack, one command
packaging
K8s + Helm
GitHub Actions, Sonar gate

stack

Backend

  • Spring Boot
  • Java
  • OAuth 2
  • Config Server

Orchestration

  • Kubernetes
  • Helm
  • nginx

Operations

  • Docker
  • Prometheus
  • Grafana
  • Grafana Loki

Delivery

  • GitHub Actions
  • SonarQube