Mudando minha pilha de segunda



Saudações colega!



Cerca de um ano antes de este artigo ser escrito, comecei a sentir que estava começando a queimar. O trabalho, há muito transformado em artesanato, deixou de trazer aquele sentimento estudantil de pioneirismo, familiar a todo programador, que traz euforia. Por causa dessa sensação, por causa de novos conhecimentos, uma vez eu sentei no monitor por 18 horas por dia. Já passou ... mas recentemente tive essa sensação novamente! No início estava quieto, incomum devido a uma longa pausa, mas com o tempo ele explodiu e explodiu em chamas!



Se você é o mesmo que eu, um programador com experiência de cerca de 12 anos, cerca de 30 anos, demorando-se em sua própria pilha de stall (especialmente se for C # .Net MVC), então eu o convido em cat. Para os mais novos, acho que também será útil estar preparado com antecedência.



O pano de fundo começa com o fato de que venho desenvolvendo na pilha C # .Net (ASP, MVC, serviços do Windows) há muito tempo. Parece-me que posso ser chamado de algo como um desenvolvedor full-stack: bancos de dados, back-end, front-end e até mesmo programação de olimpíada - passei por mim mesmo. Não direi que sou profissional, mas é difícil me surpreender com algo quando se trata de .Net. Não, não participei de .próximas conferências e afins, mas estudei com vários veteranos na universidade, conheço alguns deles pessoalmente, e o número de projetos de médio porte que lancei em EF ultrapassou 30.



Como foi indicado antes do kata, me pareceu que eu queimo. Quando um novo projeto foi trazido para nós para implementação (não muito grande - isso é importante!), Já na primeira reunião eu sabia o que e como faríamos - chato.



Você ainda não se reconhece? Se você é mais jovem, continue lendo, você tem tudo pela frente. Se você foi além de mim, continue lendo, e nos comentários conte-nos sobre sua experiência.



Então, eu tinha cerca de meio ano de trabalho desinteressante pela frente. Mas concluímos o projeto alguns meses antes, aprendemos várias coisas legais, melhoramos em áreas relacionadas e nos divertimos muito! Não vou atrasar ... o novo projeto foi feito em uma pilha completamente nova: Node.js + React.



Os colegas, prevendo o acontecimento, devem imediatamente fazer uma reserva de que a decisão de mudar a pilha não veio espontaneamente. Há vários meses venho levando a ideia de que .Net MVC não é a melhor escolha quando se trata de pequenos projetos. Eu estava procurando alternativas, olhando ao redor. Sobre a combinação de Node.js e React, achei que essas são ferramentas mais aprimoradas para o lado do servidor e do cliente do que o C #, mas a primeira experiência já excedeu todas as minhas expectativas.



Vamos estipular as regras



Em primeiro lugar, considero necessário esclarecer alguns detalhes e condições sob as quais a ideia-chave do artigo - substituir a pilha .Net MVC e Node.JS + React - pode ser considerada correta. Não estou inclinado a ir a extremos e argumentar que tal evento será útil em todos os casos, então aqui está uma pequena lista das restrições iniciais:



  • Projetos envolvendo até 3-5 programadores;
  • Falta de cálculos essenciais e lógica complexa no backend;
  • Disponibilidade e / ou necessidade de unificar back-end e front-end;


Projetos envolvendo até 3-5 programadores



Essa limitação surgiu devido à suposição de que quando uma grande equipe de 5 pessoas ou mais participa de um projeto, já estamos falando sobre aplicativos corporativos sérios que serão difíceis de implementar sem as vantagens do .Net (e não apenas do ASP.NET, mas também do Core). Falaremos sobre as vantagens e desvantagens a seguir.



Falta de computação essencial e lógica complexa no backend



Usar JavaScript (ou mesmo TypeScript, não vai te salvar), uma linguagem digitada dinamicamente sem multithreading e sem Linq, para implementar cálculos ou lógica de negócios mais ou menos complexa, é simplesmente impossível - a linguagem simplesmente não foi projetada para isso. O mesmo não pode ser dito sobre C #. É importante levar em consideração as especificidades do instrumento para não martelar pregos com um microscópio.



Disponibilidade e / ou necessidade de unificar back-end e front-end



A unificação ajudará a reduzir as barreiras de entrada, orçamentos e prazos. Mas a vara sempre tem duas pontas, e um passo precipitado da parte de “gerentes eficazes” sem necessidade real pode levar a perdas.



Com essas limitações em mente, sugiro a seguinte lista de verificação, por meio da qual você pode avaliar a aplicabilidade ao seu ecossistema de projetos.



Lista de controle



Custo de desenvolvimento e manutenção



Seu orçamento exige uma barra de talentos baixa e baixos custos de manutenção?



Se você tem uma pequena empresa ou uma equipe de programadores, a complexidade das ferramentas de desenvolvimento consome recursos preciosos. A pilha Node.js + React tem uma série de vantagens distintas sobre .Net MVC ou Core: 



  1. Unificação de back-end e front-end - os especialistas serão capazes de trabalhar como uma pilha completa mais e mais facilmente do que se fosse uma pilha C #;
  2. Menos requisitos de recursos do servidor - Node.js não é tão glutão quanto .Net e é verdadeiramente multiplataforma;
  3. A velocidade de desenvolvimento é maior - devido à falta de digitação, a taxa de lançamento das primeiras versões do produto aumenta significativamente.




Lançamento de MVP (produto mínimo viável) e PoC (prova de conceito)



São seus prazos para um lançamento de MVP ou PoC?



Em termos de velocidade de implementação de MVP ou PoC, a pilha Node.js + React está, sem dúvida, em uma posição melhor do que a pilha .Net. Levando em consideração o ponto anterior sobre custo de desenvolvimento e conteúdo, surge sinergia para a tarefa de lançamento de um MVP: rápido, barato, eficiente. Além disso, a estabilidade do Node.js está em um alto nível e não é satisfatória.



Ambiente de desenvolvimento



A funcionalidade de IDEs "leves" será suficiente para você?



IDEs leves são ótimos para Node.js em conjunto com React. Por exemplo, o VS Code não requer muita energia durante o desenvolvimento, um editor de plataforma cruzada, distribuído gratuitamente, sua funcionalidade é suficiente para desenvolver confortavelmente back-end e front-end.

Para projetos em C #, você pode usar o Visual Studio Community - também um IDE shareware, mas já exigirá recursos, não será tão rápido e não será multiplataforma.



Digitação de idioma



Você pode fornecer desenvolvimento e suporte de alta qualidade para seu projeto, dada a falta de digitação?



A falta de digitação em um idioma é uma faca de dois gumes. Por um lado, essa abordagem permite que você multiplique a velocidade de desenvolvimento reduzindo a quantidade de código. Por outro lado, o volume de testes está se multiplicando. Além disso, alguns erros podem aparecer apenas durante a operação, passando com êxito em todos os testes. Torna-se difícil fazer grandes projetos sem digitar.



Desempenho e escalabilidade



Você está pronto para abandonar o multithreading completo fora da caixa? Seu projeto carece de cálculos complexos ou lógica de negócios?



Como você sabe, o Node.js implementa um modelo orientado a eventos de thread único. Isso é ótimo para um grande número de consultas, mas não é adequado para paralelizar cálculos ou implementar lógicas de negócios complexas. Assim, ao escolher uma pilha para um back-end em Node.js, deve-se estar ciente das nuances de seu trabalho.



Plataforma cruzada



Precisa de plataforma cruzada fora da caixa?



Sim, em .Net existe .Net Core, que afirma ser multiplataforma. Mas ainda não é .Net MVC. Se você montou uma grande quantidade de componentes prontos para .Net MVC, a transição para .Net Core não será fácil. Usando Node.js, você não precisa se preocupar com isso e usar seus desenvolvimentos para qualquer plataforma, dependendo dos requisitos do cliente.



Conclusão



O rico mundo dos módulos Node.js permitirá que você implemente de maneira eficiente e econômica quase qualquer tarefa de aplicativo, desde autorizações em sistemas corporativos e rest-api a bots de chat de mensageiros.



Implantar aplicativos Node.js em qualquer sistema operacional é um prazer e alguns comandos. E a necessidade de capacidade do servidor pode ser reduzida em uma ordem de magnitude em comparação com .Net, e você pode escolher com segurança "pagar pelos recursos" em nosso configurador de servidor dedicado.



Você já tentou mudar a pilha?






All Articles