Dropbox/Google Drive Clone with Go

Overview

Challenges & Solutions

  • Generating random unique number between 1 - 1000 per multi upload parts: Using recursion I traversed through a map containing previously generated/stored values to check if the current generated number already exists and if it does I regenerate another to ensure the numbers are not generated twice.
  • Running Database Migration in CMD without running application server: Using Go command-line flags package, I programmed arguments and options which enables me to check if a user is trying to run the application server or DB migration via the command line.
  • Service Discovery: Using Docker-compose and consul, I ensured each service is running on the same network and each has the `CONSUL_HTTP_ADDR` environment variable created during containerization. Each service has a service registration function which registers them in consul for other services to be able to send requests and receive responses. This pattern of communication is only being used by the API Gateway service as I aim to use gRPC for service to service communication.

Technologies/Tools

  • Languages: Golang
  • Web Frameworks: Gin
  • Databases: AWS DynamoDB
  • Tools: Git, Docker, Consul, Redis, Grpc
  • Cloud Services: AWS (S3)
  • Problem-solving and algorithmic skills
  • Architecture: Hexagonal Architecture

I Learn, Build And Level Up.