¿Qué escenarios requieren que un desarrollador implemente múltiples idiomas en el lado del servidor de una base de código?

Hay algunos escenarios.

  • Cuando necesita un rendimiento extremo pero también un desarrollo rápido en otras áreas y no puede encontrar una herramienta que cumpla con sus dos requisitos.
  • Cuando se trata de código heredado en un idioma, pero en algún momento alguien toma la decisión de cambiar de tecnología para obtener ventajas X, pero todo al mismo tiempo que mantiene la base de código heredada porque migrar todo llevaría una enorme cantidad de tiempo sin ninguna ventaja y Muchos posibles errores.
  • Cuando su equipo no es lo suficientemente grande y necesita externalizar algunos requisitos a otros y el que hace la llamada decide que los chicos que codifican en PHP son más baratos, por lo tanto, la opción obvia, ya que probablemente ese código ” nunca cambiará “ y” no necesitarán ser mantenidos por el equipo de Java “.

Algunas cosas que no califican como backend, pero que todavía toman tiempo y terminas usando más de un idioma.

  • Disparadores La mayoría de las veces son la peor solución, pero cuando no puedes evitarlos, terminas colgando con ellos. Esto no califica como backend, pero aún así.
  • Implemente scripts, bash, batch o lo que sea que esté usando.
  • Cree scripts, bash, batch o mi querido http://www.gradle.org/.

Fuera de estos casos, no puedo pensar en más razones para usar más de un idioma en una sola aplicación. Si hablamos de la arquitectura de una aplicación completa y sus diferentes módulos, entonces la única razón válida es que diferentes idiomas podrían ser la herramienta adecuada para resolver diferentes problemas.

La mayoría de los lenguajes de programación tienen una “timonera”, también conocida como algo en lo que son particularmente buenos. Del mismo modo, los expertos en diversos campos tienen los idiomas que prefieren. Por ejemplo, puede estar usando algo como Ruby para construir su sitio web. Supongamos también que su aplicación es de naturaleza muy científica. Puede encontrar que ciertos algoritmos centrales se implementan en Python porque los científicos parecen preferir ese lenguaje. O tal vez el código está escrito en C ++ debido a los requisitos de rendimiento. Ambos son escenarios reales de uno de mis trabajos recientes. Como dice mi amigo Glenn, también es común usar Java para los servicios y luego usar un lenguaje de secuencias de comandos como node.js para unir las cosas. Por último, considere las necesidades de “big data”. A medida que recopile grandes cantidades de datos, deberá analizarlos. Esto a menudo se hace usando un lenguaje como Pig. Se trata de elegir la herramienta adecuada para el trabajo, o la herramienta adecuada para la persona que tiene que hacer el trabajo.

Claro que hay toneladas de casos de uso, pero lo que hay que tener en cuenta es si se trata del backend de una capa de presentación o de todo el backend de la aplicación.

Por ejemplo, tome una aplicación de encuesta simple. Es posible que reciba datos en un sistema Node que se utiliza para interactuar con el cliente. Luego se pasa a decir un sistema Java para hacer algún procesamiento, etc. Luego se dirige a una base de datos que probablemente esté integrada en C. Si desea extraer datos y está utilizando Hadoop, tiene Pig para eso, cierre El trabajo de metal necesario para grandes conjuntos de datos es normalmente C, especialmente si necesita ser transformado con frecuencia. Sigue y sigue dependiendo de su producto

Entonces, sí, si la aplicación es lo suficientemente compleja, para lograr un rendimiento decente, la mayoría de los sistemas no solo pueden, sino que deben usar una pila saludable de diversas tecnologías

Si, por ejemplo, su aplicación permite el contenido cargado y necesita aplicar algún tipo de conversión / transcodificación antes de guardarlo en un almacenamiento persistente, lo más probable es que los motores de conversión se construyan / implementen con algo diferente de lo que uno usaría comúnmente para la web típica back end

He descubierto que una arquitectura común es tener un conjunto de servicios Java que implementen el trabajo pesado de una aplicación, y un servidor de aplicaciones, escrito en algo como node.js, o php o incluso (blech) ruby, frente a eso para interactuar con el cliente. Los servicios Java implementan algún tipo de API REST, o algo similar, con el que se comunica el servidor de aplicaciones.

Utiliza las mejores herramientas para el trabajo.

Para los servicios de alojamiento de fotos, puede usar Ir para manejar la carga. Puede usar Python para aplicar filtros en las imágenes. Puede usar NodeJS para ejecutar el servidor web. Puedes usar Java para hacer colas, pubsub. Puede usar Scala para escribir el mapa, reducir el trabajo para informar el análisis, etc.

El CTO o el vicepresidente de Eng deben tomar una decisión sobre el tipo de idiomas diferentes admitidos oficialmente.

Tuve un proyecto donde mi sitio web estaba en C # con un servidor SQL y MySQL usando T-SQL. Tuve que cargar la base de datos MySQL usando PERL que fue cron’d y administrado a través de scripts bash. Así que aprovechó 4 idiomas diferentes en el back-end.

Es cierto que esto es bastante raro, y apesta tener que cambiar idiomas como ese. En mi experiencia, es raro tener que hacer esto, y este escenario fue un caso especial y la única vez que tuve que tener una configuración como esta.

Supongo que una configuración de back-end multilingüe más común sería una aplicación que usara algún lenguaje web (Python. Ruby, php, etc.) con TSQL o PL-SQL para el trabajo pesado y luego PERL para algún tipo de pegamento de procesamiento por lotes.

Si está trabajando con un sitio web y una base de datos, siempre tendrá que agregar SQL a la mezcla, pero si está buscando más de 2 idiomas en el back-end, probablemente se deba a tener que agrupar y combinar algunos otros datos a través de otro idioma.

Estoy seguro de que otras personas en quora pueden ofrecer algunas historias más interesantes.

¡Salud!

More Interesting

¿Es 'no hay documentación mínima' un mito en Scrum? ¿Realmente podemos entregar proyectos sin una cantidad suficiente de documentación para auditorías y referencias futuras?

Cómo hacer mi propio sistema de reconocimiento de voz como Apple Siri

¿Quién es más probable que tenga más éxito en DevOps: un desarrollador que aprende habilidades de administración de sistemas o un administrador de sistemas que adquiere algunas habilidades de desarrollo de software?

¿EAT24 tiene una API?

¿Cuáles son los protocolos que debe conocer un ingeniero de sistemas integrados?

¿Por qué Acme / ACME se usa generalmente como nombre de cliente en demostraciones de productos?

¿Por qué los estudiantes de informática se llaman ingenieros?

¿Cuáles son las principales compañías tecnológicas en Turquía para ingenieros de software?

¿Cómo se rastrea la velocidad de apertura de procesos en Linux?

¿Vale la pena aprender el lenguaje 'D' después de aprender C / C ++ / Python?

¿Cuál es el mejor sitio de aptitud?

¿Puedo estudiar python al mismo tiempo con C ++?

¿Alguna de las principales compañías tecnológicas de EE. UU. Ha comenzado a contratar desarrolladores en el extranjero en respuesta a la escasez de mano de obra de Silicon Valley y el aumento de los salarios?

¿En qué software podemos diseñar un quadcopter / drone?

¿Por qué la mayoría de los trabajos de ingeniería remota de software usan lenguajes de programación diferentes a los trabajos de oficina estándar?