goa, une approche innovante pour le développement de microservices en Go.

Raphaël Simon -- Golang Paris, 13 Décembre 2016

goa

Raphaël Simon – Chef Architecte, RightScale

Difficultés de la Conception d'API

goa

Le but de goa est de permettre:

Design d'API avec goa

goa permet de décrire les paramètres de l'API avec un DSL Go. La description contient:

À peu près équivalent à Swagger mais avec la commodité de Go.

Exemple

var _ = API("adder", func() {
    Title("The adder API")
    Description("A teaser for goa")
    Host("localhost:8080")
})

var _ = Resource("operands", func() {
    Action("add", func() {
        Routing(GET("add/:left/:right"))
        Description("add returns the sum of the left and right parameters in the response body")
        Params(func() {
            Param("left", Integer, "Left operand")
            Param("right", Integer, "Right operand")
        })
        Response(OK, "text/plain")
    })
})

goagen

goagen transforme le DSL du design en plusieurs produits de la génération automatique.

Usage:
  goagen [command]

Available Commands:
  app         Generate application code
  bootstrap   Equivalent to running the "app", "main", "client" and "swagger" commands.
  client      Generate client package and tool
  commands    Lists all commands and flags in JSON
  gen         Run third-party generator
  js          Generate JavaScript client
  main        Generate application scaffolding
  schema      Generate JSON Schema
  swagger     Generate Swagger
  version     Print the version number of goagen

Flags:
      --debug           enable debug mode, does not cleanup temporary files.
  -d, --design string   design package import path
  -o, --out string      output directory (default ".")

Use "goagen [command] --help" for more information about a command.

Génération de Code (1)

Le mécanisme de génération supporte la nature itérative du design d'API:

Génération de Code (2)

Le code généré inclu:

Le code utilisateur est donc centré sur la logique spécifique au problème résolu par le service plutôt que sur la plomberie nécessaire à son fonctionnement.

goa et le Monde Des Microservices

L'utilisation d'un DSL Go a plusieurs conséquences intéressantes:

goa, Le Projet

Rejoignez-nous!

Thank you

Use the left and right arrow keys or click the left and right edges of the page to navigate between slides.
(Press 'H' or navigate to hide this message.)