A design driven approach for building microservices in Go