Checklist para criar e publicar aplicações web

Para criar sua própria aplicação web em nosso tempo, não basta saber desenvolvê-la. Um aspecto importante é a configuração de ferramentas para implantação e monitoramento da aplicação, bem como gerenciamento e administração do ambiente em que atua. À medida que a era da implantação manual cai no esquecimento, mesmo para pequenos projetos, as ferramentas de automação podem trazer benefícios tangíveis. Ao implantar “manualmente”, muitas vezes podemos esquecer de mover algo, levar em conta esta ou aquela nuance, executar um teste esquecido, esta lista pode continuar por muito tempo.

Este artigo pode ajudar aqueles que estão apenas aprendendo o básico da criação de aplicações web e desejam entender um pouco sobre os termos e convenções básicos.

Assim, a construção de aplicações ainda pode ser dividida em 2 partes: tudo que se relaciona ao código da aplicação, e tudo que se relaciona ao ambiente em que esse código é executado. O código da aplicação, por sua vez, também é dividido em código do servidor (aquele que roda no servidor, muitas vezes: lógica de negócio, autorização, armazenamento de dados, etc.), e código do cliente (aquele que roda na máquina do usuário: muitas vezes a interface e a lógica relacionada a ela).

Vamos começar na quarta-feira.

A base para o funcionamento de qualquer código, sistema ou software é o Sistema Operacional, portanto a seguir veremos os sistemas mais populares do mercado de hospedagem e daremos uma breve descrição deles:

Windows Server — essa mesma Windows, mas em uma versão do lado do servidor. Algumas funcionalidades estão disponíveis na versão cliente (normal). Windows Por exemplo, alguns serviços de coleta de estatísticas e softwares similares não estão presentes aqui, mas há um conjunto de utilitários para administração de rede e softwares básicos para implantação. servidores (web, ftp, …). Em geral, Windows Server parece um normal Windows, grasna como um normal WindowsEntretanto, custa o dobro da sua versão padrão. Contudo, considerando que você provavelmente implantará o aplicativo em um servidor dedicado/virtual, o custo final pode aumentar, mas não será crítico. Como a plataforma Windows Ocupa uma posição dominante no mercado de sistemas operacionais para consumidores, e sua edição para servidores será a mais familiar para a maioria dos usuários.

Unix-sistema semelhante. O trabalho tradicional nesses sistemas dispensa a presença de uma interface gráfica familiar, oferecendo ao usuário apenas um console como elemento de controle. Para um usuário inexperiente, trabalhar neste formato pode ser difícil, qual é o custo de sair de um editor de texto bastante popular em dados? VimUma pergunta relacionada já obteve mais de 1.8 milhão de visualizações nos últimos seis anos. As principais distribuições (edições) desta família são: Debian — uma distribuição popular, cujas versões dos pacotes são principalmente voltadas para LTS (Suporte de longo termo – suporte por muito tempo), que se expressa em confiabilidade e estabilidade bastante altas do sistema e pacotes; Ubuntu – contém distribuições de todos os pacotes em suas versões mais recentes, o que pode afetar a estabilidade, mas permite utilizar a funcionalidade que acompanha as novas versões; Red Hat Enterprise Linux - SO, posicionado para uso comercial, é pago, porém inclui suporte de fornecedores de software, alguns pacotes proprietários e pacotes de drivers; CentOS – código aberto variação do Red Hat Enterprise Linux, distingue-se pela ausência de pacotes e suporte proprietários.

Para aqueles que estão apenas começando a dominar esta área, minha recomendação seriam sistemas Windows ServerOu UbuntuSe considerarmos WindowsEntão, antes de tudo, trata-se do hábito do sistema. Ubuntu – mais tolerância às atualizações e, por sua vez, por exemplo, menos problemas no lançamento de projetos em tecnologias que requerem novas versões.

Assim, decidido o sistema operacional, passemos a um conjunto de ferramentas que permitem implantar (instalar), atualizar e monitorar o estado da aplicação ou de suas partes no servidor.

A próxima decisão importante será o posicionamento do seu aplicativo e do servidor para ele. No momento, as mais comuns são 3 formas:

  • Hospedar (manter) um servidor por conta própria é a opção mais econômica, mas você terá que solicitar um IP estático ao seu provedor para que seu recurso não mude de endereço com o tempo.
  • Alugue um servidor dedicado (VDS) – administre-o e dimensione cargas de forma independente
  • Pagar (frequentemente com um período de teste gratuito das funcionalidades da plataforma) por uma assinatura de um serviço de hospedagem em nuvem, onde o modelo de pagamento por uso é bastante comum. Os representantes mais proeminentes dessa abordagem são a Amazon AWS (que oferece um ano de serviço gratuito, mas com um limite mensal) e o Google Cloud (que oferece US$ 300 em créditos que podem ser gastos em serviços de nuvem ao longo do ano). hospedagem), Yandex.Cloud (4000 rublos por dois meses) e Microsoft Azure (acesso gratuito a serviços populares por um ano, mais 12.500 rublos para qualquer serviço por um mês). Assim, você pode experimentar qualquer um desses provedores sem gastar nada, mas ainda ter uma ideia geral da qualidade e do nível de serviço.

Dependendo do caminho escolhido, a única coisa que vai mudar no futuro é quem é o grande responsável por esta ou aquela área da administração. Se você mesmo hospeda, deve entender que quaisquer interrupções na eletricidade, na Internet, no próprio servidor, no software implantado nele - tudo isso recai inteiramente sobre seus ombros. No entanto, para treinamento e teste, isso é mais que suficiente.

Se você não tiver uma máquina extra que possa desempenhar a função de servidor, você desejará usar a segunda ou terceira via. O segundo caso é idêntico ao primeiro, exceto que você transfere a responsabilidade pela disponibilidade do servidor e seu poder para os ombros do hoster. A administração do servidor e do software ainda está sob seu controle.

E por último, a opção de alugar capacidade de provedores de nuvem. Aqui você pode configurar o controle automatizado de quase tudo sem entrar em muitos detalhes técnicos. Além disso, em vez de uma máquina, você pode ter diversas instâncias em execução paralela, que podem, por exemplo, ser responsáveis ​​por diferentes partes da aplicação, sem diferir muito em custo de possuir um servidor dedicado. E também existem ferramentas para orquestração, conteinerização, implantação automática, integração contínua e muito mais! Veremos algumas dessas coisas abaixo.

Em geral, a infraestrutura do servidor se parece com isto: temos um chamado “orquestrador” (“orquestração” é o processo de gerenciamento de várias instâncias de servidor), que gerencia mudanças ambientais em uma instância de servidor, um contêiner de virtualização (opcional, mas bastante frequentemente usado), que permite dividir o aplicativo em camadas lógicas isoladas, e software de integração contínua – permitindo atualizações no código hospedado por meio de “scripts”.

Portanto, a orquestração permite ver o status dos servidores, implementar ou reverter atualizações no ambiente do servidor e assim por diante. A princípio, é improvável que esse aspecto o afete, pois para orquestrar qualquer coisa você precisa de vários servidores (você pode ter um, mas por que isso é necessário?), e para ter vários servidores você precisa deles. Dentre as ferramentas nesse sentido, a mais popular é o Kubernetes, desenvolvido por Google.

A próxima etapa é a virtualização no nível do sistema operacional. Hoje em dia, generalizou-se o conceito de “dockerização”, que vem da ferramenta Estivador, que fornece a funcionalidade de contêineres isolados uns dos outros, mas executados no contexto de um sistema operacional. O que isso significa: em cada um desses containers você pode rodar uma aplicação, ou mesmo um conjunto de aplicações, que vão acreditar que são as únicas em todo o SO, sem sequer suspeitar da existência de outra pessoa nesta máquina. Esta função é muito útil para lançar aplicações idênticas de versões diferentes, ou simplesmente aplicações conflitantes, bem como para dividir partes de uma aplicação em camadas. Essa conversão de camada pode posteriormente ser gravada em uma imagem, que pode ser usada, por exemplo, para implantar um aplicativo. Ou seja, ao instalar esta imagem e implantar os containers que ela contém, você obtém um ambiente pronto para rodar sua aplicação! Nas primeiras etapas, você pode usar esta ferramenta tanto para fins informativos quanto para obter benefícios muito reais, dividindo a lógica da aplicação em diferentes camadas. Mas vale dizer aqui que nem todo mundo precisa de dockerização, e nem sempre. A dockerização se justifica nos casos em que a aplicação é “fragmentada”, dividida em pequenas partes, cada uma responsável por sua tarefa, a chamada “arquitetura de microsserviços”.

Além de fornecer o ambiente, precisamos garantir uma implantação competente da aplicação, que inclui todos os tipos de transformações de código, instalação de bibliotecas e pacotes relacionados à aplicação, execução de testes, notificações sobre essas operações e assim por diante. Aqui precisamos prestar atenção a um conceito como “Integração Contínua” (CI – Integração Contínua). As principais ferramentas nesta área no momento são Jenkins (software CI escrito em Java pode parecer um pouco complicado no início), Travis C.I. (escrito em Ruby, subjetivo, um pouco mais simples Jenkins, no entanto, ainda é necessário algum conhecimento na área de configuração de implantação), CI do Gitlab (escrito em Ruby e vá).

Então, depois de falar sobre o ambiente em que sua aplicação funcionará, é hora de finalmente ver quais ferramentas o mundo moderno nos oferece para a criação dessas mesmas aplicações.

Vamos começar com o básico: Backend (backend) – parte do servidor. A escolha do idioma, conjunto de funções básicas e estrutura predefinida (framework) aqui é determinada principalmente por preferências pessoais, mas, mesmo assim, vale a pena mencionar para consideração (a opinião do autor sobre idiomas é bastante subjetiva, embora com uma reivindicação para uma descrição imparcial):

  • Python é uma linguagem bastante amigável para um usuário inexperiente, perdoa alguns erros, mas também pode ser bastante rígido com o desenvolvedor para que ele não faça nada de ruim. Já é uma linguagem bastante madura e significativa, que surgiu em 1991.
  • Go - uma linguagem do Google, também bastante amigável e prática, é bastante fácil de compilar e obter um arquivo executável em qualquer plataforma. Pode ser simples e agradável ou complexo e sério. Fresco e jovem, surgiu há relativamente pouco tempo, em 2009.
  • Rust é um pouco mais velho que seu colega anterior, lançado em 2006, mas ainda é bastante jovem em comparação com seus pares. Voltado para desenvolvedores mais experientes, embora ainda tente resolver muitas tarefas de baixo nível do programador.
  • Java é um veterano do desenvolvimento comercial, introduzido em 1995, e é uma das linguagens mais usadas no desenvolvimento de aplicativos corporativos atualmente. Com seus conceitos básicos e configuração pesada, o tempo de execução pode se tornar bastante desafiador para um iniciante.
  • ASP.net é uma plataforma de desenvolvimento de aplicativos lançada pela Microsoft. Para escrever funcionalidades, é usada principalmente a linguagem C# (pronuncia-se C Sharp), que apareceu em 2000. Sua complexidade é comparável ao nível entre Java e Rust.
  • O PHP, originalmente utilizado para pré-processamento de HTML, atualmente, embora detenha liderança absoluta no mercado de linguagens, há tendência de declínio de uso. Possui baixo limite de entrada e facilidade de escrita de código, mas ao mesmo tempo, ao desenvolver aplicativos bastante grandes, a funcionalidade da linguagem pode não ser suficiente.

Bom, a parte final da nossa aplicação - a mais tangível para o usuário - Frontend (frontend) – é a cara da sua aplicação, é com essa parte que o usuário interage diretamente.

Sem entrar em detalhes, o frontend moderno se sustenta em três pilares, frameworks (e nem tanto), para criação de interfaces de usuário. Assim, os três mais populares são:

  • ReactJS não é um framework, mas sim uma biblioteca. Na verdade, o framework difere de seu título orgulhoso apenas pela ausência de algumas funções “prontas para uso” e pela necessidade de instalá-las manualmente. Assim, existem diversas variações da “preparação” desta biblioteca, formando frameworks únicos. Pode ser um pouco difícil para um iniciante, devido a alguns princípios básicos e à configuração bastante agressiva do ambiente de construção. No entanto, para um início rápido, você pode usar o pacote “create-react-app”.
  • VueJS é uma estrutura para construção de interfaces de usuário. Desta trindade, leva justamente o título de framework mais fácil de usar: para o desenvolvimento em Vue, a barreira de entrada é menor do que a dos outros irmãos mencionados. Além disso, ele é o mais jovem entre eles.
  • Angular é considerado o mais complexo desses frameworks, o único que requer TypeScript (complemento para linguagem Javascript). Freqüentemente usado para criar aplicativos corporativos de grande porte.

Resumindo o que foi escrito acima, podemos concluir que agora a implantação de um aplicativo é radicalmente diferente de como esse processo acontecia antes. No entanto, ninguém está impedindo você de fazer a “implantação” à moda antiga. Mas será que o pouco tempo economizado no início compensa a enorme quantidade de erros que um desenvolvedor que escolher esse caminho terá que pisar? Eu acredito que a resposta é não. Ao gastar um pouco mais de tempo se familiarizando com essas ferramentas (e você não precisa de mais do que isso, porque precisa entender se precisa ou não delas em seu projeto atual), você pode jogar fora, reduzindo significativamente, por exemplo , casos de erros fantasmas dependendo do ambiente e que aparecem apenas no servidor de produção, análise noturna do que levou ao travamento do servidor e por que ele não inicia e muito mais.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster