Marc’s Architectural Principles for Uber Clone

  • Microservice-based
    • All functionality should be deliverable as headless
    • Docker/Kubernetes
    • Lagom
  • Easily Scalable
  • Resilient
  • Able to Orchestrate
  • Inter-module communications
    • Akka?
    • What events come out of every service
    • Data in Thrift/Protobuf format
  • Monitorable
    • Logging to one stream
    • Log analytics
    • Dynamically control logging
  • Performance and Profiling
  • Secure
  • Real-time/Streaming
    • Data should be streamed as Protobuf/Thrift binary
  • Favor push over pull
  • All interesting events should be published
  • Reactive
    • New events trigger an action
  • Feature Toggling
  • Cloud-enabled
  • Mobile-enabled
  • Compelling visualization and UX
    • Google Maps
  • APIs for everything
    • Swagger support
    • API Gateway
    • Python and R support
    • Support 3rd-party apps and integration
      • Envisioneach component in a marketplace or in NuGet
  • Cross-platform
  • Workflow-enabled
  • Decision support
    • Data should go into a data lake
    • Machine Learning