shuryak-blog — блог, написанный с применением микросервисной архитектуры, построенной на фреймворке go-micro.
Основная задача разработки блога — изучение мной микросервисной архитектуры.
Для разработки проекта была выбрана Monorepo-структура, поскольку:
- Я единолично занимаюсь проектом;
- Для всех backend-сервисов используется один язык программирования — Go;
- Учитывая вышеперечисленные моменты, становится проще разделять кодовую базу между сервисами.
Монорепозиторий в проекте реализуется следующим образом:
shuryak-blog/
├── cmd/
│ └── название_сервиса/
│ ├── main.go <- точка входа в сервис
│ └── plugins.go <- плагины go-micro
├── internal/
│ └── название_сервиса/
│ ├── app/
│ │ └── app.go <- основная функция для запуска сервиса
│ ├── config/
│ │ ├── config.go <- Go-структура конфигурации сервиса
│ │ └── config.yml <- YAML-конфигурация сервиса
│ ├── ... <- специфичные для сервиса пакеты
│ └── Dockerfile
├── pkg <- Межсервисные пакеты
├── proto/
│ └── название_сервиса/
│ └── *.proto
└── k8s <- YAML-манифесты Kubernetes
Основной код сервисов хранится в каталоге
internal
вместоservices
для большей совместимости с Standard Go Project Layout.
- So you need to wait for some Kubernetes resources? — о том, как дождаться готовности ресурсов Kubernetes;
- Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication — всё, что нужно знать про распределённую аутентификацию и авторизацию с помощью JWT-токенов;
- Contract between Skaffold and Custom Build Script — переменные окружения для взаимодействия Skaffold с пользовательским build-скриптом.
- ...