Nos meus primeiros dias desenvolvendo aplicativos em nuvem, enfrentei desafios significativos ao tentar codificar, testar e corrigir bugs com eficiência. Enviar código para ambientes remotos criava atraso enquanto aguardava os ciclos de construção e implantação da nuvem. Isso destruiu a produtividade do desenvolvedor e interrompeu qualquer senso de fluxo de codificação.
Com o tempo, percebi que os desenvolvedores de nuvem deveriam se concentrar em aproveitar ao máximo os ambientes locais. Construir e testar localmente são muito mais rápidos do que o desenvolvimento remoto na nuvem. Como chefe de engenharia da Nitric, sou obcecado em otimizar os fluxos de trabalho dos desenvolvedores em nuvem, capacitando a codificação local rápida e flexível. À medida que desenvolvemos nossa estrutura de aplicativos com reconhecimento de nuvem, perguntamos continuamente: “Como podemos permitir que os desenvolvedores se movam rapidamente localmente?”
O que torna o desenvolvimento local excelente?
Aqui estão alguns elementos-chave que tornam a experiência de desenvolvimento local crucial para o desenvolvimento produtivo da nuvem:
Ciclos de feedback rápido
A prioridade número um é obter validação rápida de alterações por meio de testes e depuração, sem esperar por ciclos de construção remotos. Eu sempre digo: “Quanto mais rápida a iteração, melhor será a experiência do desenvolvedor”. Os ambientes modernos permitem construir, testar e executar serviços localmente, estreitando os ciclos de feedback. Lembro-me vividamente da frustração causada pelos ciclos de construção de nuvem de 20 minutos; eles levaram a uma perda significativa de produtividade devido à troca frequente de contexto. Com execução local em menos de um segundo, posso manter o foco e a produtividade.
Frameworks que se destacam no fornecimento de feedback rápido incluem novos frameworks web como Astro, que usa Vite para substituição rápida de módulos. Essa velocidade permanece consistente, independentemente do tamanho do aplicativo.
Eficácia de custos
Sem contas de nuvem! Brinco com nossa equipe financeira: “Podemos desenvolver o dia todo pelo baixo custo de uma pizza”. Aumentar os custos da nuvem devido a ciclos excessivos de depuração pode criar desafios financeiros extremos. Ao otimizar localmente, podemos inovar sem nos preocupar com o orçamento, e ferramentas como o Supabase, com seu ambiente de desenvolvimento local para aplicações web baseadas em banco de dados, ajudam a manter as despesas sob controle.
Facilidade de depuração
Percorrer o código localmente torna muito mais fácil encontrar bugs. Digo aos engenheiros juniores: “Deixe o depurador ser seu amigo”. Em vez de analisar logs, posso definir pontos de interrupção, inspecionar variáveis e percorrer o caminho de execução para corrigir problemas rapidamente. Minhas primeiras buscas por bugs envolveram a reimplantação para adicionar instruções de impressão – a depuração local mudou tudo.
No cenário de desenvolvimento atual, ferramentas como Playwright para testes ponta a ponta e Vitest para testes locais rápidos aprimoram ainda mais o processo de depuração, capacitando os desenvolvedores a detectar e resolver problemas com eficiência.
Desenvolvimento off-line
Você não quer ficar preso à Internet para toda a codificação. Tive muitas experiências no exterior lutando com o Wi-Fi irregular de hotéis. A execução local oferece flexibilidade para codificar em qualquer lugar. Digo à minha equipe: “Esteja sempre preparado para desenvolver offline”. Lembro-me de voos longos, depurando problemas de conexão em vez de bugs de produtos. Nossa configuração local significa que agora posso construir recursos a 30.000 pés de altura, em qualquer lugar do mundo.
Aproveitando os recursos locais
Um ambiente local utiliza totalmente o sistema de arquivos local, CPU, memória e caches para obter velocidade. Lembro aos meus engenheiros: “Sua máquina local lhe dá energia – use-a”. No início da minha carreira, eu estava limitado a pequenas amostras de dados e recursos de nuvem restritos. Com SSDs extremamente rápidos, CPUs multicore e ampla RAM em nossos laptops de última geração, podemos construir sistemas complexos localmente e iterar rapidamente.
Segurança
Manter os dados locais aumenta a segurança, evitando a exposição à nuvem. Como eu digo, “os dados locais permanecem locais”. Já vi vulnerabilidades introduzidas ao copiar dados confidenciais para contas compartilhadas na nuvem muito cedo. O desenvolvimento local permite-nos proteger todo o ciclo de vida, desde o protótipo até à produção, desde que as melhores práticas de segurança de dados sejam seguidas por todos os programadores e dispositivos.
Costumização
Ferramentas e configurações de personalização aumentam a produtividade individual. Como digo aos novos contratados: “Faça seu próprio ambiente de desenvolvimento local”. No início, tive que usar qualquer IDE e scripts confusos que a equipe escolhesse. Fluxos de trabalho configuráveis me permitem ajustar minha configuração local para corresponder ao meu estilo e estado de fluxo. O ambiente de um codificador é pessoal, e editores de código versáteis como o Visual Studio Code (VSCode) definem o padrão ouro para personalização, permitindo que os desenvolvedores ajustem seu ambiente com extensões, temas e configurações que se alinham perfeitamente com suas preferências e necessidades.
Desenvolvimento de nuvem local versus remoto
Nem todas as equipes estão convencidas dos benefícios do desenvolvimento local. Algumas áreas ainda geram debates saudáveis:
Simulação de nuvem: Alguns acreditam que o desenvolvimento local não é bom para o desenvolvimento em nuvem porque você não obtém simulação/emulação de nuvem de alta fidelidade suficiente. Você pode emular mais serviços em nuvem se não estiver desenvolvendo localmente. Acredito que vale a pena construir localmente as economias com a complexidade. Você pode criar rapidamente e, em seguida, realizar testes completos em um ambiente de maior fidelidade. Esse nível de fidelidade é um obstáculo enquanto você está construindo ativamente.
Estandardização: Alguns acreditam que não há controle sobre os padrões em máquinas locais com muitas configurações diferentes. Acredito que diretrizes e processos consistentes de revisão e aprovação são suficientes. Torne mais fácil para os desenvolvedores seguirem os padrões e dê-lhes a liberdade de codificar localmente com alguma personalização para maior produtividade e satisfação.
Isolamento: Alguns acreditam que o desenvolvimento local pode resultar em isolamento, limitando a comunicação e potencialmente causando problemas como mal-entendidos e atrasos. Acredito que o desenvolvimento local incentiva a apropriação, a autonomia e o foco profundo, facilitando a inovação e a resolução criativa de problemas, ao mesmo tempo que permite a colaboração estruturada para resolver potenciais desvantagens.
Conjuntos de dados: Alguns acreditam que o desenvolvimento local não dá acesso a grandes conjuntos de dados necessários para uma formação realista de determinados projectos. Acredito no aproveitamento de ferramentas como ChatGPT, Faker, propagação de banco de dados e Snaplet para criar dados simulados, permitindo testes e desenvolvimento eficazes sem depender de extensos conjuntos de dados reais.
Teste de integração: Alguns acreditam que construir em um ambiente de nuvem é importante quando há integrações envolvidas, porque você precisa saber se elas funcionarão em um ambiente de nuvem. Acredito que você precise testar na nuvem, mas não precisa construir lá. É mais rápido integrar localmente, vê-los quebrar e terminar a construção localmente. Então você pode fazer um teste de ponta a ponta quando terminar. Construir na nuvem é lento. Se você apenas testar lá, é muito mais rápido.
O futuro do desenvolvimento de nuvem local
Embora o desenvolvimento de nuvem local seja altamente produtivo hoje, estou entusiasmado com as possibilidades futuras que otimizarão ainda mais os fluxos de trabalho locais.
Por exemplo, técnicas avançadas de virtualização e contêineres permitirão a simulação local de ambientes de nuvem com ainda maior fidelidade, sem comprometer a velocidade. Os desenvolvedores poderão validar localmente cenários realistas de nuvem.
A assistência de IA ajudará a configurar automaticamente configurações locais personalizadas, ideais para as necessidades e estilo de cada desenvolvedor. Ferramentas inteligentes podem analisar nossos fluxos de trabalho e personalizar ambientes de acordo.
Os recursos aprimorados de snapshot e ramificação facilitarão o isolamento local de recursos e, ao mesmo tempo, permitirão a colaboração entre equipes. Os desenvolvedores serão capazes de encapsular o trabalho sem causar silos.
À medida que o hardware se expande, seremos capazes de condensar até mesmo sistemas de nuvem de grande escala em máquinas locais e executar testes de integração robustos em escala local. Plataformas inteiras podem ser simuladas localmente.
O objetivo é fornecer aos desenvolvedores fluxos de trabalho contínuos de codificação, teste e depuração, onde os ambientes locais “simplesmente funcionam” para que possam manter o foco na construção.
Desenvolvimento de nuvem local com Nitric
Na Nitric, acreditamos que o desenvolvimento local em nuvem é a abordagem mais produtiva e fazemos escolhas específicas em nossas ferramentas para otimizar fluxos de trabalho locais para desenvolvedores em nuvem. Por exemplo, nosso painel local permite testar APIs, programações e serviços de nuvem diretamente na máquina de um desenvolvedor, sem quaisquer dependências. Também oferecemos suporte a vários idiomas em nossa estrutura de código aberto para que os desenvolvedores possam usar sua pilha preferida para o desenvolvimento local de aplicativos em nuvem.
Nossos SDKs consistentes simplificam a colaboração ao abstrair as diferenças na nuvem. Os desenvolvedores podem alternar perfeitamente entre execução local e remota sem se preocupar com detalhes específicos da nuvem porque a Nitric garante compatibilidade entre ambientes de nuvem. Confira este pequeno vídeo, “Depuração facilitada com Nitric Start” para ver como é fácil o desenvolvimento de nuvem local com Nitric.
Continuaremos coletando dados e feedback para refinar iterativamente os fluxos de trabalho de desenvolvimento em nuvem local. Venha conversar conosco sobre suas ideias para melhorar o desenvolvimento de nuvem local.
YOUTUBE.COM/THENEWSTACK
A tecnologia avança rápido, não perca um episódio. Inscreva-se em nosso canal no YouTube para transmitir todos os nossos podcasts, entrevistas, demonstrações e muito mais.
SE INSCREVER
David Moore, chefe de engenharia da Nitric, é um arquiteto de software qualificado. Ele é especialista em desenvolvimento de produtos inovadores e soluções de software de código aberto. Com um forte histórico de liderança de grandes projetos governamentais e de fintech, David liderou o desenvolvimento de estruturas de UX,…
Este site utiliza cookies para melhorar sua experiência de navegação. Ao continuar, você concorda com o uso de cookies. Para mais informações, consulte nossa Política de Privacidade.
Funcional
Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos.O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.