Description
In this course, you will learn :
- How to structure and organize your microservice.
- Domain Driven Development.
- Hexagonal architecture applied.
- MySQL integration and configuration.
- Integrate Cassandra DB in your microservices.
- Elasticsearch integration and configuration.
- Logging to standard output and log files.
- DAO pattern implementation.
- How to build, publish and use a custom Go library.
- Testing all the layers of your application.
- How dependencies work in Go.
Syllabus :
1. Creating our projects: Users API
- Create projects in Github
- HTTP frameworks
- Basic application structure: MVC pattern
- Starting from our domain
- How to structure our domain persistence
- Working with dates
2. MySQL integration
- Configure MySQL client in Go
- How to insert rows
- How to read rows
- How to handle MySQL errors
- How to update rows
- How to delete rows
- How to find rows
3. Fixing the mistakes we made
- How to marshal structs
- Services structure
- No logging system
4. Creating our projects: OAuth API
- OAuth authentication
- Domain Driven Development
- DDD - Starting with the domain
- DDD - Project structure
5. Cassandra integration
- Cassandra Go client
- How to insert, get and update records
- Tune our get session implementation
6. Making the authentication work
- Authenticating users
- Generating access tokens
- Different requests for the two APIs
7. Golang libraries & dependencies
- Creating a shared OAuth library
- How dependencies work: go modules
- Defining transitive dependencies
- Creating a shared utils library
8. Creating our projects: Items API
- Application structure: MVC & gorilla/mux
- Configure our mux router
- Introduction to Elasticsearch
- Adding ElasticSearch client
- Index documents in ES
- Moving our logger to the utils library
- Improving our errors library
- Dependencies: Using modules in all projects
- How to get documents by ID
- Searching documents in ES
- Homework: Add delete and update endpoints
9. Testing
-
Testing our application: OAuth client
10. Docker
-
Use Docker to ship our Items API