Welcome to Learning Go
Learn Go by building a REST API and a Command Line Interface (CLI).
We will also cover:
- Unit testing
- Authentication & Authorization using OAuth2
- CI/CD with Kubernetes, Helm and Flux
Are you ready?
Introduction
- What are we going to build?
- Prepare the development environment
- Please do a Go tour
- What you will learn about Go (checklist)
Iteration 1 - library and API skeleton
- Start the project for the Library
- Add programming/uuid generator function the Library
- Start the project for the API
- Add programming/uuid generator function to the API
- Unit tests in the API using mocks
Iteration 2 - basic CI/CD
- GitHub actions running locally
- GitHub actions for the Library
- Running the API using a container
- GitHub actions for the API
Iteration 3 - consolidate concepts by adding more features
- Add programming/jwtdebugger to the library and API
- Add finance/currency-converter to the library
- Add finance/currency-converter to the API
Iteration 4 - deploying to kubernetes
Iteration 5 - code improvements
- Change API file structure
- Improve API error handling
- Add structured logs to the API
- Make Gin use structured logs
Iteration 6 - authentication & authorization
- Configure Amazon Cognito as an OAuth2 server
- Add authentication to the API
- Add authorization to the API
Iteration 7 - implementing the CLI
- Start the project
- Introduction to Cobra
- CLI building blocks: configuration
- CLI building blocks: authentication
- CLI building blocks: IO streams & testing helpers
- Add the configure command to the CLI
- Add the programming/uuid command to the CLI
- CI/CD for the CLI
- Challenge: Add the programming/jwtdebugger command to the CLI
- Challenge: Add the finance/currency-converter command to the CLI
Iteration 8 - increasing test code coverage
- How to check the test coverage?
- Increase coverage in the Lib
- Increase coverage in the API
- Increase coverage in the CLI
Conclusion
- What's next?