Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAMstack na prática - Os desafios por trás do hype

JAMstack na prática - Os desafios por trás do hype

JamStack é uma ideia de stack que surgiu há algum tempo atrás e recentemente se tornou o mais novo hype da comunidade de desenvolvimento web.

Basicamente, trata-se de uma stack baseada em Javascript, APIs e Markup, onde a as aplicações são servidas estaticamente, de forma rápida e segura. É uma estratégia que não estabelece tecnologias específicas, mas sim uma alternativa a aplicações monolíticas e talvez uma resposta a complexidade que as aplicações frontend ganharam nos últimos anos.

Nesta talk, eu destrincho o conceito, dou minha opinião a respeito do hype e trago um estudo de caso que expõe os principais benefícios desse tipo de ideia, melhores práticas e trade-offs, abordando temas como headless CMS, atomic deploy, static generators e ferramentas legais para trabalhar nesse tipo de projeto.

More Decks by Milson Ramos de Carvalho Júnior

Other Decks in Programming

Transcript

  1. JAMSTACK “A modern architecture — Create fast and secure sites

    and dynamic apps with JavaScript, APIs, and prerendered Markup, served without web servers.” jamstack.org
  2. JavaScript É responsável por qualquer interação que ocorra durante o

    ciclo de vida da aplicação como por exemplo: requisições para o servidor do lado do cliente. API’s São utilizadas para abstrair processos server-side e interações com banco de dados. Markup Toda marcação HTML necessária para a renderização de uma página é construída em build-time utilizando ferramentas para geração de sites estáticos ou um simples script de build.
  3. Perspectiva de desenvolvimento Entregar app monolítico Lançamento ao mercado depende

    do envolvimento de muitos times e infraestrutura funcionando Maior curva de aprendizado acerca de ferramentas como Docker, kubernetes Chances de maximizar vendor lock-in
  4. Perspectiva de desenvolvimento Entregar site estático Maior velocidade de lançamento

    ao mercado Menor curva de aprendizado durante o desenvolvimento de novas features Maior pluralidade tecnológica na construção de serviços. Entregar app monolítico Lançamento ao mercado depende do envolvimento de muitos times e infraestrutura funcionando Maior curva de aprendizado acerca de ferramentas como Docker, kubernetes Chances de maximizar vendor lock-in
  5. Perspectiva de infraestrutura Servidor de aplicação Precisa implementar escalonamento e

    monitoramento. É necessário uma quantidade significante de recursos para gerenciar um app em produção. O que gera custos elevados. Interações com dependências acontecem runtime, maximizando o risco de indisponibilidade. Risco de ataques a banco de dados e servidor.
  6. Perspectiva de infraestrutura CDN Abstrai escalonamento, monitoramento, log, etc. Reduz

    a necessidade de recursos always-on para manter o app em produção, logo reduzindo os custos com infraestrutura. Interações com dependências são feitas build-time, reduzindo o risco de indisponibilidade. Minimiza risco de ataques, já que são servidos arquivos estáticos. Servidor de aplicação Precisa implementar escalonamento e monitoramento. É necessário uma quantidade significante de recursos para gerenciar um app em produção. O que gera custos elevados. Interações com dependências acontecem runtime, maximizando o risco de indisponibilidade. Risco de ataques a banco de dados e servidor.
  7. Perspectiva do cliente Arquivos estáticos Experiência de carregamento mais rápida,

    TTFB menor e risco menor de tela branca. Páginas geradas runtime TTFB geralmente mais elevado e risco maior de tela branca.
  8. Frontend Services Conjunto de serviços utilitários consumidos build-time, com o

    objetivo de automatizar tarefas, integrar com serviços de terceiros e gerar entregáveis mais ricos.
  9. Headless CMS Um CMS que tem a camada de apresentação

    desacoplada, o conteúdo gerado pode ser consumido via APIs e reutilizado entre diferentes plataformas.
  10. Headless CMS Um CMS que tem a camada de apresentação

    desacoplada, o conteúdo gerado pode ser consumido via APIs e reutilizado entre diferentes plataformas.
  11. Headless CMS Um CMS que tem a camada de apresentação

    desacoplada, o conteúdo gerado pode ser consumido via APIs e reutilizado entre diferentes plataformas.
  12. Headless CMS Um CMS que tem a camada de apresentação

    desacoplada, o conteúdo gerado pode ser consumido via APIs e reutilizado entre diferentes plataformas. headlesscms.org/
  13. Dynamic Design Systems Geração de assets e variáveis de estilo

    dinamicamente a partir da integração com uma ferramenta de prototipação. figma.com/developers/api
  14. JAMSTACK “A modern architecture — Create fast and secure sites

    and dynamic apps with JavaScript, APIs, and prerendered Markup, served without web servers.” jamstack.org
  15. JAMSTACK “A modern architecture — Create fast and secure sites

    and dynamic apps with JavaScript, APIs, and prerendered Markup, served without web servers.” jamstack.org
  16. JAMSTACK “A modern architecture — Create fast and secure sites

    and dynamic apps with JavaScript, APIs, and prerendered Markup, served without web servers.” jamstack.org
  17. JAMSTACK “A modern architecture — Create fast and secure sites

    and dynamic apps with JavaScript, APIs, and prerendered Markup, served without web servers.” jamstack.org
  18. Procure inovar em aspectos que podem melhorar a vida das

    pessoas, não atualizando a versão do webpack.
  19. Existe a possibilidade de uma aplicação backend que gera marcação

    HTML runtime ser a melhor opção no seu caso.
  20. Você não precisa necessariamente usar todos os conceitos, mas sim

    adaptar as ideias ao seu cenário. - Headless CMS - Backends for Frontends - Frontend Services - Atomic Deploys - Dynamic Design Systems - Static Generators
  21. Referências • https://headlesscms.org/ • https://jamstack.org/ • https://matthewstrom.com/writing/design-apis/ • https://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html •

    https://www.reddit.com/r/webdev/comments/a7xgox/jamstackhype_or_not/ • https://buttercms.com/blog/jamstack-vs-mean-vs-lamp-your-guide-to-picking-one#jamstac kprosandcons • https://dev.to/ossia/how-freecodecamporg-uses-the-jamstack--a-single-api-server-to-help- millions-of-people-learn-to-code-every-month-4d5g