Introdução
A transformação digital abrange a cada ano mais áreas da vida e dos negócios. Se uma empresa deseja ser competitiva, apenas ter sites informativos não é suficiente; são necessários aplicativos móveis e web que não apenas forneçam informações aos usuários, mas que também permitam a execução de funções: receber ou encomendar produtos e serviços, disponibilizar ferramentas.

Por exemplo, os bancos modernos já não se contentam em ter apenas um site informativo; é necessário oferecer ferramentas online para seus clientes, como um painel pessoal, onde o usuário pode gerenciar contas, investimentos e empréstimos. Mesmo os pequenos negócios, para aumentar a conversão, precisam de ferramentas práticas, como agendar uma consulta médica ou um corte de cabelo, ou reservar uma mesa em um restaurante ou um espaço de recreação infantil para comemorar um aniversário.
E os próprios proprietários precisam receber informações pontuais de forma conveniente sobre o estado de suas empresas, como a coleta de dados estatísticos e análises de diferentes departamentos de produção, ou a produtividade das equipes. Muitas vezes, cada departamento coleta esses dados de maneira independente e pode até usar diferentes ferramentas, o que faz com que o proprietário precise gastar muito tempo pessoal tentando entender tudo isso; isso pode afetar indiretamente ou diretamente a eficácia da empresa e, em última análise, o lucro. Aqui também a transformação digital e o desenvolvimento de um aplicativo web ou móvel podem ajudar.
As tecnologias não param de evoluir, e o que era utilizado há alguns anos pode já não ser relevante hoje, ou o que não era possível fazer há alguns anos agora se tornou realidade. Existe uma grande quantidade de ferramentas modernas que ajudam a criar aplicativos web e móveis de forma mais rápida e com melhor qualidade. Com base nas minhas observações e experiências, gostaria de compartilhar minha visão sobre quais tecnologias e ferramentas serão demandadas em breve e por que elas merecem atenção ao criar um aplicativo web moderno.
Single page application (aplicativos de página única)
Vamos esclarecer um pouco a terminologia. Uma Aplicação de Página Única (SPA) é um aplicativo web cujos componentes são carregados uma única vez em uma página, e o conteúdo é carregado conforme necessário. E, ao navegar entre as seções do aplicativo, a página não é recarregada completamente, apenas os dados necessários são carregados e exibidos.
As aplicações de página única têm uma grande vantagem em termos de velocidade e usabilidade em relação aos aplicativos web clássicos. Com uma SPA, é possível alcançar uma experiência similar à de um aplicativo de desktop, sem recarregamentos e atrasos significativos.
Se há alguns anos as aplicações de página única praticamente não suportavam otimização para mecanismos de busca e eram usadas principalmente para criar painéis de administração e áreas de usuário, hoje em dia é muito mais fácil criar uma aplicação de página única com total suporte à otimização para SEO. Usando SPAs com renderização no servidor, esse problema desapareceu completamente. Em outras palavras, é uma aplicação de página única, mas na primeira solicitação, o servidor gera não apenas os dados, mas cria uma página HTML pronta para exibição, e os mecanismos de busca recebem páginas completas com toda a meta-informação e marcação semântica.
Com o desenvolvimento de ferramentas para a criação de aplicações web voltadas ao cliente, o desenvolvimento e a transição para aplicações de página única continuarão a crescer neste e nos próximos anos. Se você tem um aplicativo antigo que está tecnologicamente ultrapassado e funciona lentamente, ainda por cima com recarregamento completo da página ao mudar de seção, então este é o ano ideal para atualizar para uma aplicação de página única rápida – agora é um bom momento, as tecnologias já permitem fazer isso de forma bastante rápida e eficaz.
Ter um site moderno e rápido é muito bom, mas quero ser honesto com você: nem todos os aplicativos podem ser facilmente convertidos em aplicações de página única, e a transição pode não sair barata! Portanto, é preciso entender quem e por que precisa dessa transição.
Para ajudá-lo a entender, abaixo apresento uma tabela com alguns exemplos em que o desenvolvimento ou a transição para SPA são apropriados e justificáveis, e quando não são.
ZA
Se você deseja criar um aplicativo moderno e rápido e quer que ele esteja disponível não apenas na versão web, mas também em dispositivos móveis ou até mesmo desktop, com todos os processos e cálculos realizados em um servidor remoto ou em nuvem. E ainda por cima, que todos os clientes tenham uma interface de interação única e não seja necessário fazer cada alteração no código do servidor ao adicionar um novo cliente.
Por exemplo: redes sociais, agregadores, plataformas SaaS (software como serviço), marketplaces.
Se você tem uma loja ou serviço web, sabe que ele é lento e as pessoas desistem, deseja torná-lo mais rápido, percebe o valor dos clientes e está disposto a pagar pelo upgrade a partir de um milhão de rublos.
Você tem um aplicativo móvel que utiliza a API do site, e o site é lento e requer recarregamentos completos de conteúdo ao navegar pelas páginas.
CONTRA
Se o seu público-alvo não utiliza navegadores e dispositivos modernos.
Por exemplo: áreas corporativas específicas, como desenvolvimento de sistemas internos para bancos, instituições de saúde e educação.
Sua atividade principal é offline e você não está disposto a oferecer serviços online, precisando apenas atrair clientes.
Se você possui uma loja online ou serviço web que já está vendendo bem, não vê perda de clientes e reclamações.
Se você tem um aplicativo funcional que não pode ser adaptado para SPA e precisa reescrever tudo do zero e usar outras tecnologias, mas não está disposto a gastar alguns milhões nisso.
Por exemplo: há um site de caixa ou algum código monolítico antigo feito à mão.
Aplicativos Web Progressivos
Aplicativos Web Progressivos (PWA) são produtos da evolução conjunta de aplicativos nativos e sites web. Essencialmente, é um aplicativo web que se parece e se comporta como um aplicativo nativo real, pode receber notificações push, funcionar offline, etc. E o usuário não precisa baixar o aplicativo da App Store ou Google Play, bastando apenas salvar na área de trabalho.
Como tecnologia ou abordagem de desenvolvimento, as PWA têm evoluído desde 2015 e, recentemente, têm ganhado enorme popularidade na área de e-commerce.
Alguns exemplos reais da vida:
- No ano passado, o hotel Best Western River North, após lançar um novo site com suporte a PWA, conseguiu aumentar sua receita em 300%;
- O site árabe OpenSooq.com, após implementar o suporte a PWA, conseguiu aumentar em 25% o tempo de visitações e em 260% a quantidade de leads;
- O famoso serviço de encontros Tinder conseguiu reduzir o tempo de carregamento de 11,91s para 4,69s ao desenvolver um PWA, além disso, o aplicativo ocupa 90% menos espaço em comparação com seu equivalente nativo para Android.
O fato de que devemos prestar atenção a esta tecnologia é evidenciado pelo lançamento, em 2018, da versão de desenvolvedor do PWA Studio pela Magento, uma das maiores plataformas para criação de projetos de e-commerce. A plataforma permite criar, "pronto para uso", front-ends baseados em React para suas soluções de e-commerce com suporte a PWA.
Uma dica para aqueles que já possuem um projeto na web ou apenas têm a ideia de um novo serviço com suporte a dispositivos móveis: não se apressem em desenvolver um aplicativo nativo completo, primeiro considerem a tecnologia PWA. Isso pode ser a melhor solução em termos de custo-benefício para seu produto.
Um pouco da prática. Para criar um simples aplicativo móvel nativo de notícias, considerando que já existe um servidor REST pronto, são necessárias cerca de 200-300 horas de trabalho para cada plataforma. Com o preço médio de mercado de 1500-2000 rub./hora, o aplicativo pode custar cerca de 1 milhão de rublos. Se desenvolver um aplicativo web com total suporte a PWA: notificações push, modo offline e outras funcionalidades, a desenvolvimento levará de 200 a 300 horas, mas o produto estará imediatamente disponível em todas as plataformas. Ou seja, a economia é de cerca de 2 vezes, sem mencionar que não será necessário pagar taxas para publicação nas lojas de aplicativos.
Serverless
Este é outro enfoque moderno para desenvolvimento. Devido ao nome, muitos pensam que isso realmente significa desenvolvimento sem servidor, que não é necessário escrever código de back-end e que qualquer desenvolvedor front-end poderá criar um aplicativo web completo. Mas não é bem assim!
Ao criar uma aplicação Serverless, é necessário um servidor e um banco de dados. A principal diferença desse enfoque é que o código back-end é apresentado na forma de funções em nuvem (outra denominação para serverless é FaaS, funções como serviço) e permite que a aplicação escale de maneira rápida e fácil. Ao desenvolver tal aplicação, o programador pode se concentrar nas tarefas de negócios e não se preocupar com escalabilidade e configuração de infraestrutura, o que acelera o desenvolvimento da aplicação e reduz seus custos. Além disso, a abordagem Serverless ajudará a economizar com aluguel servidores, pois utiliza exatamente os recursos necessários para realizar a tarefa, e se não houver carga, o tempo do servidor não é utilizado e não é pago.
Por exemplo, a grande empresa de mídia americana Bustle conseguiu reduzir os gastos em para PrestaShop mais de 60% ao migrar para Serverless. A empresa Coca-Cola, ao desenvolver um sistema automatizado de vendas de bebidas através de máquinas, conseguiu reduzir os custos de hospedagem de $13000 para $4500 por ano ao migrar para Serverless.
Nos últimos anos, devido à novidade e suas limitações, o Serverless foi utilizado principalmente para pequenos projetos, startups e MVPs, mas hoje, graças à evolução do software, versatilidade e potência da contêinerização de servidores, surgem ferramentas que permitem eliminar limitações e simplificar e acelerar o desenvolvimento de aplicações em nuvem.
Isso significa que cenários de negócios corporativos, onde a modernização em nuvem antes era considerada impossível (como para dispositivos periféricos, transferência de dados ou aplicações com estado mantido), agora se tornam realidade. Boas ferramentas, com grande potencial, são o kNative e o Serverless enterprise.
Mas, apesar de tudo isso, o Serverless não é uma panaceia para o desenvolvimento de aplicações web. Como qualquer outra tecnologia, possui suas vantagens e desvantagens, e é necessário escolher essa ferramenta com compreensão, e "não pregar pregos com um microscópio", apenas porque é mais tecnológica.
Para ajudá-lo a entender, aqui estão alguns exemplos de quando vale a pena considerar o Serverless ao desenvolver um novo serviço web ou aprimorar um existente:
- Quando a carga no servidor é periódica e você paga por capacidade ociosa. Por exemplo, tivemos um cliente com uma rede de máquinas de café que precisava processar solicitações e coletar estatísticas apenas algumas centenas ou milhares de vezes por dia, enquanto à noite o número de solicitações caía para algumas dezenas. Nesse caso, é muito mais eficaz pagar apenas pelo uso real dos recursos, por isso propusemos e implementamos uma solução baseada em Serverless;
- Se você não planeja se aprofundar em detalhes técnicos da infraestrutura e pagar excessivamente pela configuração e manutenção de servidores e balanceadores. Por exemplo, ao desenvolver um marketplace, você não sabe exatamente qual será o tráfego ou, pelo contrário, planeja um grande tráfego e quer ter certeza de que seu aplicativo suportará a carga, então Serverless é uma excelente escolha.
- Se for necessário realizar algum evento em fluxo no funcionamento do aplicativo principal, registrar dados secundários em tabelas ou executar cálculos. Por exemplo, coletar dados analíticos das ações do usuário, processá-los de uma determinada forma e armazená-los no banco de dados;
- Se for necessário simplificar, unificar ou acelerar o trabalho atual do aplicativo. Por exemplo, criar serviços que melhoram o desempenho para lidar com imagens ou vídeos, quando o usuário faz upload de um vídeo para a nuvem, e um função separada cuida da transcodificação, enquanto o servidor principal continua funcionando normalmente.
Se for necessário processar eventos de serviços externos. Por exemplo, lidar com respostas de sistemas de pagamento ou redirecionar dados dos usuários para um CRM para agilizar o atendimento a potenciais clientes.
Se você tem um aplicativo grande e algumas partes do aplicativo podem ser implementadas de forma mais otimizada, utilizando uma linguagem diferente da principal. Por exemplo, você tem um projeto em Java e precisa adicionar uma nova funcionalidade, mas não tem recursos disponíveis, ou a implementação nessa linguagem pode levar mais tempo e já existe uma solução em outra linguagem, então Serverless pode ajudar nesse caso.
Este não é de forma alguma o único conjunto de ferramentas e tecnologias que merecem atenção, apenas compartilhei o que usamos todos os dias em nosso trabalho e sabemos exatamente como podem ajudar os negócios.
Fonte: habr.com
