SlideShare uma empresa Scribd logo
1 de 36
GraphQl
O que é, onde e
porque usar?
1
PHP
C++
JAVA
HTML
Agenda
○ Definição
○ Problema
○ Pontos importantes
○ Estrutura
○ Implementação
○ O que ninguém fala
○ Conclusão
2
My name is
Paula
Porque estamos
vendo este tema?
5
6
Definição
“
GraphQL é uma linguagem de consulta
para APIs e um tempo de execução para
atender essas consultas com seus dados
existentes.
7
História
O Facebook começou um projeto interno com o
intuito de resolver o problema de do feed de
notícias, que antes é renderizado em HTML e
eles tinham o desafio de construir nativamente no
IOS, porém se debateram com a quantidade de
dados que eram relacionadas a esta área da
aplicação, daí surgiu o GraphQL, que em 2015 foi
anunciado na RubyConf e disponibilizado para a
comunidade.
8
Especificaçã
o
Hoje o GraphQl é um especificação, ou seja,
outros projetos como o Falcor da Netflix seguem
este mesmo modelo.
O público-alvo desta especificação não é o
desenvolvedor do cliente, mas aqueles que têm
ou estão ativamente interessados ​​em construir
suas próprias implementações e ferramentas
GraphQL.
9
O que não é…
Não está vinculado a nenhum
banco de dados ou mecanismo de
armazenamento específico.
11
Problema
12
Microserviços
UX Rest
Mobile
Under-fetching
Múltiplas chamadas que o cliente tem que fazer
para montar uma experiência para o usuário, isso
se resume em várias idas e voltas no
servidor(round trips) para se ter os dados
necessários.
/ofertas
/preferencias
/produtos/{id}
/produtos/{id}/ofertas
Over-Fetching
Recebimento de dados
desnecessários para um contexto do
cliente.{
"type": {
"color": "#808080",
"order": 0,
"name": "Blackout",
"description": "No production deployments during this
blackout period",
"ghostedDate": 0,
"id": "00000000-0000-1100-0000-000000000011",
"version": 0,
"dateCreated": 0
},
"startDate": 1413384452,
"endDate": 1413394452,
"isOneDay": false,
"releases": [],
"description": "Optional description",
"name": "Example event",
"id": "4f47d1fe-f25a-4f9e-a91a-c8fb0668e99a",
"version": 0,
"dateCreated": 1421692929323
}
Versionamento e
manutenção de API
Necessidade de cada cliente, aparece a
necessidade de modificação dos recursos
oferecidos, isso requer versionamento e gestão
dos recursos existentes e novos.
Falta de
independência entre
front e backend
Front-end sempre fica dependendo do backend
para evoluir a experiência visual das aplicações.
Payload
Problemas com payloads em plataformas mobile
visto que muitos clientes acabam usando
aplicativos mobile e com internet muitas vezes
bem limitada, afetando a experiência e melhoria
no consumo da banda da aplicação.
Alternativa
Rotas específicas por URL: ainda teria a questão
da dependência, quando sua experiência mudar o
serviço rest deverá ser alterado também. Isso
considerando que você terá rotas específicas
para cada cliente de cada view, nem sempre uma
aplicação web e mobile tem os mesmos dados
para a mesma tela, isso gera duplicidade que por
sua vez gera mais dificuldades na hora de dar
manutenção.
19
Pontos Importantes
O que temos?
Único endpoint
Fortemente
tipado
o cliente obtém
os dados que
realmente vai
utilizar
Quem utiliza?
Airbnb, Atlassian, Audi, CNBC,
GitHub, Major League Soccer,
Netflix, Shopify, The New York
Times, Twitter, Pinterest, etc..
21
https://graphql.org/users/
Querys
Mutati
ons
Types
Schemas
22
Type
23
tipo Starship {
id : ID !
nome : String !
length ( unidade : LengthUnit = METER ) : Float
}
● Int: Um inteiro de 32 bits assinado.
● Float: Um valor de ponto flutuante de precisão dupla assinado.
● String: Uma seqüência de caracteres UTF-8.
● Boolean: trueOu false.
● ID: O tipo escalar de ID representa um identificador exclusivo
Query e
Mutation
type Query {
recentPosts(count: Int, offset: Int): [Post]!
}
type Mutation {
writePost(title: String!, text: String!,
category: String) : Post!
}
25
Implementação
1
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-spring-boot-
starter</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-
tools</artifactId>
<version>5.2.4</version>
</dependency>
type Post {
id: ID!
title: String!
text: String!
category: String
author: Author!
}
type Author {
id: ID!
name: String!
thumbnail: String
posts: [Post]!
}
# The Root Query for the application
type Query {
recentPosts(count: Int, offset: Int):
[Post]!
}
# The Root Mutation for the application
type Mutation {
writePost(title: String!, text:
String!, category: String) : Post!
}
Salvar :
Onde -> /resources
Como -> .graphqls
Type
Query
Beans
GraphQLQue
ryResolver
GraphQLMut
ationResol
ver
Mutation
Query
1. <campo>
2. is<campo> – type Boolean
3. get<campo>
public List<Oferta> getObterOfertas() {
return ofertasRepository.findAll();
}
30
31
O que ninguém fala
CASE
- Client - server
- Cache com Apolo
- Versionamento tão
complexo quanto com
REST
- Certeza 1 - atrapalha o
desenvolvimento mobile
- Certeza 2 - melhora a
experiência do cliente
Ubiratran Soares
32
Pontos de
atenção
● Implementar um cache
simplificado com o GraphQL é
mais complexo do que
implementá-lo no REST.
● Limitação dos recursos
● Governança
33
“
“Com grandes poderes vem grandes
responsabilidades”
35
Thanks!
Any questions?
/paula-macedo-santana-dev @psanrosa13 psanrosa13/demographql

Mais conteúdo relacionado

Mais procurados

Técnica de Levantamento de Requisitos: etnografia
Técnica de Levantamento de Requisitos: etnografiaTécnica de Levantamento de Requisitos: etnografia
Técnica de Levantamento de Requisitos: etnografiaMessias Batista
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções javaAntonio Oliveira
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Leinylson Fontinele
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersDaniel Maia
 
OCL: Object Constraint Language
OCL: Object Constraint LanguageOCL: Object Constraint Language
OCL: Object Constraint Languageelliando dias
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilTiago Antônio da Silva
 
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoessamuelthiago
 

Mais procurados (20)

Técnica de Levantamento de Requisitos: etnografia
Técnica de Levantamento de Requisitos: etnografiaTécnica de Levantamento de Requisitos: etnografia
Técnica de Levantamento de Requisitos: etnografia
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
UML - Diagrama de Pacotes
UML - Diagrama de PacotesUML - Diagrama de Pacotes
UML - Diagrama de Pacotes
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Banco de Dados 2: Controle de Concorrência
Banco de Dados 2: Controle de ConcorrênciaBanco de Dados 2: Controle de Concorrência
Banco de Dados 2: Controle de Concorrência
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Teste baseado em modelos
Teste baseado em modelosTeste baseado em modelos
Teste baseado em modelos
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 
OCL: Object Constraint Language
OCL: Object Constraint LanguageOCL: Object Constraint Language
OCL: Object Constraint Language
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código Fácil
 
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoes
 

Semelhante a Graphql - o que é, onde e porque usar?

GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIsDaniel Varanda
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidAdriano Rocha
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftJuliana Chahoud
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Rodrigo Stefani Domingues
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias WebRildo Pragana
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileVitor Albuquerque
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonRicardo Longa
 
Entity Framework 4
Entity Framework 4Entity Framework 4
Entity Framework 4CDS
 
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosHUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosPhilippe Sevestre
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
HTML5, CSS3 e o futuro da web
HTML5, CSS3 e o futuro da webHTML5, CSS3 e o futuro da web
HTML5, CSS3 e o futuro da webDiego Pessoa
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Alex Guido
 

Semelhante a Graphql - o que é, onde e porque usar? (20)

GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIs
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento Android
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento android
 
Intro à Graphql
Intro à GraphqlIntro à Graphql
Intro à Graphql
 
Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias Web
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG Mobile
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
 
Entity Framework 4
Entity Framework 4Entity Framework 4
Entity Framework 4
 
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosHUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
 
PostgreSQL e GraphQL
PostgreSQL e GraphQLPostgreSQL e GraphQL
PostgreSQL e GraphQL
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
HTML5, CSS3 e o futuro da web
HTML5, CSS3 e o futuro da webHTML5, CSS3 e o futuro da web
HTML5, CSS3 e o futuro da web
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Grails
GrailsGrails
Grails
 
AppPrint
AppPrintAppPrint
AppPrint
 

Mais de Paula Santana

Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaPaula Santana
 
Como começar quando se esta começando?
Como começar quando se esta começando?Como começar quando se esta começando?
Como começar quando se esta começando?Paula Santana
 
Desvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosDesvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosPaula Santana
 
Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Paula Santana
 
Como começas quando se está começando
Como começas quando se está começandoComo começas quando se está começando
Como começas quando se está começandoPaula Santana
 
Refatoracao de codigo
Refatoracao de codigoRefatoracao de codigo
Refatoracao de codigoPaula Santana
 
Desenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosDesenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosPaula Santana
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaPaula Santana
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantesPaula Santana
 
Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaPaula Santana
 
Como uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherComo uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherPaula Santana
 
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Paula Santana
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
4 revolucao industrial
4 revolucao industrial4 revolucao industrial
4 revolucao industrialPaula Santana
 
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaDesenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaPaula Santana
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcPaula Santana
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Paula Santana
 

Mais de Paula Santana (20)

Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de moda
 
Como começar quando se esta começando?
Como começar quando se esta começando?Como começar quando se esta começando?
Como começar quando se esta começando?
 
Desvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosDesvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventos
 
Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14
 
Como começas quando se está começando
Como começas quando se está começandoComo começas quando se está começando
Como começas quando se está começando
 
Refatoracao de codigo
Refatoracao de codigoRefatoracao de codigo
Refatoracao de codigo
 
Desenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosDesenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventos
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em java
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantes
 
Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações Java
 
Como uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherComo uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulher
 
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
4 revolucao industrial
4 revolucao industrial4 revolucao industrial
4 revolucao industrial
 
Conhecendo o Jnosql
Conhecendo o JnosqlConhecendo o Jnosql
Conhecendo o Jnosql
 
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaDesenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdc
 
Testes de contrato
Testes de contratoTestes de contrato
Testes de contrato
 
Spring Rest
Spring RestSpring Rest
Spring Rest
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
 

Graphql - o que é, onde e porque usar?