GRAPHQL NA PRÁTICA COM A BASE DIGITAL
Convidados
Gustavo Bremm
Tech Lead de Desenvolvimento Frontend @ Base.Digital
Mário Klein
Tech Lead de Desenvolvimento Backend @ Base.Digital
Se você é um(a) desenvolvedor(a) que deseja se atualizar sobre as tecnologias mais recentes em desenvolvimento de APIs, não pode perder este episódio do PPT Não Compila! Neste episódio, Wellington Cruz e Clauber Stipkovic conversam com Gustavo Bremm, Tech Lead de Desenvolvimento Frontend, e Mário Klein, Tech Lead de Desenvolvimento Backend, ambos da Base.Digital, sobre o uso do GraphQL na prática. Os especialistas discutem as vantagens do GraphQL em relação ao padrão REST, incluindo a capacidade de solicitar apenas os dados necessários e a fácil evolução de esquemas. Além disso, eles abordam a tecnologia de DataLoader do GraphQL, que permite melhorar o desempenho da API, reduzindo o número de requisições necessárias. Gustavo e Mário compartilham exemplos reais de uso do GraphQL em projetos da Base Digital, incluindo consultas complexas, uso de diretivas e gerenciamento de erros. Não perca a oportunidade de aprender com especialistas que estão usando o GraphQL e suas tecnologias relacionadas na prática. Acesse agora o episódio "GraphQL na prática com a Base.Digital" e esteja sempre atualizado(a) com as melhores práticas em desenvolvimento de APIs. Convidados: Gustavo Bremm https://www.linkedin.com/in/gustavo-bremm-b1750712/ Mario Klein https://www.linkedin.com/in/marioklein/ Conheça a Base Digital! https://base.digital/ Saiba mais sobre GraphQL: https://graphql.org/ Spotify: https://spoti.fi/3FnDnQs Youtube: https://youtu.be/kc0ZUh_-HcQ Outras plataformas: https://linktr.ee/pptnaocompila Acompanhe nas redes Instagram e Twitter: @pptnaocompila LinkedIn: https://www.linkedin.com/company/pptnaocompila Produção: Voz e conteúdo | https://www.vozeconteudo.com.br - @estudiosvoz
- Introdução e Comparativo Inicial
- Abertura do Podcast e Tema do Episódio
- Abordagem do Episódio
- Patrocinadores
- Apresentação dos Convidados
- Tópicos do Episódio e Transição
- O que é GraphQL?
- GraphQL vs. REST: Principais Diferenças
- Vantagens do GraphQL: Exemplo Prático
- Padronização e Experiência do Desenvolvedor
- Origem e Evolução do GraphQL
- Linguagem de Consulta e Similaridade com JSON
- Evolução de Serviços Web
- Experiência do Desenvolvedor e Ferramentas
- Visão do Backend e Definição de Esquema
- Caso de Uso: GraphQL em BFFs
- Resolução de Over-fetching e Mapeamento de Dados
- GraphQL e Consultas ao Banco de Dados
- Resolvers e Camada de Dados
- DataLoader para Problemas N+1
- Funcionamento do DataLoader
- Versatilidade do DataLoader
- IDs e Sistema de Tipos
- Atualização em Tempo Real da UI
- GraphQL e WebSockets
- Informações de Tipo e Geração de Código
- Evolução de Esquema e Depreciação
- Documentação e Introspecção do GraphQL
- APIs Auto-Documentadas
- Mensagem do Patrocinador (Cléber)
- Adoção do GraphQL e Maturidade de Frameworks
- Perspectiva do Gestor e Resistência à Adoção
- Maturidade do Framework e Escolha de Linguagem
- Desafios de Implementação e Boas Práticas
- Gerenciamento de Consultas Complexas e Relações Cíclicas
- Limites de Profundidade de Consulta e Controle de Desempenho
- GraphQL e Saúde do Banco de Dados
- GraphQL vs. OData
- Cache em GraphQL: Desafios e Soluções
- GraphQL Distribuído e Cache em CDN
- Tamanho do Payload e Queries Persistidas
- Funcionamento das Queries Persistidas
- Controle de Cache com Hashes de Query
- Cache de Dados Personalizados vs. Públicos
- Mensagem do Patrocinador (Vbz.io)
- Mercado e Talentos em GraphQL
- Treinamento vs. Contratação de Desenvolvedores
- Resistência Organizacional à Inovação
- Migração para GraphQL
- Convencendo Clientes e Valor de Negócio
- Nova Compreensão do Host sobre GraphQL
- Produtividade e Ferramentas Avançadas
- Primeiros Passos com GraphQL
- Recomendações para Iniciantes
- Encerramento e Próximos Passos
começar pelo básico O que é gravity eu acredito que talvez tenha coisas parecidas para haste talvez integração com Swag e tal mas assim é um monte de coisa que tem que construir em cima que o grafite dá de graça assim a implementação acaba sendo a mesma do Hast com exceção do Cuidado que tu pode ter quando tem alguma propriedade da tua entidade ou adentrando no gráfico que possa ser mais lenta né cara eu diria que se tu não documentar absolutamente nada numa feira FL ela já é 99% melhor que qualquer p e a partir do momento que a pessoa pega o a ideia por trás do negócio ela vai querer fazer aquilo ali muito bem muito bem meus amigos do PPT não compila estamos aqui para mais um episódio dessa bagaça mais um mais um mais um para conta mais um E hoje é dia de pauta técnica né Sempre é bom né daquela derretida no cérebro dá uma Relembrar os velhos tempos tirar poeira ali do do do do código e tal e hoje vamos falar aqui sobre grafiel ou grave que L na nossa língua da pátria mãe vamos falar aqui sobre todas as nossas dúvidas sobre toda a estrutura Como utilizar a tua vida e para falar disso hoje comigo eu estou aqui com os meus amigos da base digital base digital é uma produtora de software podemos dizer assim também uma produtora de uma software House que tem uma ampla experiência que em aplicações web de serviço graphiel etc e vão trazer aqui uma experiência deles compartilhar com eles aqui a experiência no uso da ferramenta né a base que hoje é da apoiadores aqui do PPT não compila né que faz os caras que ajudam essa bagaça acontecer se não fosse ele continuar merdiando aqui exatamente Então porque isso aqui no fundo eu tô mais desculpa a gente tomar cerveja né são esses caras que ajudam a gente a fazer essa parada acontecer e você aprender alguma coisa que você tá no carro tá na academia tá na empresa você aprender um pouquinho aqui o conteúdo né a base e outros patrocinadores aqui um abraço para eles para Cléber também que são nossos outros apoiadores para falar de grave que é hoje aqui com a gente eu tenho o Gustavo Brain que até que li de lá na base certo Gustavo isso aí muito obrigado pelo convite Eu que agradeço aqui a a disponibilidade e a gente vai sugar a alma de vocês pretendem de grafiato estamos preparados e aqui do meu lado esquerdo tal Mário Klein certo acertei mano o nome Eu tô bem bem treinado com nome difícil aqui para esse episódio que tive que fazer um curso de nome difícil o Mário que é technic de beckhand também lá na base digital certo Mário também pela pela disponibilidade aí de a gente vir falar um pouquinho as nossas experiências Eu que agradeço show de bola Vamos falar bastante coisa e aqui na aula esquerda o nosso velho conhecido já já estamos virando prata da casa já né tá no lado esquerdo já tá aqui Clauber stepcovic já nem erro mais o nome desse cara já já
aqui velho por isso que eu só apanho por isso que o papo vai ser de alto nível baixo nível Depende do ponto de vista Se você olhar é verdade depende é tudo uma diferença vetorial Exatamente isso aí vamos lá obrigado pela presença cara aqui a conversar com esses caras É isso aí então vamos falar aqui muito sobre especificar especificação técnica do grafield vamos falar sobre como que isso impacta o desenvolvimento do back end vamos falar como que isso impacta o desenvolvimento do Frontier como isso vai deixar o seu desenvolvimento mais ágil né que que essa especificação traz de coisa pronta para você né Quais são os casos de uso base já fala muita coisa sobre o grafiel então se você quer conhecer mais sobre essa especificação sobre essa linguagem fica com a gente bora [Música] [Aplausos] [Música] [Aplausos] começar pelo básico meus amigos O que é gravity
grafitel então é uma linguagem uma definição para leituras de dados em gráficos que permite a construção de apis mais complexas e que Tragam sentido entre a comunicação de Frontier de back ending legalmente quem tá pode estar nos ouvindo agora que tá acostumado com o desenvolvimento de piais e Web Services etc tá muito habituado ao padrão
[Música] muito bem definidos e com uma regra de negócio ele fixa para aquele tipo de retorno do Web service tá que você tá escrevendo qualquer diferença exatamente do padrão do grafitel que é o ali tem que [Música] estimula muito reuso e deixa o piloto ali mais enxuto né Tem uma versatilidade ali do grafiel que torna ele competitivo ali com o resto para alguns casos específicos Vocês conseguem dar uma detalhada Nisso porque que eu deveria utilizar para alguns casos assim ó na minha visão tá eles como você falou eles eles se competem porque não faz sentido Tu tem uma pi hash e grau falar em português mesmo [Música] Mas ela te traz alguns benefícios que em haste é possível ter mas não faz parte da especificação então eu vou dar um exemplo eu gosto de usar o exemplo do blog porque é um troço que todo mundo em algum momento da vida desenvolveu né então tem post e categoria qualquer curso que você fizer de linguagem de programação para web o último última lição é fazer um blog perfeito então
a vantagem é por exemplo eu tenho um Point que me traz a lista de posts então ele vai te trazer os dados né e o gráfico L você consegue dizer eu quero os posts mas dos posts eu quero somente o código o nome eu quero as categorias e da categoria né a gente vai entrando no gráfico aí já entramos da né da questão do gráfico do da categoria eu quero somente o id e o nome e assim por diante E aí dependendo da tua estrutura de dados ele vai se adentrando no gráfico e a grande vantagem que já tá na própria especificação você poderia ter um efeito semelhante desse com o resto só que você teria que criar um parâmetro para você incluir ele dentro do método do teu web service dentro do Mcqueen que fizesse esse filtro digamos assim e retornasse um dia isso mal para você com esses dados você economiza muito mais tempo com seus homens especificação É isso aí inclusive eu já trabalhei em apis hastes que tinham recursos eu diria assim próximos do que a gente alcança em grafite só que era algo específico daquela pi outras apis não seguiam esse padrão e então o grave não todas elas seguem aquele padrão para ti conseguir pegar trechos de dados né e sendo uma especificação né todo mundo que leia aquela especificação e entenda vai conseguir trabalhar e vai não vai ter uma curva de aprendizado para aquela peia específica você não tem que mandar um Postman para o cara falou aqui você coloca tal coisa com tal dado né E tem que ter o documento ainda né Eu recomendo e a cal para explicar para o cara como ele chama o método né até uma dúvida sobre grafl é essa questão de padronização deles nasceu junto quando nasceu dentro do Facebook ou depois quando entrou a parte mais comum nitida do desenvolvimento deles entrou mais essa questão de esquema de de organizar mesmo essa padronização deles eu é que assim eu não sei historicamente certo como ele nasceu porque eu aprendi aqui que nasceu no Facebook mas assim eu tenho eu posso estar errado mas a minha impressão é que o conceito nasceu lá mas o que eles usam lá não necessariamente é o que eles liberaram depois na comunidade tanto que é eu lembro comecei a trabalhar com graffel eu era os primeiros assim era bem algo assim recém tava sendo falado nos fóruns muita gente até a gente experiente nunca tinha ouvido falar até na época o mais próximo que se tinha de contato era a própria peido do Facebook então ele tinha aquela p.i deles lá que para que quem desenvolveu o aplicativo para Facebook naquela época esse momento da vida a gente fazia joguinho de comunidade no Facebook Na verdade eu conheci ela no Orkut fazia mesma papeizinha Fazendinha quem não lembra da Fazendinha E aí se tu trabalhou com essa p.i Você deve lembrar que ela conseguia pegar e pegando Campos né mas a palavra grafite É de fato ser selecionava os campos que você queria os filtros você já tinha um mecanismo de queir mas não era uma especificação com o nome né e o próprio a própria estrutura de cuere não era a mesma do da especificação que se tem hoje né tu simplesmente Tu pensava assim ah eu eu vou buscar Tais Campos ele te a própria interface lá do Facebook de deixava dizer quais eram os campos Mas tu via que ela ia completando um parâmetro resto que é diferente do que é hoje a especificação do gráfico interessante interessante Então pode ser que tem essa especificação amadureceu na comunidade de fatos né até interessante né de ver essa questão pelo menos que eu notei a proximidade com Jason ali né quando você está escrevendo olen porque me parece uma coisa meio de som meio Python que você não tem ponto e vírgula você não tem dois pontos né então não sei se Isso facilita né para quem tá começando Mas é interessante porque acho que fica um pouco intuitivo ali do que você tá fazendo ele lembra muito né Jason é quase um Jason sem os valores né como se fosse embora tenha consegue ter eles conseguem ter o campo Mas enfim vamos dizer assim o básico dele lembra muito um Jason sem os valores só com as chaves né Sabe o que eu acho maravilhoso nisso tudo e aí falando aqui como o provavelmente mais velho da mesa o dinossauro do microfone é como a gente vê cara como a gente teve uma evolução da verbosidade do serviço web né porque a gente quando eles falava de integração web a 10 anos atrás era wsdl com XML baixava 1 mega para montar uma tela né Graças a Deus esse momento acabou no rest a gente já tinha ali uma flexibilidade maior pelo de menor e mais curto né e agora com grave que é o cara é muito enxuto você usa bem é muito enxuto né especialmente para bobo você trabalhar aplicativos que você tem restrição de banda de é maravilhoso é essa questão de tá definir o que vai para cada vamos entrar adentrar o Fronte né Cada Fronte que necessitar de uma parte da pi ela vai definir aquilo que ela precisa e ponto né não vai vir mais dados como vem acaba vindo no resto né então Isso facilita até o entendimento do código depois porque tu não tem aquela massaroca de código onde tu tem um monte de Campos um monte de propriedades que usa uma ou duas aí e sem falar de todas as ferramentas que a gente consegue ter em cima dessa especificação né porque é para quem é desenvolvedor front-end você tem ali no Sei lá tá usando vs code fim qualquer ferramenta hoje já tem plugin né ele no teu próprio editor você já já o teu plugin já entende que tu tá num projeto grafite o esquema do endpoint que você apontou e quando você escreve uma Cory no seu código Heart sei lá o que for ele já já te disse Quais são os campos que tu pode buscar da tua pi e se tu colocar um campo que não existe ele vai dar erro já na compilação na máquina no cara mesmo é no caso ali Nesse caso a ferramenta e mais consegue fazer isso também não esse cheque na compilação também então assim a chance de tu fazer um erro de digitação no netpar por exemplo mesmo que tu use tá escrito e tu tem uma um Point resto faça-tipagem mas tu tem um erro de digitar errado ali não porque ele tá pegando dado dap já dá um autocomplete no próprio na própria ideia eu coloco o mouse em cima do campo ele já te se foi feita a documentação do lado da p.i ele já te dá a descrição do campo retorna isso isso isso assim é uma experiência de desenvolvedor é outro mundo assim eu nunca eu acredito que talvez tenha coisas parecidas para haste talvez integração com os febre e tal mas assim é um monte de coisa que tem que construir em cima que o grafite né Começando aqui no meu mundo assim né que é mais a parte backend né Tu não existe tu escreveu uma pi que ela não seja muito bem definida sim diferente do resto ah esse campo aqui nesse nesse retorno eu não vou mandar não tu vai ter que mandar aquilo que tu definiu no teu esquema do gráfico porque o Frontier Então tu não vai fugir da especificação que tu tem tu tem que seguir Porque então tudo se complementa para se auto documentar gerar menos erros então do ponto de vista de desenvolvimento sem falar também Existem várias ferramentas para o desenvolvimento back end né utilizando que depois a gente pode aprofundar um pouquinho mais mas que facilitam muito a vida até de como que tu vai dividir teu código como é que tu vai armazenato a informação no banco e o que tu quer voltar para frente por exemplo eu vejo assim que para o desenvolvimento do Beck né especialmente para Pains que são de entidades digamos assim cara é maravilhoso Eu praticamente não tem que desenvolver né Por exemplo [Música] eu odeio mais básico do mundo você vai fazer um getset ali de praticamente tudo né pois tem que implementar um monte de de métodos de acordo com o tamanho do retorno né por isso para o cara do bequinho de um saco fazer isso isso já vem na especificação maravilhoso e isso bem aplicado em outros retornos também papéis que que tem regra de negócio aí o negócio fica muito poderoso né você começa a aplicar de fato uma versatilidade uma flexibilidade do uso da pi já com uma regra de negócio por trás aí fica fica incrível eu passei por um case de arquitetura de concret fiel Tô vendo um bobo e cara para mim foi pelo contato alguns anos atrás trabalhava numa empresa que a gente tinha uma pi que ela era uma API na verdade tinha uma pi algumas apis né que ela fez de negócio a gente chama país completamente transacionais Sabe aquela payrast que você efetivo uma transação de negócio tipo fazer uma nova compra você tem aquele contrato muito bem definido e aquele retorno bem definido é tinha uma pena na frente que era um BFF especializado para o portal então Portal ele fazia o ele recebia ali as requisições do front fazia essa aplicação de regras e chamava a API de negócio né a pedir negócio não era ligado direto na front-end porque nós tínhamos questões que era exposto para parceiro também etc não tinha uma um serviço na frente para especializar por canal cara sabe como a empresa grande existem restrição de prazo de orçamento Vamos colocar essa mesma funcionalidade do portal no app utiliza o mesmo BFF cara lento lento porque para fazer o login no portal você tá leva esse sem restrição de banda uma tela gigante etc você carrega todos os dados do usuário na tela tudo bonitinho tal e o serviço de retorna isso não é muito mais reduzido Então você tinha um payload gigante que não precisava E aí dentro do app para você receber aquele piloto com um monte de informação que não precisava né E aí quando você ia ver o tráfico de rede da mesma experiência no app deveria ser muito mais enxuta tava com uma mesma tráfico de rede de um computador aí sustentável e começa a reclamação na loja talento não sei que lá consome muito dado fizemos um BFF em graphiel cara acabou os problemas justamente por essa versatilidade de você e impressionante é que a galera tem fica a dica aqui para quem tá ouvindo a gente né tecnologia nova e tal é muito simples e você consegue ter um uma entrega muito rápida porque tá praticamente tudo definido já na especificação né isso que tem hoje em dia então já é praticamente eu queria até só fazer um gancho ali de um problema que é bastante comum em API haste que é justamente ainda com os frames que tem hoje né onde tu pode retornar um objeto e ele vai ser realizar como como retorno para proteína e um problema bastante comum é quando tu tem o dado a entidade no banco mas tu não quer voltar tudo para o Fronte E aí tu tem que ficar fazendo os mapas Isso aí Isso é um saco é quem quem já passou por esse problema é um depara né um trabalho manual e vice-versa né o caminho inverso também é acontece a mesma coisa né e o gráfico é ele ele também te ajuda nisso né porque tu define lá por exemplo a entidade de usuário Ah eu não quero voltar eu peço para o front definição do esquema não tiver lá ao pé por mais que tu retorne a entidade para o Fronte dependendo da do framer ele vai simplesmente tirar fora não vai estar lá o front não vai conseguir consultar o pé por mais que o objeto que veio do banco tem a propriedade front não vai ter acesso então isso claro isso isso já nas ferramentas né nos frameworks e apis é quando ele faz o resumo automático né é isso é até uma dúvida que falando de backing Por enquanto é Como funciona essa questão das cores com o banco né porque a gente tem esse problema exatamente de Às vezes tem umas coisas que Retornam um negócio enorme meu aquário em si já demora para caramba que ela verifica n tabelas Então a gente tem uma cacetada de dados aí para para poder relacionar Mas como que isso funciona dentro do grafitel na parte do back assim ele que que gerencia essa questão das cores ou o próprio Framework ali junto com a sua aplicação da conta do recado que que eu vou dizer ali é um pouquinho mais pelo menos com as ferramentas que que eu trabalhei né a implementação acaba sendo a mesma do reste com exceção do Cuidado que tu pode ter quando tem algum alguma propriedade da tua entidade ou entrando no adentrando no gráfico que que possa ser mais lenta né então Esse sim é um Cuidado que o deve tem que ter né mas do ponto de vista é a mesma coisa de um resto porque bateu lá no back Angel ele tem que executar alguma coisa e aí ela deve que tem que ir no banco fazer o seu select lá e e provei o retorno né e isso é especificação e o framer o framer também claro com certeza tem hoje já ferramentas apis ou frameworks utilitários que conseguem adentrar até o banco né Tipo eu vou prover um crood de uma tabela específica sem que eu preciso desenvolver
a tecnologia em si defina isso né Isso é só facilitador
ele não expõe banco ele não o gráfico ele não sabe que existe um banco quem faz quem conecta implementos resolveres é o desenvolvedor aí se ele tá expor o teu banco Tem alguém fazendo isso no meio de campo que talvez tu não conhece né mas assim a parte de resolver os dados no back Candy eu pelo menos assim eu já vi duas estratégias uma é antes ele processar a curry ele já tinha os dados no formato então ele ele o que que ele fez ele pegou a kary transformou em ST E aí da do st ele conseguiu fazer uma Claire SQL depois só o gráfico l no caso só entrou no gráfico já tinha os dados ou em tempo real conforme ele executando aquário ele ia resolvendo dados que ele ainda não tinha tá então aí entra a questão dos dataloders né que a gente pode falar também posso dar alguns exemplos que é o dataloader quando esse executa em tempo real vamos dizer assim começando pela qual era Inicial E aí quando entra nas entidades conectadas é quase Imagina assim tu tem uma planilha do Excel vamos pegar ticker de ação por exemplo tem interromper talvez volta naquela ideia do blog só que daí acho que a gente consegue dar um exemplo assim do relacionamento Tá mas deixa eu falar dos ticker de ação depois eu entro no blog é o seguinte mas a gente tem uma planilha de excel e para cada tipo de assunto que é o preço real dela então em teoria Tu poderia sei lá fazer uma fórmula que para cada um ele bate no endpoint hest e pega o dado e bota no Excel certo só que isso tem que sentirdes ele vai fazer sem requisições e que o datalor nada mais é do que o mecanismo bem simples de implementar não tem nada demais que é o que em vez de quando se chama esse carrega digamos uma função carrega valor do tiker em vez de ele imediatamente pegado uma payrast ele espera um tempinho até ele acumular um buffer E aí ele chama todo mundo numa tacada só de várias requisições que vieram de Gravity de vários resolveres tentando resolver um determinado campo então no caso do blog post Vamos criar um exemplo que é o seguinte tu tem dados de acho que de categoria acho que post categoria né então um post pode ter n categorias e eu tenho n posts e cada um relacionado com ele categorias por exemplo eu posso retornar essa 10 posts e cinco deles possuem a categoria um aí de um por exemplo do banco tá o que que o que que o gráfico vai vai fazer para nós né junto com a ideia do dataloga quando eu eu for resolver tá post categoria são duas entidades relacionadas eu digo que num post eu tenho uma rede categorias tá quando ele for resolver a o relacionamento categoria ele vai chamar um método lá no back end do resolver pedindo Ó o meu parente é esse então o meu post né É esse aqui você faz o relacionamento das chaves e tal eu mostro isso aí e aí o que que vai acontecer a gente vai ter se vai vir vai chamar cinco vezes esse método e nessas cinco vezes vai vir o ai de um do relacionamento aí eu faria o que que a gente normalmente Faria select de cinco selects com a de um o datalolder vai fazer o quê ele vai segurar esse 5 e vai Executar tudo numa tacada monta uma cueca e só para não melhorar o banco é no caso ele vai fazer assim normalmente ele vai receber em vez de receber um valor ele recebeu uma rede de Vários valores e aí diz não em vez disso carregar umas categorias um dois um depois a dois depois um ou dois ou três ou quatro cinco seis e aí naquele select tu vai fazer normalmente usando o Win né aqueles ali e aí nisso tu consegue tu consegue quando tem relações muito complexas consegue fazer tudo numa chamada só Então deixa eu ver se eu entendi aqui você fez ali uma chamada e aí você tem o Rastro do do grafo Você tá puxando essas informações do back end fiz lá quero os posts de data x até data Y dentro da especificação eu defini o caminho do gráfico definindo relacionamento das entidades né então falou cara essa entidade pai que se relaciona com essa daqui provavelmente com esse campo etc né quando ele vai trazer isso para ele não fazer isso de forma unitária isso é muito comum no Framework de back end né você faz um alto a ele da do relacionamento entre os entre as entidades E aí você coloca a estratégia se você quer chamar um por um ou se você quer acumular isso e chamar de uma de uma vez né então esse data load ele faz esse papel né ele concentra [Música] o relacionamento entre todas as entidades para fazer uma chamada única no banco e fazer um retorno só porque senão seria um inferno para o dba né exato ele não é específico de banco tá ele é uma ferramenta que dos trato que você pode ter qualquer sorte tu pode usar um outro uma outra payrast como a questão é que ele é grupo é chamadas que aconteceram muito próximas em questão de tempo e ele faz um pequeno buffer E aí quando ele passou ali cada linguagem tem a sua forma de medir o tempo que ele vai aguardar né Aí ele esperou para pera aí agora já tem o tamanho que eu quero chama me dá os dados todo mundo aqui então se tu tiver um aperreste que aceita parâmetros por exemplo barra e de mas pode ser de vírgula outro aí de vírgula outro aí ele vai consegue usar um data logo então é uma abstração de um método que eu vou implementar de onde tá o dado né nesse exemplo que a gente deu eu poderia fazer uma para buscar essa informação né E aí ele acumula isso me passa os parâmetros para montar uma aquari só mas se eu tiver buscando essa informação numa outra p.i é só fazer uma implementação de que eu faço um outro equest e aí eu faria um request só ao invés de fazer várias equestres e uma outra coisa também legal que tem o dataloder é que assim ele identifica iguais então se eu chamei o dataloader três vezes pode um ele vai passar para backing uma vez depois ele sabe cada uma das chamadas de datalolder quem é que chamou com a de qual e distribuiu o retorno então eu carrego uma única vez no banco mesmo de né sim é por isso que para quem tá desenvolvendo porque ele como ele tem uma noção de entidades né Ele precisa saber tá mas como é que eu comparo por exemplo dois posts diferentes dois duas dois objetos do tipo post como é que eu sei que eles são diferentes certo porque eu posso pedir qualquer campo então no caso do front o ID ele é essencial para as ferramentas de front-end conseguirem depois saber que aquele post em outra Claire foi por exemplo atualizado ou numa mutação algo assim então Oi dia ele é essencial assim o Ed tem que ser tu não pode ter dois objetos com o mesmo aí de E do mesmo tipo naturalmente você não deveria ter né mas a gente vê de tudo por aí né e até fazendo um gancho aqui um pouquinho mais de implementação né entre os tipos primitivos do grafield tem wint float string ele é considerado um tipo primitivo
hoje em dia tem muitas curiosidade é tratado como primitivo Então isso é porque assim tem várias ferramentas do front que tratam que daí era que o Gustavo comentando que tratam o ID para fazer Cash para enfim tem o react então que também é do Facebook né E tá nessa nesse meio aí de ecossistema né de utilizar isso aí dentro das Ferramentas que nasceram no Facebook né então ele ele utiliza muito do ID para fazer a identificação E aí poder fazer um render do Front de um determinado componente porque em outra tela uma mutação alterou aquela entidade né Tem até um exemplo que vou dar um exemplo bem de prático uso mesmo assim que a gente já fez até em vários projetos que é usuário tá logado tem na plataforma qualquer tem teu nome lá no topo né bem comum e aí tem uma página de perfil que tem uma mutação onde você altera o seu próprio nome Então o que acontece nessa adaptação troquei meu nome como o grafite L quando ele fizer mutação Provavelmente tem que pedir aí de volta ele vai ver assim tá mas pera aí tu tá me retornando o usuário daí vou dizer um e o nome é x mas eu já tinha na velocidade o usuário foi de 1 e o nome era Y então ele não Na real ele junta ele normaliza todo os dados que vem da pi e coloca tudo como se fosse numa planilha de uma dimensão então quando ele recebeu aquele dia com um campo diferente ele atualiza e todo mundo que tiver escutando aquele dado vai renderizado Não Então vai trocar meu nome lá em cima sem eu fazer nada isso usando Digamos um Apolo da vida tá é isso não é coisa do grafiato é coisa das Ferramentas que a galera construiu da solução como é então tem essa vantagem de que se tu tem aquele dado sendo mostrado em qualquer lugar da tua aplicação e o ID dele é o mesmo que foi atualizado e veio algum Campo diferente ele atualiza e aqueles componentes são renderizados então para aplicações que tem muita coisa assim alterou aqui muda aqui sabe é fantástico assim até porque geralmente com rest você precisa fazer uma implementação super super complexa né usando o Web socket por exemplo para poder ter essa comunicação de Mão Dupla né de atualizando Provavelmente por baixo dos panos ali mas você já tá dentro do filme work já tá dentro dessa especificação né você não teria que fazer isso manualmente como um haste que você vai ter que ter um node rodando lá no servidor com a conexão via web soft no teu IP para poder ter essa conexão de Mão Dupla com Frontier isso até de hoje ainda é um Parto para fazer sem especificações que já implementam isso naturalmente né o gráfico l tem né ele tem uma especificação também para dados em tempo real com websocket mas isso que eu tô falando de ele atualizar automática é por causa não seria não estaria nessa nessa questão do absocket mas é o fato de que ele sabe que aquele dado é da entidade usuário e aí de um Então porque uma pay rest quando chama barra usuário por exemplo o teu retorno não diz que aquele aquele que entidade é do tipo usuário eu não sei que é o desenvolvedor implemente no gráfico nativo porque ele tem uma propriedade especial underline underline ele diz qual que é o tipo daquela entidade Então tu e mesmo em por exemplo Tu tem uma Claire graphiele que pode retornar vários tipos de dados diferentes vou dar um exemplo tu tem sei lá um campo de conteúdo rico que ele pode retornar ou imagem ou vídeo ou texto Ou isso ou aquilo então com esse Type name no próprio rei ele pode vir ó esse aqui é do Type imagens que do Type vídeos
não precisa fazer porque isso é faz parte da especificação né Ainda mais se você tiver usando time que você consegue criar as interfaces e tudo mais lá e possivelmente para tratar bem mais fácil Inclusive a gente usa umas ferramentas que ele gera as interfaces automáticas a partir sensacional é Outra experiência assim de desenvolvedor produtividade porque eu te falei antes ali ele se tu colocar um campo que está errado ah mutações muitas vezes tem o payload
[Música] até até uma fazendo um gancho aqui isso também é fantástico assim de um ambiente bem configurado né onde tu tem tu mexe com esquema E aí tu gera a tua interface por trás para daí depois fazer as implementações pensa assim ah eu tô criando uma mutação e na verdade desculpa eu tô alterando uma anotação que já existe estou botando um campo lá obrigatório não existia aquilo eu vou gerar interface do back end ele já vai entender que veio aquela informação obrigatória eu vou gerar no Frontier isso e se a mutação do Frontier não for alterada vai dar erro se ela não for ajustada para que ele para que ele pregar uma nova informação que passou a ser obrigatória a topi uma ideia aí tenha tem as funcionalidades que tu pode assim Ah tipo eu tô num projeto mobile onde eu não vou eu não vou conseguir atualizar todo mundo Ah então eu vou deprecar aquela mutação vou criar uma nova para atender aquilo ali a velha continua lá deprecada inclusive avisando pro Frontier que tá deprecado até uma dúvida agora que vocês estavam comentando de frontchange porque a gente que trabalha já há muito tempo tem essa questão do SWAG na documentação por exemplo que a gente tinha comentado lá atrás é Como funciona essa questão de documentação mesmo com o grave que você falou que pelo vsco hoje a gente consegue ter acesso Mas se não tiver conversa code tem algum outro ele disponibiliza um site como é que funciona é que assim ó o grave que ele tem um negócio chamado introspections que ele basicamente permite você perguntar para a própria pi Qual é o formato dela E aí quando tu faz essa pergunta para ela pegando usando a própria linguagem grafl ele vai te dar todos os escalares todas as colheres todas as entidades todas então assim a própria pate diz qual que é o formato dela e isso aí tem até por exemplo tem um site bem legal chamado graphiele Voyage não lembro acho que é algo parecido tá que ele ele te dá uma corzinha que na real ele tá pedindo entre aspectos roda na tua pi copia o que ela retornar e joga Nesse cara aí ele te joga todo o gráfico tipo modelo R da topi com todas as entidades as quais mutações o que que ela pode retornar quase um modelo relacional do que você tá expondo na pele né exato e outra ferramenta também que que é sensacional pro front e até para o beck desenvolver testar né é por exemplo ferramentas como grafite L né é assim que é um Postman web né como é que é o nome da outra não vou me recordar o nome assim mas nela nessas ferramentas a gente deixa aqui na descrição do episódio tá os links nessas ferramentas tu consegue fazer elas entendem Então essas Queres que que buscam o esquema e nela tu já puxa ali tem uma que é que é uma abinha ali tu puxa já vem a documentação se o desenvolvedor da mesma forma com Swagger documentou todo todos os seus types todas as queres todas as suas mutations vai vir a documentação da mesma forma tu vai conseguir ver os comentários vai conseguir saber o que que é que informação tem que passar e já te paga também né cara eu diria que se tu não documentar absolutamente nada numa feira fpl ela já é 99% melhor do que api E olha que isso é muito comum no mundo não documentar as coisas é o padrão né Nunca sobra tempo nenhum comentário nada ela ainda assim ela já é mais fácil de seguir a do que ela é autoplicável né digamos assim você consegue entender melhor sem ter cara e quem nunca né tem que ficar colocando aquele Aquele monte de anotação dentro do código para gerar um post uma bonitinho toda cara isso é [ __ ] que você tem uma especificação que é muito mais alto alto gerada né E muito mais autoesplicável muito mais fácil né isso porque a gente já tá numa fase por exemplo Oriente gera especificação com o anotation né que já é bom é muito mais fácil do que fazer especificação que a gente fazer antes do XML né e chegar no ponto agora que a gente consegue ter um padrão autoesplicável é maravilhoso
que já tem mais de 3 milhões de usuários em 30 países com 30 idiomas diferentes que tem trazido Soluções em blockchain criptomoedas e ativos digitais o objetivo da Clever é te dar liberdade financeira para operar nesse mercado de cripto então se você acredita nisso se você acredita nessa Liberdade você já Pensa como a Kleber vai conhecer os caras é clever.io estão contratando também pessoal para trabalhar com cripto com blockchain então se você tem interesse se você tem com respeito nessa área procura Cléber se você gosta de criptomoedas se você opera no mercado você precisa conhecer a Kleber precisa conhecer as soluções da Kleber então o endereço tá aqui embaixo no vídeo para quem não tá no YouTube é cléver.io Vai lá vai conhecer que realmente é o mercado sensacional eu queria perguntar para vocês a gente já deu uma aprofundada legal aqui na parte técnica como que vocês veem essa questão do da adoção do ele tem um propósito bem específico em chamada de dados digamos assim né obtenção de dados como que vocês usam de como critério adoção do Gravity ou não Ou vocês desenvolvem tudo em Gravity e não utilizam mais West Qual que é o critério para este tipo até aproveitar puxar o gancho da pergunta dele não só para questão de adoção no geral Mas como que vocês acham que tá essa questão de frameworks também para o desenvolvedor quando ele tá ali independente da linguagem por exemplo de back ending vocês acham que já tá bem difundido ou tem um outro Framework ali que dependendo da linguagem ele vai te facilitar mais na hora de saber infraestrutura tá nessa linguagem Então vou aproveitar porque espremer que é um pouco mais poderoso Então faz sentido usar cara vamos começar pelo pela definição da adoção assim Às vezes a gente usa resto a gente sempre se arrepende mas a gente eu diria assim que hoje se tu tem um desenvolvimento que ele é muito entidade não tenho porque não usar né claro isso no Mundo Ideal onde tu escolhe ferramenta escolhe linguagem escolhe sem restrições digamos assim né a que a gente sempre dá exemplo assim no Mundo Maravilhoso de quem escolhe quem a gente quer Claro quem sabe que no mundo de gestão de tecnologia existe tanto muitas outras coisas envolvidas né E nem sempre a gente adota ferramenta que gostaria né até vou dar um exemplo do que teve um gestor que a gente tinha sugerido grafite desde o início e ele disse assim ah mas na outra empresa que eu usei deu problema não não vai ser usado é aquela velho estigma né tipo o cara usa a tecnologia errado faz o projeto errado e aí a culpa é da tecnologia
Beleza cara mas tipo assim cada um Sei lá será que foi a tecnologia que foi o problema Claro tem os seus desafios né a gente tem que a gente tem que falar disso também né no podcast de uma pessoa vai achar que é tudo uma maravilha eu já faço o gancho com outra pergunta que assim de novo né eu falei do Mundo Ideal ali que é o aquele que tu escolhe tudo né a gente fez uma uma tentativa aí do bom e velho PHP Chegamos no momento meme do podcast onde a gente fala mal do PHP a gente cospe no prato que a gente comeu a vida toda tem sempre esse momento sempre tem esse momento um abraço meus amigos pega pesados e pode ser que eu venha ser massa que a gente vai fazer uma camiseta especial a gente fez uma uma tentativa aí de verificar como é que ficaria uma uma e funciona É desenvolvível mas assim eu diria que assim se fosse uma restrição na minha opinião não não vale a pena porque daí por exemplo o Framework ali que se trabalhava ele exigiam muito Eu voltaria a agora o segundo meme da do podcast né aos tempos antigos do que era um desenvolvimento em Java onde te exigia escrever muito código para fazer um Sim você tinha que escrever um livro em XML para expor uma pi no controle é uma maravilha nem tinha o controle se você tivesse o cuidado de fazer como mvc porque o padrão não tinha né Exatamente é tudo baseado bons tempo mentira mas esse ponto é interessante né a gente entender a maturidade do Framework da linguagem no padrão né porque senão você pode ter mais problema de implementação mas trabalho do que a própria especificação vai te oferecer de vantagem né a nossa experiência que a minha do gosto de de projetos em produção com escala tudo ainda é no ecossistema JavaScript né e nude no back angels então aí sim no Back And a gente já já fez duas tentativas uma desenvolvendo a ap praticamente na mão outra com framer e ambas assim apaixonantes né para desenvolver o back Angel assim sem explicação assim para quem passou por todos os [Música] dilemas assim os trabalhos de fazer uma peri-rest bem direitinho né E tu vê que pode fazer a mesma coisa de uma maneira um trabalho muito menor com esforço com esforço mas assim ó eu acho que eu comecei a assistir as primeiras projetos que eu fiz com grafiato e foi em 2016 por aí desde 2017 e cara assim eu vou te dizer que é muito fácil tu errar a estrutura de dados e tu acabar culpando a ferramenta então assim um cuidado que tem que ter é assim eu sei lá tá começando um projeto ninguém tem experiência que nós quer e querem fazer um projeto grande Cara vocês vão errar a mão assim o primeiro projeto então é hoje hoje a gente já pegou a mãe porque a gente começou com projetos menores as vezes um projeto que nem precisava ser graffel mas começa com um projeto mais simples para ti pegando pegando as nuances que de coisas que por exemplo já está acostumado com o resto e tu vai ter que meio que reaprender porque é outro paradigma né É pensa assim se tu tiver um uma situação ali onde tu mapeou um gráfico gigante aí com umas tá 10 relacionamentos e tu não teve o cuidado de tratar isso no teu back end né cara simplesmente pode derrubar o servidor justamente por não ter tido esse cuidado imagina tu tem lá vamos ao exemplo lá de usuário post né Aí eu tenho usuário relacionamento usuário com seus posts com as categoria e das categorias tu volta para os posts para entrar na relação cíclica aí né além da cíclica se tu botar ali Ah eu quero todos os posts de uma determinada categoria tu derrubou o banco trouxe todo o banco por favor assim a paginação é algo que tu ele não te força nada tu faz tu quer que nem reste só que o problema ali é quando tu tem essa relacionamento ciclo que comentou né a categoria da categoria pega o post que pega a categoria pega o posto de repente tu tem 5 bilhões de registros em teoria de que ele poderia retornar então ele ele tem esses alguns desafios assim que muita gente às vezes Ah não você tem isso então eu não quero sabe mas tudo é contornável cara mas eu imagino que isso seja muito semelhante ou quando você tá trabalhando com framer de Down que você tem que fazer essas essas restrições e fazer essa definição nas suas modelagens né então já faz um tempinho na minha época do PHP viu que quando a gente trabalhava com zende cara deixa eu limpar é tiro você tinha alguns Alguns artifícios ali para você mapear as entidades do banco etc geralmente no PHP era por palavra-chave no banco prefixo de Campo etc fazer aquela modelagem e você caia nesses mesmo problemas ali de cara se eu tenho ali uma referência cíclica eu tenho que definir ali no modelo da especificação do Down essa é uma entidade assim então aqui é o ponto aonde eu quebro a minha referência cíclica né ter eu tenho um pai que assim tem um filho que é assim né isso acontece muito por exemplo você vai fazer categoria dentro de categoria né onde é que quebra quem é o que é o ponto de chegada né Beleza quando eu chegar aqui numa categoria que não tem [Música] você coloca uma um caso de parada né porque senão você pode e eu imagino que os desafios sejam semelhantes né de você ter esse tipo de cuidado com a modelagem e como você direcionando esse é o ponto tu não vai ter um ponto de parada automático porque em teoria Tu poderia ter uma Claire onde tu pega o post que pega a categoria que pega o post não tá errado e e só que aí tem um nível que diz assim até onde é saudável eu até onde eu posso ir aí você definir isso aí tem algumas só que do jeito que o gráfico ele funciona não é tão simples tá então tem algumas ferramentas que tu pode fazer que é assim tem um tem uma ferramenta que eu já testei que ela funciona assim tu cria certas anotações usando tipo decoradores similar com decorador que tu diz para aquela que era Qual que é o peso dela Dá tipo uma calcular tipo peso e aí antes de executar com ele ele vai criar vai acabar entrando nesse nesse Loop ele ele tira uma uma ele consegue ver o pior dos casos e se for um passado um Trash Road que tu definir ele já vai executar porque cara uma aplicação normal não vai fazer uma corda daquelas entendeu outra opção é por exemplo nos próprios resolveres no contexto de execução e contando quando os registros já retornou esse passado um número tupara de retornar tem algumas coisas que pode fazer assim para mitigar mas mas ele esse problema é ele existe cara ele é um é sempre quando o pessoal fala de pontos negativos é primeiro um dos primeiros que aparece tá esse de poder fazer quireris cíclicas e tem mais um ainda que talvez tu nem vai fazer ciclo só que o grave que era numa Carey tu pode Tu pode ter várias cores entendeu Pode pedir os posts todas as categorias todos os posts todas as categorias com eles diferentes entendeu E aí tu pode sei lá atacar 5 mil ali e mesmo sem relação que fica lá e tu pode criar problema no banco e vai estourar a memória outra outra estratégia também para para impedir isso daí né É o cálculo que ele pode tem ferramentas que ajudam tu diz assim ao qual que é o grau de profundidade que tu pode descer na pena então a partir daqui aí eu desci um nível desse dois aí ali para aí antes de ele começar a executar ele já vai dar erro 19 tá pedindo níveis demais de forma diferente né sim porque eu poderia ter por exemplo pessoa endereço tem rua rua tem pessoa e aí você pode ter vários níveis nesse gráfico né então eu posso definir a quantidade de saltos que eu posso dar da recrussividade da Qual era mas ainda assim tem o problema das ele aceita várias coisas numa raiz só e aí isso aí não daí tu pode ter contracer control V milhares de vezes sim é por isso que eu na minha opinião tá ainda esse esquema de calcular o peso ainda para mim eu acho que é o mais eficiente assim porque daí ele resolve ele vai ele vai ver o pior dos casos quanto tempo ou quantos registros iria resolver e tu tem que ter um Trash Horto saudável do que tua aplicação aceita entendeu sim e Cara eu tô lembrando aqui de uma tecnologia que eu trabalhei no projeto que para mim começa a ficar Claro agora a diferença do graphiel que muita gente achava que era equivalentes vocês já ouviram falar no padrão do Open deita é um padrão rest que você implementa e aí sim é um caso muito específico onde você expõe sua base de dados né então é como se você criar seu serviço rest para você rodar com ela em cima do registro e dar aquela colher naquele banco e retornar os resultados e a Jason por exemplo isso é muito utilizado para as vezes tem algumas plataformas que são gerenciadas como serviço não exemplo seus fortes por exemplo você tem um dado persistido ali dentro não sabe onde né tá lá tá perdido e tá dentro da plataforma gerenciada como serviço Você tá cuidando lá esse dado custa caro lá dentro Às vezes precisa fazer um expurgo aí você cria lá uma base uma base mais Kelly coloca um serviço Open deita na frente conectado nesse cara e põe uma de point lá na plataforma aí como é o padrão já definido ele começa a levar os seus registros para lá vai fazer insert e select na sua base via-oeste mas aí vocês põe completamente a base só basta a lua exposta naquele usuário e senha para você fazer isso e muita gente que eu já conversei no passado comparam Gravity só que o depois dessa conversa aqui para ver mais com Evidente a diferença lá é um padrão rest para você expor o teu banco de dados e aqui você tem uma estratégia de desenvolvimento né como vocês falaram do dataloder você tem essa facilidade de conexão confronte e o que eu achei maravilhoso que eu não tinha essa visão tão afundo é o lado do back end porque a gente sempre quando pensa no Gravity para expor esse Gravity que eu acho que é mais complexo até do que só consumir porque consumir muito bonito você monta ali mágica acontece chega ali o dado Então essa estratégia principalmente de como manter o banco de dados saudável para o dba no infarto né É muito fácil causar um infarto com grafieldba né Se tu não fizer vidas estratégias escala muito rápido sim aí eu queria perguntar a bater 100 kg para cada requisição porque cara é muito fácil qualquer afirmourt de Down você infartar o dba pergunta para qualquer DVA principalmente a galera Trabalha com Java que que eles acham de rydernate por exemplo porque caras maravilhosas e tal se você não faz anotation corretos é a mesma coisa né então é todo firmware que tem as suas particularidades de boas definições e boas práticas para que você não deixa ele desgovernado né porque senão você vai ter o ruim vai ter um resultado ruim a batata dos relacionamentos esquece o laser e vai ficar uma beleza o dba vai ficar lindo tem um outro detalhe aí que acho que vale a pena mencionar que é cara como como a gente está falando o gráfico L ele responde no endpoint só que normalmente por padrão é barragraphiele como é que tu cacheia isso cara em um CDN e é um post ainda por cima Pô então tem algumas aí começa a entrar assim ah mas não quer dizer que não dá para fazer mas aí tu tem que trabalhar um pouco mais no que não aprs seria mais fácil entendeu então por exemplo tu tem como também com decoradores nas suas cores dizer qual é o cache que tu esperaria delas por exemplo essa aqui é sem segundos essa aqui não pode ser cacheada esse campo não pode ser cacheado e assim por diante E aí quando ele executa com ele ele vê ele faz um compilado de tudo daqueles dessas anotações e ver todo mundo pode ser cacheado pode Qual que é o tempo mínimo Ah esse 50 MS E aí ele te retorna O header que aquele aquele ali podia ser cacheado em 50 ml então tu consegue fazer só que dá um trabalhinho Extra que talvez em resto seria mais fácil E aí tem outras tem várias estratégias assim que tu trabalha em cima dele para resolver esses problemas Tá mas não são problemas que não tem solução tá ele só tu tem que Opa tem que dar uma tem que trabalhar um pouco em cima sabe até uma pergunta agora você falou de nuvem essa esse campo todo como funcionaria ele se fosse um grafitel distribuído para principalmente para essa parte de Cash dele porque provavelmente se você tem várias máquinas rodando o grafiel como que ele gerenciaria se o Cash tá nessa máquina e aí você recebe uma requisição em outra máquina na hora da distribuição por exemplo você tem um web Service cara escala mas ter réplicas desse pode como que eu eu todos estão no mesmo banco agora isso nunca fez aqui agora Gostei da pergunta Além da questão do Cash do acesso a banco também porque eu posso ter réplicas do próprio serviço E aí essa estratégia do estratégia do datalolder vai ficar indo individualizada por pode cada um vai receber uma requisição Eu não corro risco de estrangular o SBD ali só só uma observação isso que eu tô falando do desse controle de Cache que eu comentei agora é a nível de CDN é uma camada nível de nem chegar no servidor tá nível de enfim tá isso acho que só para deixar bem claro tá você vai tratar as entradas ali tem um tratamento especial para você fazer isso e saber se Repassa para exatamente no caso por exemplo tivesse usando um carro de front da WS por exemplo seria nesse nível ou seja o Cash de CDN e nem deixou né a requisição nem chegou no nosso é que tem um tratamento dos Campos que tem que ser diferenciado né não é estático como Noroeste tem também um negócio que consegue cachear tem uma estratégia Olha que interessante tá porque tem um outro outro problema que o pessoal reclama do grafite é o seguinte No resto eu posso chamar barrapost e tenho todos os posts que eu quero show de bola né requisição bem pequenininha no grafite L eu vou ter barragraf ql E aí um Jason com um monte de campo de post ou seja tem um payload um pouco maior de carregar isso aqui no resto era tipo assim barra post barra 1 Vamos dar um exemplo mas o grafitele eu vou dizer posts E aí vou pedir um monte de coisa do post tá aí o pessoal diz Nossa mas ele tá mandando pelo áudio muito grande que é desnecessário quem rege não tem aí tem uma estratégia que o que dá para fazer eu acho que o Apolo tem isso meio Inativo Já que é o Apolo é o Framework que ele que meio que dominou o mercado quando você fala engrafari tanto para front control véio quente tá para tanto react viu qualquer Framework tá essa não pergunta o que fazer se os frameworks ele tem implementos os dois lados ou se tem parzinhos tipo ah esse Framework no Fronte funciona bem com esse do Beckham Mas você já respondeu a pergunta que no caso do Paulo ele ele tem o Apolo Clint server já para fazer o o parzinho porque daí ele algumas coisas que não são especificamente da da definição do gráfico é ele dá o seu jeitinho de legal então o que que eles fizeram para resolver esse problema o front-end quando vai fazer a solicitar todo aquele Jason sem as chaves que a gente tava falando no início que é L ele manda achar 256 [Música] aí o servidor graff ql diz assim cara não conheço ele retorna um erro específico dizendo eu não conheço essa hash aí o Frontier aí o frontienge vai mandar a quirer completa e de novo a hash E aí o back ange Opa beleza agora eu tenho ele pode recalcular resto enfim tá talvez nem ter certeza se ele manda mesmo mas enfim então ele vai salvar essa Claire num seja na memória ou em um outro lugar e ter a resto então próxima requisição que vier com aquela resto ele já tem a cor entendeu então ali tu ganha esse essa questão que eu tava falando de ter que passar um pelo de meio grande no início e aí tem um outro benefício ter isso agora que tu tem só uma hashi para o controle de Cache fica mais fácil sim porque tu não precisa mais pedir um post pode ser um get e croquete de CDN ele pode usar essa hash para cachear a esse resto tem que ser gerado no front lá no frameworks 256 da string que tá solicitando sim mas aí ele lá no frontie para passar para CDN e o front já tem que calcular esse estado de 56 sim só que quem vai o teu back Angel ele pode ser que no primeiro momento ele nunca executou aí ele sabe que eu tenho que executar preciso disso um pouco mais elaborado né
depois nunca mais até nessa estratégia aí quando o back Angel vai devolver não conhecer aquário ele vai devolver para o front ele vai devolver com o header De Cash que ele calculou tanto definir as diretivas por propriedade da tua entidade dizendo assim a essa propriedade aqui eu posso encaixar por cinco minutos essa daqui eu posso encaixar por um minuto então se eu pedir as duas juntas o tempo mínimo é um minuto ele vai devolver no header o CDN vai encaixar por um minuto próxima refeição General mecanismo que eu tô pensando que poderia ser implementado no rest se você pega esse esse upload você faz uma chave desse pelo World você consegue fechar na CDN o resultado dele Independente de qual seja o que ninguém nunca pensou nisso antes
é porque quando você tem um piloto mais fixo é só compara piloto pelúdio mais curto né Ainda mais quando está falando de rest que você tá tudo no RL tem um retorno diferente e a chave a própria URL né você não precisa diferenciar pela por um por um chá [Música] entra daí aquela característica Inicial né de que dado que eu tô querendo no front Eu tenho esse dado cacheado no selênio não tem eu não precisei cachear antes Se eu não tinha se ninguém tiver requisitado sim aí já tem só abre até bom aí a gente entraria muito fundo aqui na apresentação né mas por exemplo dados que são independentes de sessão né Você pode ter por exemplo independente do usuário logado do Gustavo por exemplo dados que são públicos né eu posso usar o teste da tua requisição para devolver o resultado dele mais rápido pela própria CDN Exatamente porque é um da diagnóstico não depende sessão do usuário essa a possibilidade que o que o gráfico ele tem que não é nativo No resto né não que não desce para fazer mas teria que implementar na mão dito dizer o que é tipo tu pode dizer tipo a tipo propriedade a propriedade o que que pode ser cacheado e o quanto pode ser cacheado porque assim seu botei eu tenho lá ah eu quero as categorias Independente de na ideia do poço do blog independente as categorias Não não são criadas assim mesmo né então é independente mas se na queda das categorias eu botei alguma alguma pesquisa que é relacionado com meu usuário ele não vai encaixar porque naquela querem eu não posso cachear porque o from te pedir alguma informação que é relativamente Ah eu quero ver as categorias que eu favoritei então é uma cueca que não vai ser cacheado assim porque eles depende da sessão né exato com você que está vendo esse podcast da hora tá vendo um monte de problema aqui que a gente está colocando né e Quer uma ajuda aí na sua empresa faz o seguinte entra no site aqui da vbz que a gente pode te ajudar vem me versus nós somos uma empresa relacionada à arquitetura de soluções a modernizações de aplicações também atuamos na frente devops para ajudar vocês a serem extremamente ágeis então dá uma olhada no nosso site que vai estar aqui embaixo.io e lá você vai poder ver um pouquinho da nossa história do nosso profissionais e aproveitando se você for um profissional da área de tecnologia que tá a fim de trabalhar numa empresa legal monte de colega gente boa e tecnologia de ponta manda o e-mail para pipocar@gamers.io [Música]
depois eu queria perguntar para vocês um assunto um pouco mais estratégico Como é o mercado de grafial como que eu poderia aí já pensando como gestor de Tecnologia pensar em ter uma implementação dessa de grafield E aí pensando nos aspectos não técnicos né a gente falou aqui de quando adotar as vantagens frameworks etc mas aí eu tenho um projeto ali tô contratando time Gustavo vou selecionar a galera e tal tem que pensar em ter operação sustentação disso e tal como tá o mercado de grave que é hoje eu cara eu acho que ela pela assim para quem conhece e testou e pelas benefícios que ele traz eu acho que ele deveria ser mais popular aí eu não sei te dizer porque a minha visão é dentro da nossa empresa Então mas eu já trabalhei em outros lugares que o pessoal em 2019 isso trabalhando assim o mercado financeiro tá e na Europa ainda não era nem no Brasil pessoal em 2018/2019 estavam começando a falar e talvez implantar dos clientes assim bancos esse tipo de coisa eu já tava usando fazer três anos em produção dois três anos o pessoal tava recém começando cara e gente super mega Senior assim então hoje na base Vocês não tem problema de encontrar a galera fazer a capacitação e tal para trabalhar com a tecnologia nunca achou alguém que soubesse né é normalmente a gente que treina cara porque assim uma das coisas assim que que pelo menos assim na nossa nossa experiência é que o feijão com arroz a gente capacita rápido porque a partir do momento que a pessoa pega o a ideia por trás do negócio ela ela vai querer fazer aquilo em mim então ela vai se interessar ela vai porque os ganhos são no dia a dia né no que vai escrever de código quantidade de código que tu vai escrever os erros que tu vai evitar ignição no cara vai isso então a gente a gente acha que o feijão com arroz na nossa experiência lá na base é de de capacitar rápido mas buscar pronto eu não lembro de alguém que chegou pronto e eu acho que tem um outro problema aí que é o seguinte principalmente empresa que já quer começar de um projeto empresas mais maduras assim eu acho que eles têm medo de começar algo que eles não conhecem mas se eles não conhece as pessoas não tem experiência para começar E aí vira é uma bola de neve né com experiência mas também não querem começar Se ninguém tem experiência cara isso é o padrão O cara chega quero fazer transformação digital na minha empresa Legal conversar vamos adotar tecnologia aí tipo o cara quer fazer o dinossauro na Netflix tá ligado aí né Aí fica difícil então passa por essa transformação de você estar aberto a coisas novas né tanto para equipe quanto para as tecnologias toda a tecnologia tem a sua curva de aprendizado né você vai ter capacitar o time vai ter que só que tem que trazer aqui os benefícios de você ter esse tipo de modernização etc né se você querer falar que quer fazer uma transformação digital modernizar o negócio e não querer sair do combo amigão Vamos né até uma pergunta para vocês a questão de aí você já enfrentaram algum problema de alguma oportunidade na verdade de pegar um projeto do zero e ao mesmo tempo pegar algum que fosse uma migração de algo já estruturado porque por exemplo se eu pegar um banco de dados para migrar de um relacionamento não é tão complicado assim você faz mas acho que colocar uma tecnologia dessas ali num projeto que já tá funcionando que precisa de muita adaptação é muito complicado vocês acham que para os clientes acaba sendo mais mais problemático na hora de convencer eles a fazerem isso tipo você chegou lá o cara tava tudo com resto Falou mano Vou destruir tudo fazer vou arrancar tudo porque envolve Beck front né fazer isso agora no próximo podcast de como é que foi e isso é muito legal de você poder dar essa consultoria da melhor tecnologia né e provar na real ali tipo o benefício vai ser esse né então claro nós vamos abrir aqui mas Vocês encontraram algumas dificuldades utilizando o padrão que você agora consegue mostrar para o cliente que com esse outro com essa especificação do grafial você consegue ter uma um outro um outro tipo de retorno e um outro tipo de time etc porque no fundo cara quando a gente lida com cliente ou até empresa grande camada executiva etc quer saber de benefício prazo custo de em torno disso né Então porque a gente não vai conseguir explicar falar Tecnicamente para ele só que ao mesmo tempo tipo vai ter um benefício imediato Não cara não vai ter Mas pode ser que um bug que aconteceria não vai acontecer por causa da ferramenta E aí o teu serviço não vai ficar sei lá não vai ficar fora do ar ou então eu fiz uma mutação para enviar uma mensagem e aí essa mensagem tem que aparecer em três lugares diferentes por mais que a gente consiga dar o reflete né com reactcar querendo ou não vai vai bater lá no banco vai bater no servidor se tu retornar na mutação os dados que tu precisa atualizar assim eu só não é nativo o atualizar o Cash que daí sim quem faz é o Apolo né atualizar o Cash do front e daí aquele aquela planilha que o gosto falou né onde a gente tem o Type tal de tal tem essa informação Então é isso quem faz eu acho que se eu puder resumir aqui o que eu aprendi hoje para mim o grafield a minha visão de arquiteto generalista que não tem tanta profundidade dos assuntos era uma especificação de protocolo http e eu saio daqui desse Episódio entendendo que a gente tem uma especificação sim que passa pela camada http mas que ela é muito mais profunda porque eu tenho freemonts os dois lados que sabem o que fazer e isso dá uma produtividade absurda cara exatamente Então não é simplesmente ir Quest response como muita gente pensa e eu pensava né então não é simplesmente eu mandar um request flexível e ter um esforço flexível É também sobre isso mas o que eu faço como com isso combinando o jogo de um front-end com back-end com o contrato bem definido aqui como vocês vão falar pô alterei aqui isso daqui já me dá uma sinalização que eu tenho um Cash já no próprio Frontier que eu já sei onde tem o dado sendo exposto e eu já dou um refresh nesse cara cara isso é maravilhoso fora todas as ferramentas dele de desenvolvimento que dá produtividade que não necessariamente tão tipo assim que são reflexo de todas essas informações que tu tem né e cara vou dar mais um mais um exemplo aqui mas aí entrando um pouco no mundo do Apolo tá que enfim eles criaram muitas ferramentas em cima do grafitel e eles têm uma ferramenta Cara eu não sei Eles mudaram de nome várias vezes enfim Na época eu testei ela achei muito legal que é o seguinte no beckhand como cada resolver que resolve todas os campos que vai formando o gráfico eles essa ferramenta ela fazia um tracing então o que que ela te dava no final do dia tu abri um dashboard lá no site deles e ele te dizia quais pedaços dizendo pedaço do resolve ele tava levando mais tempo até perguntar essa questão de benchmark mesmo um cade de monitoração né então eu vou dar um exemplo tem uma que pega os posts que pega as categorias e também pega as imagens do post tá E aí essa quarenta levanta sei lá um segundo para retornar Tá mas o que que tá levando no segundo porque ele vai quebrar em várias coisas para executar né Então essa ferramenta ela te dizia cara é a parte da imagem que tá retornando sei lá 450 MS é bem legal bem bacana tu pega por exemplo essa questão aqui que eu gosto falou né que é é uma coisa bem comum aí de Cláudio né ah eu não eu não gravo mais a URL da imagem lá no S3 eu tenho que retornar amanhã uma url assinada por um por um determinado tempo Ah qual que é o tempo de assinatura dessa URL e isso eu tô retornando 10 posts entendeu E aí por que que é a mesma queerie que não pega imagem retorna rápido entendeu então isso vai depender aí tu consegue ver até no teu Fronte O que que tá chamando Qual que é a quire que tá pedindo a imagem para ver se realmente Ah eu preciso aqui a imagem eu tô renderizando a imagem ou pode ser mais à frente de um só post por vez [Música] cara muito bom muito bom tô eu tô com vontade de chegar aqui abrir o notebook dedo já coça para digitar né E aí puxando esse gancho queria perguntar para vocês aqui para a gente já partimos encerramento quem tá ouvindo a gente o cara que tá ali sofrendo a vida dele com react Spring boot do outro lado sempre vou falar que o grave que pode resolver a vida dele cara continua publicando os postmans dele Swagger os Postman da vida inteira começa como ele sai desse mundo de trevas e ele começa a ter uma integração nativa da api que ele tá expondo com a ideia dele como que ele começa a fazer essa integração mais transparente entre Frontier Candy por onde ele começa que que você recomendam senhor Cap Apolo documentação um cara como que o cara dá os primeiros passos nesse nesse mundo acho que antes do técnico a primeira coisa que eu diria é não tenta resolver os problemas do mundo vai no feijão com arroz vai no crude no básico ou vai no login faz o exemplo do blog faz faz o blog e faz um login no blog já vai passar por aquilo que os desenvolvedores passam em 80% do seu tempo né e deixou os 20% para se aprofundar depois não ia dizer começa com a documentação não ler lá acho que é ordem especificação cara sem implementação nenhuma só especificação da linguagem os escalares os primitivos o que que é mutação porque é pouca coisa em poucos minutos quem sabe começa a olhar os que linguagem Tu vai querer trabalhar vai ser Java vai ser script vai ser pega P vai ser o quê primeiro coisa eu quero entender que trata-se de uma especificação é uma linguagem né E aí ele vai entender que tipo qual é a o Framework implementa isso no mundo dele né porque o cara não deve Java não deve pegar P um node aí ele tem que legal entendi especificação que que eu tenho de Framework para isso né para o mundo que eu tô na experiência que eu tive eu trabalhei com trabalhei entre aspas no filme desenvolvido né mas o steck era Gravity Mas a gente não tinha um front-end e isso que eu acho legal porque e talvez a minha a minha visão era míope do que a gente falou aqui por causa disso porque eu tinha uma pi que era só de fornecimento de dados que o cara precisava ter uma versatilidade para ele poder dizer qual data que ele precisava receber ou não né então não tinha uma integração direto confronte etc uma coisa mais apei de dados simplesmente para receber esses dados né mas foi uma boa experiência uma coisa que eu gosto falou também quer para mim é muito interessante assim para quem tá começando é a especificação é pequena tu não vai perder 10 dias para entender uma linguagem nova assim exato porque não tem laço de repetição não tem cara é poucas coisas que tu pode fazer ali Ah tu consegue fazer fragmentos estender união de tipos OK mas assim para o feijão com arroz nem precisa entrar nessa parte então assim cara questão de alguns minutos ali ele é um pouquinho entender e assim quer começar com Apolo beleza começa mas tem a ciência de que ele tá fazendo coisas que que foi feito em cima do grafelle não que o grafel é aquilo entendeu ele tá facilitando ainda mais a sua vida tem que tomar cuidado de tipo assim nossa olha que legal o gráfico é l cacheia e faz isso não pera aí cara tu tá falando coisa melhor que não tá falando é uma coisa o cara falar que programa em Spring boot e não sabe programar Java né muito bom meus amigos agradecer aqui a presença de vocês essa aula de grave fiel como a gente falou algumas vezes aqui né e cara tenho certeza que a gente cobriu um bom aspecto aqui da linguagem ficou muita coisa Eu Aprendi muita coisa viu também principalmente como funciona no back end né que a gente está acostumado só consumindo front Java Então cara obrigado você que ouviu o episódio tá pensando em fazer um projeto que você entende que é grave procura a base digital que os cara tem muita experiência nisso cara tão treinando os caras lá em Gravity vai ficar aqui embaixo no link na descrição o link dos caras o e-mail para contato também e quem quiser trabalhar com vocês lá com grafiato tem um link de contato aí galera no site tem uma página de vagas lá mas desenvolvedora pode ser para mandar currículo sempre se você não conhece o café aprender fica aqui a dica e é isso né Mais alguma pergunta para nossa aula não acho que não acho que para esse começo tá já tem bastante informação para galera a gente vai ter que fazer uma volta divertia isso vai ter que fazer porque acho que tem alguns pontos que a gente pode abordar mais né sobre uma solução completa usando grau já fica aqui um spoiler para o próximo episódio que a gente pode fazer é como que a gente modela isso de ponta a ponta né desse lado do banco até um front web ali bem rico né aquela palavrinha também que que virou moda né os micro serviços exato vocês escaparam da pergunta ele quando pode escala vários potes É isso aí beleza meus amigos considerações finais de vocês quiserem mandar um abraço para mãe e para o pai para Xuxa cara mandar um abraço para toda equipe da base aí a gente também conseguiu começar no Grau por o pessoal acreditar né que que era algo que poderia dar certo teve um patrocínio interno eu posso contar essa história cara o Rafinha deve estar ouvindo Rafinha ele ficou muito bravo comigo quando eu quis usar grafite no primeiro projeto maior que a gente tinha a ponto de a gente brigassem em cima do cara que vou sair daqui sair do escritório assim Hoje ele simplesmente ele só falta dormir com pijama escrito mas passou passou mas brigou feio cara por causa que eu queria usar ele Ah porque tu fica inventando moda tu quer usar isso porque aquilo a gente vai aprender como daí eu aí foi engraçado assim hoje Hoje ele curte bastante Digamos que é um dos Defensores lá dentro legal show de bola mas obrigado aqui foi muito legal acho que agradecemos também esperamos quem sabe voltar aí né Sem dúvida que a casa agora de vocês e aí a gente vai fazer uma o mais completo que a gente pode trazer uma galera mas mista para falar de uma solução onde a gente encaixa o garfiel com outros assuntos esse episódio vai ficar bom eu conto com vocês aqui sei que acompanhou a gente até agora obrigado pela audiência de vocês se você ainda não deu like nesse Episódio se você ficou até aqui se você fez um curso de grafield nesse Episódio não deu like ainda por favor clica aí dá cinco estrelinhas no podcast compartilha com seu amigo que é Frontier quer ver quente que quer entender de grafield segue a gente em todas as redes sociais escreve no canal também se inscreve no canal eu sempre esqueço de falar para galera se inscrever né cara isso antes inclusive então se você não se inscreveu se inscreva no canal e obrigado até a próxima valeu obrigado [Música] [Aplausos] [Música]
Episódios Relacionados
1h 25minVocê sabe como funciona e como evoluíram os browsers? | PPT Não Compila Podcast
Clauber Stipkovic
3 de set. de 2025
1h 27minDesenvolvimento Web: Explorando Frameworks Frontend, Tendências e Melhores Práticas | PPTNC Podcast
Bruno Lins, Clauber Stipkovik
24 de jan. de 2024
1h 56minN8N e Lovable são o Fim do Dev Júnior? | PPT Não Compila Podcast
Felipe Kimio Nishikaku, Levi Bertolino
22 de out. de 2025
1h 58minAgentes de IA em Arquiteturas de Dados em Tempo Real | PPT Não Compila Podcast
Pedro Busko, William Leite, Daniel Takabayashi
1 de out. de 2025
