Overview
micro-starter-kit is a microservices starter kit for Golang that aims to be developer-friendly. It provides a set of tools and features to help developers build scalable and maintainable microservices using Go.
Features
- Monorepo: All microservices share code within a single repository.
- gRPC microservices with REST Gateway: Provides support for building microservices with gRPC and a REST gateway for easy integration with other services.
- Input Validation with protoc-gen-validate (PGV): Automatically generates input validation code based on protobuf message definitions.
- Config: Offers pluggable sources, mergeable config, and safe recovery options.
- Customizable Logging: Allows for easy customization of logging configuration.
- CRUD Example using GORM: Demonstrates how to build a CRUD application using the GORM ORM library.
- GORM code gen via protoc-gen-gorm: Provides code generation for GORM ORM from protobuf definitions.
- Dependency Injection Container: Provides a dependency injection container for managing dependencies in microservices.
- multi-stage-multi-target Dockerfile: Supports building multi-stage Docker images for different target platforms.
- One Step build/publish/deploy with ko: Simplifies the build, publish, and deployment process with the "ko" tool.
- BuildInfo with govvv: Generates build information with govvv for easy debugging and version tracking.
- Linting with GolangCI linters aggregator: Helps with code quality by running various linters on the codebase.
- Linting Protos with Buf: Provides linting support for protobuf files using the Buf tool.
- CICD Pipelines with GitHub Actions: Offers preconfigured CI/CD pipelines using GitHub Actions.
- Kubernetes Matrix Deployment with Kustomize: Simplifies Kubernetes deployment with the Kustomize tool.
- Add k8s healthchecks with cmux: Supports adding Kubernetes health checks using cmux.
- Feature Flags (enable/disable with zero cost): Provides a feature flag system for enabling or disabling features at runtime.
- Observability: Offers observability features for monitoring and tracing microservices.
- Service Mesh with Istio: Provides support for using Istio as a service mesh for microservices.
- GraphQL Gateway with gqlgen, rejoiner, gqlgen: Supports building a GraphQL gateway for microservices using gqlgen and rejoiner.
- Graph-Based ORM ent: Offers support for using the ent ORM library in microservices.
- Switch to Bazel Build: Allows for switching to the Bazel build system for building microservices.
Summary
micro-starter-kit is a developer-friendly microservices starter kit for Golang. It provides a comprehensive set of features and tools for building microservices using Go, including support for gRPC, REST APIs, input validation, config management, logging, ORM libraries, dependency injection, Docker, CI/CD pipelines, Kubernetes deployment, feature flags, observability, and more. With its monorepo structure and customizable components, micro-starter-kit aims to simplify the development of scalable and maintainable microservices in Golang.