Cambiando mi pila del lunes



Saludos colega!



Aproximadamente un año antes de que se escribiera este artículo, comencé a sentir que estaba comenzando a agotarme. El trabajo, que desde hace mucho tiempo se convirtió en un oficio, ha dejado de traer esa sensación de estudiante de pionero, familiar a todo programador, que trae euforia. En aras de este sentimiento, en aras de nuevos conocimientos, una vez me senté frente al monitor durante 18 horas al día. Hace mucho que se fue ... ¡pero recientemente experimenté este sentimiento nuevamente! Al principio estaba tranquilo, inusual debido a un largo descanso, pero con el tiempo se encendió y estalló en llamas.



Si usted es el mismo que yo, un programador con aproximadamente 12 años de experiencia, aproximadamente 30 años, que permanece en su propia pila de puestos (especialmente si es C # .Net MVC), entonces lo invito a cat. Para los más jóvenes, creo que también será útil estar preparados con antelación.



El trasfondo comienza con el hecho de que he estado desarrollando en la pila C # .Net (ASP, MVC, servicios de Windows) durante mucho tiempo. Me parece que me pueden llamar algo así como un desarrollador de pila completa: bases de datos, backend, frontend e incluso programación de Olimpíadas; pasé todo esto por mí mismo. No diré que soy un profesional, pero es difícil sorprenderme con algo cuando se trata de .Net. No, no asistí a conferencias .next y similares, pero estudié con varios veteranos de la universidad, conozco a algunos personalmente, y la cantidad de proyectos de mediana escala que he lanzado en EF ha superado los 30.



Como se indicó antes del kata, me pareció que me quemo. Cuando nos trajeron un nuevo proyecto para su implementación (no demasiado grande, ¡esto es importante!), Ya en la primera reunión sabía qué y cómo lo haríamos: aburrido.



¿No te reconoces todavía? Si eres más joven, asegúrate de seguir leyendo, tienes todo por delante. Si has ido más lejos que yo, sigue leyendo, y en los comentarios cuéntanos tu experiencia.



Entonces, tenía alrededor de medio año de trabajo poco interesante por delante. ¡Pero completamos el proyecto unos meses antes, aprendimos un montón de cosas geniales, mejoramos en áreas relacionadas y nos divertimos mucho! No me demoraré mucho ... el nuevo proyecto se realizó en una pila completamente nueva: Node.js + React.



Los colegas, previendo el suceso, deben hacer inmediatamente una reserva de que la decisión de cambiar la pila no se produjo de forma espontánea. Durante varios meses he estado gestando la idea de que .Net MVC no es la mejor opción cuando se trata de proyectos pequeños. Estaba buscando alternativas, mirando a mi alrededor. Acerca de la combinación de Node.js y React, pensé que estas son herramientas que están más perfeccionadas para el lado del servidor y el lado del cliente que C #, pero la primera experiencia ya superó todas mis expectativas.



Estipulemos las reglas



Primero, considero necesario aclarar algunos detalles y condiciones bajo las cuales la idea clave del artículo, reemplazar la pila .Net MVC y Node.JS + React, puede considerarse correcta. No me inclino a ir a los extremos y argumentar que, en todos los casos, tal evento será útil, por lo que aquí hay una breve lista de las restricciones iniciales:



  • Proyectos que involucran hasta 3-5 programadores;
  • Falta de cálculos esenciales y lógica compleja en el backend;
  • Disponibilidad y / o necesidad de unificar backend y frontend;


Proyectos que involucran hasta 3-5 programadores



Esta limitación surgió debido al supuesto de que cuando un gran equipo de 5 personas o más participa en un proyecto, ya estamos hablando de aplicaciones corporativas serias que serán difíciles de implementar sin las ventajas de .Net (y no solo ASP.NET, sino también Core). Hablaremos de las ventajas y desventajas en sí mismas a continuación.



Falta de computación esencial y lógica compleja en el backend



Usar JavaScript (o incluso TypeScript, no te salvará), un lenguaje escrito dinámicamente sin multihilo y sin Linq, para implementar cálculos o lógica de negocios más o menos compleja, simplemente no es posible - el lenguaje simplemente no está diseñado para esto. No se puede decir lo mismo de C #. Es importante tener en cuenta las características específicas del instrumento para no clavar clavos con un microscopio.



Disponibilidad y / o necesidad de unificar backend y frontend



La unificación ayudará a reducir las barreras de entrada, los presupuestos y los plazos. Pero el palo siempre tiene dos extremos, y un paso precipitado por parte de los “gerentes eficaces” sin una necesidad real puede conducir a pérdidas.



Con estas limitaciones en mente, sugiero la siguiente lista de verificación, a través de la cual puede evaluar la aplicabilidad a su ecosistema de proyectos.



Lista de Verificación



Costo de desarrollo y mantenimiento



¿Su presupuesto requiere una barra de talento baja y bajos costos de mantenimiento?



Si tiene una empresa pequeña o un equipo de programadores, la complejidad de las herramientas de desarrollo consume recursos valiosos. La pila Node.js + React tiene una serie de ventajas distintas sobre .Net MVC o Core: 



  1. Unificación de backend y frontend: los especialistas podrán trabajar como una pila completa más y más fácilmente que si fuera una pila C #;
  2. Menos requisitos de recursos del servidor: Node.js no es tan glotón como .Net y es verdaderamente multiplataforma;
  3. La velocidad de desarrollo es mayor: debido a la falta de escritura, la tasa de lanzamiento de las primeras versiones del producto aumenta significativamente.




Lanzamiento de MVP (producto mínimo viable) y PoC (prueba de concepto)



¿Son sus fechas límite para el lanzamiento de un MVP o PoC?



En términos de la velocidad de implementación de MVP o PoC, la pila Node.js + React está sin duda en una mejor posición que la pila .Net. Teniendo en cuenta el punto anterior sobre el costo de desarrollo y mantenimiento, aparece una sinergia para la tarea de lanzar un MVP: rápido, barato, eficiente. Además, la estabilidad de Node.js está en un nivel alto y no es satisfactoria.



Entorno de desarrollo



¿La funcionalidad de los IDE "ligeros" será suficiente para usted?



Los IDE ligeros son excelentes para Node.js junto con React. Por ejemplo, VS Code no requiere mucha potencia durante el desarrollo, un editor multiplataforma, distribuido de forma gratuita, su funcionalidad es suficiente para desarrollar cómodamente tanto el backend como el frontend.

Para proyectos en C #, puede usar Visual Studio Community, también un IDE shareware, pero ya requerirá recursos, no será tan rápido ni multiplataforma.



Mecanografía de idioma



¿Puede proporcionar soporte y desarrollo de alta calidad para su proyecto, dada la falta de mecanografía?



La falta de mecanografía en un idioma es un arma de doble filo. Por un lado, este enfoque le permite multiplicar la velocidad de desarrollo al reducir la cantidad de código. Por otro lado, el volumen de pruebas se multiplica. Además, algunos errores pueden aparecer solo durante la operación, pasando con éxito todas las pruebas. Se vuelve difícil hacer grandes proyectos sin escribir.



Rendimiento y escalabilidad



¿Está listo para deshacerse del subproceso múltiple completo desde el primer momento? ¿Su proyecto carece de cálculos complejos o lógica empresarial?



Como sabe, Node.js implementa un modelo basado en eventos de un solo subproceso. Esto es excelente para una gran cantidad de consultas, pero es completamente inadecuado para paralelizar cálculos o implementar lógica comercial compleja. Por lo tanto, al elegir una pila para un backend en Node.js, uno debe ser consciente de los matices de su trabajo.



Multiplataforma



¿Necesita multiplataforma lista para usar?



Sí, bajo .Net está .Net Core, que dice ser multiplataforma. Pero todavía no es .Net MVC. Si ha ensamblado una gran cantidad de componentes listos para usar para .Net MVC, la transición a .Net Core no será fácil. Con Node.js no tiene que preocuparse por eso y utilizar sus desarrollos para cualquier plataforma, dependiendo de los requisitos del cliente.



Conclusión



El rico mundo de los módulos de Node.js le permitirá implementar de manera eficiente y rentable casi cualquier tarea de aplicación, desde autorizaciones en sistemas corporativos y rest-api hasta chat bots de mensajería.



La implementación de aplicaciones Node.js en cualquier sistema operativo es un placer y un par de comandos. Y la necesidad de capacidad del servidor se puede reducir en un orden de magnitud en comparación con .Net, y puede elegir con seguridad "pagar por recursos" en nuestro configurador de servidor dedicado.



¿Ha intentado cambiar la pila?






All Articles