o Bootcamp JavaScript de 2021 está agora aberto para inscrições!
neste post eu quero ajudá-lo conceitualmente a fazer a mudança de frontend para backend, no contexto do desenvolvimento da Web.
vamos primeiro definir o que é interface. Frontend é o termo que usamos para identificar programação dentro do navegador. Também lhe chamamos desenvolvimento web do lado do cliente.
no lado da interface você se preocupa em criar e distribuir uma aplicação que roda na máquina de seus clientes, que pode ser um laptop, um computador de mesa ou um dispositivo móvel. Você constrói algo que você distribui e então corre dentro de cada navegador cliente.
no lado da infra-estrutura, você arquitecta e constrói uma aplicação que funciona num único servidor (no início), e todos os clientes acedem a essa aplicação. O aplicativo é executado no servidor, um ambiente de controle e, em seguida, enviar para o navegador de um aplicativo usando o processamento do lado do servidor do aplicativo, ou você criar uma API que apenas distribui dados JSON para os clientes (algo muito comum ultimamente, especialmente emparelhado com o frontend frameworks/bibliotecas como Reagir, Vue e outras).
Você já pode ver que há uma sobreposição aqui. A infra-estrutura pode ser usada para servir a aplicação frontend-facing que será executada no navegador.
HTML, CSS, JavaScript, images, animations, React, Vue, Svelte, CSS-in-JS, state management in the frontend, performance optimization, all of those topics (and many more!) estão ligados à programação frontend.
alguns tipos de aplicações só precisam da parte da interface. O meu site, por exemplo, não tem uma infra-estrutura. É um site estático gerado usando Hugo, e todo o trabalho que faço nele é considerado programação frontend: o CSS, a marcação, o JavaScript que eu uso para a busca de energia, por exemplo.a programação Frontend tem o seu próprio conjunto único de desafios: o suporte do navegador de recursos, por exemplo. Ou o desempenho de uma aplicação num dispositivo de extremidade baixa. A construir aplicações de uma só página.
desenvolvimento da infra-estrutura é completamente diferente da infra-estrutura. Primeiro, você sai do ambiente do navegador, que é libertador por um lado, mas também pode ser esmagador.porquê? Bem, tens mais opções.
no navegador, a escolha da linguagem de programação é sempre JavaScript. Ou uma linguagem que compila para JavaScript, como TypeScript, Elm e outros.
na infra-estrutura pode usar o que quiser. A minha escolha habitual é o nó.js, porque sendo JavaScript baseado eu posso ser um especialista em uma única linguagem, e trabalhar tanto na interface como na infra-estrutura com JavaScript.
Mas você pode usar frameworks como:
- Django, que é baseado em Python
- Laravel que é baseado em PHP
- Rails, que é baseado em Ruby
- Phoenix, que é baseado no Elixir
- Deno que é baseado no TypeScript
e muitos outros, incluindo mais de empresa orientada para os ecossistemas, como Java e .LÍQUIDA.
E eu não estou nem mencionando Ir e Ferrugem, duas grandes escolhas.
esta é provavelmente a maior força da programação de infra-estruturas: você tem muitas escolhas na linguagem que você pode usar, então você pode usar a que você preferir. Mas também pode levar a” paralisia de análise”, se você não tem certeza do que você prefere, ainda.
na infra-estrutura não temos os problemas que precisamos enfrentar na infra-estrutura. Uma coisa que ouço muitas vezes é que o desenvolvimento do frontend vai muito rápido. Novas coisas surgem todos os dias e a melhor ferramenta muda de mês para mês. O que não é uma afirmação falsa. O back-end em comparação parece mais um baixo ritmo de ecossistema, especialmente na bem-conhecida e maduro ambientes e ferramentas, e um back-end pode se sentir modernas, por anos, enquanto não podemos dizer a mesma coisa no frontend.
na infra-estrutura temos o seu próprio conjunto de questões, é claro. Por exemplo, como armazenar dados em uma base de dados. Como escolher a base de dados certa. SQL vs NoSQL. Micro-serviços vs monólitos. Como implantar a nossa aplicação, e onde. Como lidar com mais tráfego. Como lidar com dados e solicitações de forma segura. Como testar e manipular o manuseio de erros. Como escolher a arquitetura certa.
então temos tópicos que se sobrepõem com DevOps como usar o Docker e Kubernetes, como configurar uma integração contínua e fluxo de trabalho de entrega contínua, como lidar com Linux, infra-estrutura e rede de nível servidor. Precisamos enfrentar escolhas como usar nossos próprios servidores VPS ou usar um PAAS como Heroku, ou ficar sem Server com AWS Lambda. Dependendo da empresa e equipe em que você trabalha, você pode precisar estar pronto para lidar com esses tópicos, também.
E precisamos de descobrir como ligar a infra-estrutura à infra-estrutura, claro. Como construir uma API. GraphQL vs REST. Como lidar com a autenticação. Como fazer a API rápido em escala. Esses são tópicos que envolvem frontend e backend na busca para fazê-los falar uns com os outros.
é um monte de coisas e você pode encontrar livros inteiros sobre esses tópicos, e é por isso que temos a separação entre os desenvolvedores frontend e backend, e por que ser um desenvolvedor full-stack que pode navegar por todos esses problemas é uma habilidade valiosa a ter.
e é claro que você não precisa saber todas essas coisas para ser qualificado como um desenvolvedor de Interface ou infra-estrutura. Você precisa saber essas coisas em um alto nível, para ter uma idéia do que você não sabe (ainda). Mas é uma ótima idéia também para se especializar em um nicho particular e se tornar grande nisso.
Por exemplo, você pode ser um desenvolvedor de infra-estruturas que não sabe lidar com a configuração avançada do Linux, e confiar em um PAAS como Heroku para fazer isso por você. Ou usar a AWS Lambda para evitar isso.
a coisa importante que eu acho é saber quando é melhor aprender e fazer-você mesmo versus usar ferramentas que suportam o seu trabalho.
the 2021 JavaScript Full-Stack Bootcamp IS NOW OPEN FOR SIGNUPS UNTIL NEXT TUESDAY! Não perca esta oportunidade, Inscreva-se hoje!