There is no cloud.
It's just someone else's computers.
Cloud native Technologies
empower to build and run
scalable applications
in modern, dynamic environments.Cloud Native Computing Foundation
go-start
go install github.com/cosmtrek/air@latest
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
func main() {
http.ListenAndServe(fmt.Sprintf(":%v", os.Getenv("PORT")), r)
}
github.com/kelseyhightower/envconfig
// Application Configuration
type Config struct {
Port string `envconfig:"PORT" default:"8080"`
}
func main() {
http.ListenAndServe(fmt.Sprintf(":%v", c.Port), r)
}
if err != nil {
http.Error(w, "Oops, that went wrong!", http.StatusInternalServerError)
return
}
schneider.vip/problem
if err != nil {
problem.New(
problem.Wrap(err),
problem.Status(http.StatusInternalServerError)
).WriteTo(w)
return
}
# 1. RPS Builder
FROM golang as builder
WORKDIR /app
ADD . /app
RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o build/rps .
# 2. RPS Container
FROM gcr.io/distroless/static
COPY --from=builder /app/build/rps /usr/bin/
EXPOSE 8080
ENTRYPOINT ["/usr/bin/rps"]
github.com/hellofresh/health-go/v5
.
// Register Health Check
h, _ := health.New(health.WithChecks(
health.Config{
Name: "db",
Timeout: time.Second * 2,
SkipOnErr: false,
Check: healthPgx.New(healthPgx.Config{
DSN: config.Db,
}),
},
))
// Register Health Check Handler Function
r.Get("/health", h.HandlerFunc)
offer
services:
- type: web
name: backend-go
env: go
plan: free
rootDir: backend-go
buildCommand: go build -o rps .
startCommand: ./rps
spring-start
https://backend-spring.onrender.com/api/v1
./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=myorg/myapp