The framework for the creation of microservices, written in Golang. This package is implemented using clean architecture principles. A good article on implementing these principles in Golang: http://manuel.kiessling.net/2012/09/28/applying-the-clean-architecture-to-go-applications/
git clone ginhub.com/claygod/microservice
cd microservice
make build
make run
Go to localhost:8080
in your web browser
git clone ginhub.com/claygod/microservice
cd microservice
make build
make version
OR
git clone ginhub.com/claygod/microservice
cd microservice
make build
micro --version
Code in /services/gateways/gatein/gatein.go
/
welcome handler/healthz/ready
for SRE/healthz
for kubernetes/readyness
for kubernetes/metrics
prometheus metrics/swagger
generate swagger fo api/piblic/v1/bar/:key
public route (example)
Caution
Requests from an external balancer should be forwarded not to the root of endpoints, but to /public
.
Then service routes with metrics and other private information will be inaccessible to external users.
Build and run main.go
Example requests:
- localhost:8080/piblic/v1/bar/one -> {"Data":"three"}
- localhost:8080/piblic/v1/bar/secret -> response 404
- localhost:8080/piblic/v1/bar/looooonnngggoooooggkkkeeyyyyyyy -> response 400 (not valid)
- localhost:8080/healthz/ready -> minute first 5 sec - 503 after 200 (for example!)
- localhost:8080/healthz -> minute first 5 sec - 503 after 200 (for example!)
- localhost:8080/readyness -> response 200
- localhost:8080/swagger -> json-swagger
After starting the application, the first time route /swagger
is called,
the swagger file config/swagger.yaml
is regenerated.
Add to ENV export GATE_IN_TITLE=Yo-ho-ho!
👍
ang open in browser http://localhost:8080/
🎉
Important
Distribution of architectural entities by layers
Path /domain
Path /usecases
Path /service
Path /app , /config and core
The default configuration file:
config/config.yaml
Specify in the command line another file:
yourservice -config other.yaml
github.com/claygod/tools v0.0.0-20211122181936-bab1329a2e3d
github.com/dsbasko/go-cfg v1.2.0
github.com/google/uuid v1.3.0
github.com/julienschmidt/httprouter v1.3.0
github.com/pborman/getopt v1.1.0
github.com/prometheus/client_golang v1.11.0
github.com/savaki/swag v0.0.0-20170722173931-3a75479e44a3
sigs.k8s.io/yaml v1.4.0
github.com/BurntSushi/toml v1.3.2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/caarlos0/env/v10 v10.0.0 // indirect
github.com/cespare/xxhash/v2 v2.1.1 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.22.1 // indirect
github.com/golang/protobuf v1.4.3 // indirect
github.com/joho/godotenv v1.5.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.26.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
golang.org/x/crypto v0.19.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/protobuf v1.26.0-rc.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- Use environment variables in configuration
- Add support for metrics
- Input validate
- Swagger 2.0
- "version" command line
- Use protocol gRPC
Microservice does not claim the laurels of the only true solution, but on occasion, I hope, will help you create your own micro-architecture of the service, becoming the prototype for future applications.
Tip
If you like or are using this project to learn or start your solution, please give it a star. Thank you!
GNU GENERAL PUBLIC LICENSE Version 3
Copyright © 2017-2024 Eduard Sesigin. All rights reserved. Contacts: [email protected]