APLICACIÓN- ‣ Registro e inicio de sesión (usuarios) ‣ Crear e incrementar (contadores) ‣ Obtener estadísticas de uso (informes) ‣ Sistema de widgets (widgets) ‣ Sistema de facturación (facturación) ‣ Y más…
(ADRIÁN) ‣ Adrián Pérez ‣ a.k.a. @adrianpgl or @aperezg ‣ Desarrollador @ Europcar Mobility Group (Ubeeqo) ‣ Es su primera charla en una conferencia ‣ Aunque ya ha dado varias formaciones
(JOAN) ‣ Joan López de la Franca ‣ a.k.a. @joanjan14 or @joanlopez ‣ Desarrollador @ Cabify (Maxi Mobility) ‣ Ponente júnior ‣ @GopherConRu ‣ @gopherconuk
(FOGO) ‣ Nacimos a principios de año ‣ Tenemos +500 seguidores ‣ Hemos redactado +40 artículos en el blog ‣ Impartimos formaciones a empresas ‣ Grabamos un curso en CodelyTV ‣ Killgrave: mock server -the easy way-
ARQUITECTURA (CONTRAPRESTACIONES) ‣ Paquete único (WTF!?) ‣ Pérdida de visibilidad de variables ‣ Difícil de testear ‣ Difícil de ejecutar ‣ go run main.go http.go counters.go users.go utils.go ‣ go run *.go ‣ go build -o counters && ./counters
DE PAQUETES (CONTRAPRESTACIONES) ‣ Variables globales (= estado global) ‣ Control de concurrencia complejo (nivel paquete) ‣ Código altamente acoplado ‣ Difícil de testear ‣ Complejo de extender
to go fast, if you want to get done quickly, if you want your code to be easy to write, make it easy to read” DESDE EL CAOS AL DOMAIN-DRIVEN DESIGN EN GO
ESTA ARQUITECTURA ‣ El código relacionado con el dominio puede crecer mucho y volverse inmanejable. ‣ Varias representaciones de dominio pueden producir representaciones muy confusas. ‣ Los servicios de aplicación no tienen unos límites muy definidos.
APLICACIÓN / ├─ counters │ ├── … ├─ users │ ├── … ├─ kit │ ├── … ├── go.mod ├── go.sum ├── … * los ficheros de test han sido obviados para simplificar el diagrama
el concepto “Shared Kernel” de DDD ‣ Lo podemos aplicar tanto: ‣ Entre módulos ‣ Entre bounded contexts ‣ Seguimos nombrando a los paquetes por lo que proveen, no lo que contienen: ‣ utils, common, etc ‣ strings, ulid, etc KIT
‣ Seguir a los maravillosos chicos de Friends of Go ‣ (Si aún no habéis empezado con Go): ‣ A Tour of Go: https://tour.golang.org/ ‣ Curso de Codely: https://pro.codely.tv/ ‣ Colaborar con la comunidad: ‣ https://github.com/trending/go ‣ https://github.com/friendsofgo/killgrave