Hi everyone
This is a test project about implementing a library
some technologies have been used in this project
Kafka as messages broker
gRPC Go implementation of gRPC
PostgreSQL as database
Jaeger open source, end-to-end distributed
tracing tracing
Prometheus monitoring and alerting
Redis Type-safe Redis client for Golang
Echo web framework
make docker_dev
make docker_dev_down
make k8s_install
make k8s_uninstall
.
├── api_service
│ ├── agent
│ │ ├── agent.go
│ │ ├── application.go
│ │ ├── auth_client.go
│ │ ├── http_server.go
│ │ ├── logger.go
│ │ ├── mertic.go
│ │ └── tracing.go
│ ├── app
│ │ ├── app.go
│ │ ├── command
│ │ │ ├── create_article.go
│ │ │ └── create_user.go
│ │ └── query
│ ├── cmd
│ │ └── api
│ │ └── main.go
│ ├── domain
│ │ └── dto
│ │ ├── create_article.go
│ │ ├── create_user.go
│ │ └── user_login.go
│ ├── metrics
│ │ └── metrics.go
│ └── ports
│ └── http
│ └── v1
│ ├── create_article.go
│ ├── create_user.go
│ ├── http_server.go
│ └── user_loign.go
├── deploy
│ └── test-microservice
│ ├── Chart.yaml
│ ├── templates
│ │ ├── deployment.yaml
│ │ ├── _helpers.tpl
│ │ ├── mysql-deployment.yaml
│ │ ├── mysql-py.yaml
│ │ ├── NOTES.txt
│ │ └── tests
│ │ └── test-connection.yaml
│ └── values.yaml
├── docker
│ ├── api_service.Dockerfile
│ ├── library_service.Dockerfile
│ ├── message_service.Dockerfile
│ └── user_service.Dockerfile
├── docker-compose-local.yaml
├── docker-compose.yaml
├── go.mod
├── go.sum
├── library_service
│ ├── adapters
│ │ ├── article_gorm_repository.go
│ │ └── pg
│ │ ├── article_repository.go
│ │ ├── article_repository_test.go
│ │ └── sql_queries.go
│ ├── agent
│ │ ├── agent.go
│ │ ├── application.go
│ │ ├── auth_client.go
│ │ ├── http_server.go
│ │ ├── kafka.go
│ │ ├── logger.go
│ │ ├── mertic.go
│ │ └── tracing.go
│ ├── app
│ │ ├── app.go
│ │ ├── commands
│ │ │ └── create_article.go
│ │ └── queries
│ │ └── get_article_by_slug.go
│ ├── cmd
│ │ └── library
│ │ └── main.go
│ ├── domain
│ │ └── article
│ │ ├── article.go
│ │ ├── mock
│ │ │ └── repository.go
│ │ └── repository.go
│ ├── metrics
│ │ └── metrics.go
│ ├── ports
│ │ ├── dto
│ │ │ └── article_create.go
│ │ ├── http
│ │ │ ├── create_aricle.go
│ │ │ ├── get_article_by_slug.go
│ │ │ └── http_server.go
│ │ └── kafka
│ │ ├── config.go
│ │ ├── consumer_group.go
│ │ ├── create_article_consumer.go
│ │ └── utils.go
│ └── proto
│ └── kafka
│ ├── kafka.pb.go
│ └── kafka.proto
├── Makefile
├── message_service
│ ├── adapters
│ │ └── pg
│ │ ├── email_repository.go
│ │ └── sql_queries.go
│ ├── agent
│ │ ├── agent.go
│ │ ├── application.go
│ │ ├── kafka.go
│ │ ├── logger.go
│ │ ├── mertic.go
│ │ └── tracing.go
│ ├── app
│ │ ├── app.go
│ │ ├── commands
│ │ │ └── create_email.go
│ │ └── queries
│ │ └── get_email_by_slug.go
│ ├── cmd
│ │ └── message
│ │ └── main.go
│ ├── domain
│ │ └── email
│ │ ├── email.go
│ │ ├── mock
│ │ │ └── repository.go
│ │ └── repository.go
│ ├── metrics
│ │ └── metrics.go
│ ├── ports
│ │ └── kafka
│ │ ├── config.go
│ │ ├── consumer_group.go
│ │ ├── create_email_consumer.go
│ │ └── utils.go
│ └── proto
│ └── kafka
│ ├── kafka.pb.go
│ └── kafka.proto
├── migrations
│ ├── 01_create_initial_tables.down.sql
│ └── 01_create_initial_tables.up.sql
├── monitoring
│ └── prometheus_docker.yml
├── pkg
│ ├── auth
│ │ ├── auth_client
│ │ │ └── grpc.go
│ │ ├── auth.go
│ │ ├── authorize.go
│ │ ├── middleware.go
│ │ └── tls
│ │ ├── files.go
│ │ └── tls.go
│ ├── converter
│ │ └── converter.go
│ ├── db
│ │ └── postgres
│ │ └── db_conn.go
│ ├── kafka
│ │ ├── client.go
│ │ ├── config.go
│ │ ├── constants.go
│ │ ├── consumer_group.go
│ │ ├── mock
│ │ │ └── producer.go
│ │ ├── producer.go
│ │ ├── reader.go
│ │ └── writer.go
│ ├── logger
│ │ ├── applogger
│ │ │ └── applogger.go
│ │ └── logger.go
│ ├── redis
│ │ └── redis.go
│ ├── tracing
│ │ ├── jaeger.go
│ │ └── utils.go
│ └── utils
│ └── validator.go
├── README.md
├── test
│ ├── kafka1
│ │ ├── consumer.go
│ │ └── producer.go
│ ├── main.go
│ └── message_example
│ └── producer.go
├── tls
│ ├── ca-config.json
│ ├── ca-csr.json
│ ├── client-csr.json
│ ├── keys
│ └── server-csr.json
└── user_service
├── adapters
│ ├── user_gorm_repository.go
│ ├── user_gorm_repository_test.go
│ └── user_memory_repository.go
├── agent
│ ├── agent.go
│ ├── application.go
│ ├── check_alive.go
│ ├── grpc_server.go
│ ├── http_server.go
│ ├── kafka.go
│ ├── logger.go
│ ├── mertic.go
│ └── tracing.go
├── app
│ ├── app.go
│ ├── command
│ │ ├── create_user.go
│ │ └── create_user_test.go
│ └── query
│ ├── get_profile.go
│ ├── get_profile_test.go
│ └── get_token_user.go
├── cmd
│ └── user
│ └── main.go
├── domain
│ ├── auth.go
│ ├── mock
│ │ └── repository.go
│ ├── repository.go
│ ├── user.go
│ └── user_test.go
├── metrics
│ └── metrics.go
├── ports
│ ├── grpc
│ │ ├── grpc_handlers.go
│ │ ├── grpc_server.go
│ │ └── grpc_server_test.go
│ ├── http
│ │ ├── handlers.go
│ │ └── http_server.go
│ └── kafka
│ ├── config.go
│ ├── consumer_group.go
│ ├── create_user_consumer.go
│ └── utils.go
└── proto
├── grpc
│ ├── users_grpc.pb.go
│ ├── users.pb.go
│ └── users.proto
└── kafka
├── user_kafka.pb.go
└── user_kafka.proto