Micro Starter Kit

screenshot of Micro Starter Kit

Cloud Native GoLang Microservices - gRPC, GraphQL

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.