Servidor Dev vs Desarrollo Local

9

En los últimos 2 proyectos que he trabajado, los equipos prefieren un entorno de desarrollo local a un servidor de desarrollo.

El líder del proyecto declaró que lo local era mejor ya que no requería una conexión a Internet. Pero, esto parece asumido cuando se desarrolla.

¿Cuál suele ser mejor?

Kevin Meredith
fuente
44
Es difícil decir cuál es mejor, ambos tienen ventajas y desventajas. Realmente dependería de la situación.
DFord
La respuesta aquí es el clásico del que depende , en última instancia, es una cuestión de conveniencia. Para arquitecturas complejas, una combinación de servicios locales y recursos compartidos no es infrecuente para el desarrollo (por ejemplo, todo lo local pero ese almacén de datos mayoritariamente estático de solo lectura, también podría apuntar al servidor de desarrollo para eso). Lo importante es que se sienta cómodo de que se está desarrollando en un entorno representativo y que tiene buenas pruebas que se ejecutan en un entorno totalmente integrado.
Ant P

Respuestas:

13

Los beneficios de ejecutar local es que puede trabajar sin influir / obstaculizar a otros. Los beneficios de un servidor de desarrollo central es que puede probar cómo sus cambios influyen e interactúan con los cambios que otros están haciendo a medida que se realizan.
Idealmente quieres tener ambos. Desarrolle y ejecute sus pruebas unitarias localmente para que pueda aislar sus cambios hasta que se sienta cómodo con ellos, luego intégrelos en el servidor del equipo para que pueda verificar la integración de los cambios antes de que las cosas pasen a los sistemas de prueba.

Otro beneficio de un servidor local en su computadora portátil es que puede trabajar de forma remota donde no tiene acceso a la red de la empresa y, por lo tanto, no puede acceder al servidor de desarrollo.

jwenting
fuente
9

En realidad hay 3 opciones:

Desarrollo local

  • ventajas:
    • fácil de trabajar con la mayoría de las herramientas de desarrollo
    • sin necesidad de conexión a internet
    • no afecta a otros desarrolladores
  • desventajas:
    • depende del sistema operativo subyacente
    • podría necesitar ejecutar todo tipo de servicios de servidor en su máquina local
    • el entorno puede ser bastante diferente de la producción

Máquina virtual local

  • ventajas:
    • bastante fácil de trabajar con la mayoría de las herramientas de desarrollo, siempre que configures correctamente el uso compartido de carpetas
    • sin necesidad de conexión a internet
    • no afecta a otros desarrolladores
    • el entorno puede ser prácticamente idéntico a la producción
    • servicios de servidor iniciados / detenidos dentro de la máquina virtual
  • desventajas:
    • se requieren un poco más de recursos (principalmente la cantidad de RAM, la CPU no es un problema con el soporte de virtualización de hardware moderno).
    • algunas herramientas locales de depuración que se conectarían directamente al servidor no funcionarán

Servidor de desarrollo compartido

  • ventajas:
    • el entorno puede ser prácticamente idéntico a la producción
    • servicios de servidor en el servidor
  • desventajas:
    • acceso remoto
    • cambios que afectan a otros desarrolladores
    • depuración mucho más difícil (ya sea mediante el uso de herramientas remotas o registros)

Solucion optima

Use cualquiera de las opciones de desarrollo local y vaya al servidor de desarrollo compartido una vez que haya completado una parte autónoma de la función y haya verificado que su código no está completamente roto.

vartec
fuente
3

Su entorno de desarrollo realmente depende de cómo se organiza y ejecuta su departamento / empresa de TI. En general, aunque el entorno de desarrollo cerrado coincida con el de su entorno de producción, mejor.

Si, por ejemplo, está desarrollando aplicaciones de escritorio independientes que no requieren acceso a Internet, entonces, por supuesto, un entorno de desarrollo local es aceptable.

Por otro lado, si está desarrollando una aplicación de escritorio que requiere comunicación con un servidor remoto / base de datos, etc. y no tiene conexión de red para simular esto en el trabajo, puede encontrar errores adicionales en la producción debido a latencia de red, problemas de seguridad.

Si está desarrollando una aplicación de Internet / Nube, si bien puede necesitar Internet para desarrollar la aplicación, necesitará acceso para probar y verificar.

Por cierto, no necesita una conexión a Internet para tener un servidor de desarrollo, solo una conexión de red local.

armitage
fuente
2

Haz ambos,

Desarrollo local hasta que se realice todo lo que esté trabajando y se haya probado.

Empuje al servidor compartido al final del día y ejecute pruebas de integración para asegurarse de no romper nada.

¿Por qué?

  • Es más rápido codificar localmente. Menos pasos entre pruebas, menos preocupaciones de integración.

  • El aislamiento de fallas es más fácil cuando algo se rompe solo después de empujarlo al servidor compartido. Sabes que funciona bien localmente, por lo que debe tener algo que ver con cómo se integra con el servidor compartido. Si trabajó directamente en el servidor compartido, sería especialmente difícil reducir los errores.

Lo haría algo como esto:

Después de que cada persona empuja los cambios al final del día, se ejecutan todas las pruebas de integración y, si alguna falla, entonces sabe exactamente quién rompió el código para proyectar. Revierta los cambios, solucione el problema localmente, luego intente presionarlo nuevamente, repita hasta que todas las pruebas pasen, luego a la siguiente persona.

kiwicomb123
fuente
1

Mucho depende de cómo entregue sus proyectos. Algunos argumentos para tener un entorno de desarrollo central podrían ser:

Control de calidad: ¿hasta dónde quieres llegar a las pruebas? Los entornos de desarrollo local tienen limitaciones en las capacidades de prueba. Los entornos de prueba virtual son más adecuados para pruebas de carga y pruebas de sistema automatizadas.

La infraestructura central puede ayudar a acortar su ciclo de entrega de pruebas de desarrollo. Implementando así una entrega continua.

Los beneficios adicionales del servidor de desarrollo central pueden ser control de fuente, gestión de tareas, compilaciones centrales, ..

Steffe
fuente