This project is a Go skelethon to be used to develop new microservices. I'm still not sure what I'm gonna do with this in the future; the goal for now is to finish it and write down all the topics to be learn in order to understand what takes to build a Go microservice. Enjoy!
- 1. Receive an answer from an endpoint
- 2. Run tests locally
- 3. Run app locally
- 4. Submit aplication to container registry
- 5. Improve configuration
- 6. Create router
- 7. Expose CRUD endpoints
- 8. Certify server health
- 9. Get parameters from request
- 10. Isolate service logic
- 11. Store data
- 12. Enable admin permissions
- 13. Monitor requests
- ?. Prevent other services from explosion
- ?. Enable profiling
- ?. Improve response performance
- Receive an answer from an endpoint
- Understanding the HTTP server implementation
- Run tests locally
- Table driven tests
- httptest
- Makefile
- go mod
- Run app locally
- N/A
- Deploy application
- Container registry
- GitHub Actions
- Docker
- YAML
- lint
- Improve configuration
- Configuration files
- Viper
- YAML/TOML/JSON
- flag package
- Create router
- Mux
- Handler
- Why and how to build a router
- Obtain route variables
- Expose CRUD endpoint
- CRUD
- Lock
- HTTP methods, requests, responses
- Certify server health
- Healthcheck
- Get parameters from request
- Query params
- Isolate service logic
- Interfaces
- Mocking
- Store data
- Repository pattern
- Dependency injection
- KVS
- Enable admin permissions
- Admin route
- Middlewares
- Monitor requests
- Observability
- Tracing
- Logging
- Metrics ?. Enable profiling
- pprof
- profiling ?. Implement an actual database ?. Improve response performance
- Cache ?. Authorization/Authentication ?. Stability patterns
- Context
- Circuit Breaker
- Debounce
- Retry
- Throttle
- Timeout
- Singleflight ?. Concurrency patterns
- Fan-In
- Fan-Out
- Future
- Sharding