๐ฑ Cloud Native Application Development is one way of speeding up the building of web applications using microservices, containers, and orchestration tools.
This repository shows how to build a Dockerized RESTful API application in Go for a simple bookshelf.
- The idiomatic structure based on the resource-oriented design.
- The usage of Docker, Docker compose, Alpine images, and linters on development.
- Healthcheck and CRUD API implementations with OpenAPI specifications.
- The usage of Goose for the database migrations and GORM as the database ORM.
- The usage of Zerolog as the centralized Syslog logger.
- The usage of Validator.v10 as the form validator.
- The usage of GitHub actions to run tests and linters, generate OpenAPI specifications, and build and push production images to the Docker registry.
Name | HTTP Method | Route |
---|---|---|
Health | GET | /livez |
List Books | GET | /v1/books |
Create Book | POST | /v1/books |
Read Book | GET | /v1/books/{id} |
Update Book | PUT | /v1/books/{id} |
Delete Book | DELETE | /v1/books/{id} |
๐ก swaggo/swag : swag init -g cmd/api/main.go -o .swagger -ot yaml
Column Name | Datatype | Not Null | Primary Key |
---|---|---|---|
id | UUID | โ | โ |
title | TEXT | โ | |
author | TEXT | โ | |
published_date | DATE | โ | |
image_url | TEXT | ||
description | TEXT | ||
created_at | TIMESTAMP | โ | |
updated_at | TIMESTAMP | โ | |
deleted_at | TIMESTAMP |
- DB: 241MB
- API
- Development environment: 655MB
- Production environment: 28MB ; ๐ก
docker build -f prod.Dockerfile . -t myapp_app
myapp
โโโ cmd
โ โโโ api
โ โ โโโ main.go
โ โโโ migrate
โ โโโ main.go
โ
โโโ api
โ โโโ router
โ โ โโโ router.go
โ โ
โ โโโ resource
โ โโโ health
โ โ โโโ handler.go
โ โโโ book
โ โ โโโ api.go
โ โ โโโ handler.go
โ โ โโโ model.go
โ โ โโโ repository.go
โ โโโ common
โ โโโ err
โ โโโ err.go
โ
โโโ migrations
โ โโโ 00001_create_books_table.sql
โ
โโโ config
โ โโโ config.go
โ
โโโ util
โ โโโ logger
โ โ โโโ logger.go
โ โโโ validator
โ โโโ validator.go
โ
โโโ .env
โ
โโโ go.mod
โโโ go.sum
โ
โโโ docker-compose.yml
โโโ Dockerfile
โ
โโโ prod.Dockerfile
โโโ k8s
โโโ app-configmap.yaml
โโโ app-secret.yaml
โโโ app-deployment.yaml
โโโ app-service.yaml