¿Qué necesito saber sobre los servidores en un rol de desarrollo web? [cerrado]

12

Sé que puede sonar un poco vago, así que intentaré explicar un poco más ...

Después de ser desarrollador autónomo durante muchos años, ahora estoy en busca de un rol de desarrollador web comercial. Mi única experiencia con servidores y alojamiento es subir a través de FTP y jugar un poco con CPanel / WHM. Los roles que estoy buscando son los roles de desarrollo web PHP, MySQL, HTML, CSS, pero en entrevistas recientes me han hecho preguntas sobre cómo configurar las cosas en el servidor, que no tenía idea de lo que se decía ... que no era ideal!

Sin saber más que yo, es difícil explicar qué es exactamente lo que estoy buscando aprender, pero ¿son básicamente los elementos del servidor los que debo saber como desarrollador web? Si usted es un desarrollador web, ¿tiene alguna relación con el servidor además de cargar archivos, y si es así, qué? ¿Los sistemas de control de versiones y Subversion (SVN) a menudo son configurados por el equipo de desarrollo web, ¿podría ser eso de lo que estaban hablando?

John
fuente
2
posible duplicado de ¿Qué debe saber todo programador sobre desarrollo web?
Dan Pichelman
3
Sin embargo, creo que este es más específico sobre los servidores :)
Michael Durrant
2
Odio decírtelo, pero si no puede configurar un servidor web, no es un desarrollador web muy valioso y no es algo que pueda aprender rápidamente en un libro. En lugar de hacer un trabajo de medio culo para aprender los componentes del servidor de un libro. Es mejor perfeccionar sus habilidades PHP y postularse como programador PHP.
Reactgular
@MathewFoscarini porque no soy bueno en eso, ¿debería evitarlo y perfeccionar solo lo que sé? ¿Acaso este consejo no haría que el mundo se detuviera? not a very valuable web developeres lo que estoy tratando de superar, así que estoy feliz de aprenderlo adecuadamente, simplemente no sé cuál es la mejor manera de aprender y en qué áreas enfocarme primero.
John
@john Usted preguntó en el contexto de ser contratado como desarrollador web. Algo para lo que no estás calificado. Si eso es lo que quiere que lo contraten, entonces hágalo, pero no espere una solución a corto plazo para responder preguntas en una entrevista. Esperaría que el empleador esté tratando de eliminar a los candidatos que no tienen experiencia profesional práctica trabajando en servidores. Mi impresión de su pregunta es que está tratando de conseguir un trabajo haciendo lo que no podía hacer como profesional independiente. Podría intentar encontrar un cliente dispuesto a pagar a medida que aprende estas habilidades del servidor.
Reactgular

Respuestas:

10

Esta es una gran serie de preguntas, pero sospecho que muchas personas deben abordarlas, especialmente a medida que comienzan a avanzar en una carrera que comenzó con un fuerte enfoque inicial.

Menciona que va a asumir un rol que incluye el desarrollo de PHP y MySQL. Estas son cosas que deben ejecutarse en el servidor. Ser capaz de hacer buenos juicios técnicos como desarrollador requiere que comprenda cómo funcionan estas cosas en el servidor y cómo interactúan con el front-end web. Entonces, claramente necesita desarrollar una comprensión del servidor.

En lugar de tratar de averiguar por adelantado el conocimiento exacto que pueda necesitar sobre el servidor, recomendaría sumergirse y construir algo, incluida la instalación de todo el software del lado del servidor. Una excelente manera de mojarse los pies es instalar Linux en su computadora. Puede usar algo como VirtualBox para dejar que se ejecute junto con su sistema operativo actual. Instale MySQL, instale y configure el servidor para PHP e intente que todo funcione en conjunto. Lo mejor es que, en estos días, una computadora portátil moderadamente bien equipada puede ejecutar todo esto y ser el "servidor".Esto podría ser difícil al principio, especialmente si no tiene experiencia en el uso de Linux y la línea de comandos. Como desarrollador, al menos debe saber lo suficiente para poder completar este ejercicio y le dará un buen comienzo para descubrir cómo ampliar su conocimiento.

Hay tres áreas en las que probablemente deba ponerse al día:

  1. Los fundamentos del sistema operativo Linux. Quizás comience con una distribución fácil de instalar como Ubuntu.
  2. Configuración de un servidor web y PHP. Instalar Apache es un buen lugar para comenzar. Existen otras alternativas, pero aquí es donde comienza la mayoría de las personas.
  3. Aprender los conceptos básicos de instalación y ejecución de MySQL. Como mínimo, como desarrollador, probablemente necesitará poder escribir DDL para crear tablas y otras estructuras en la base de datos y definitivamente deberá poder consultar la base de datos en el servidor para explorar datos y asegurarse de que la aplicación está escupiendo coincide con lo que está en la base de datos.

Si tuviera que usar Ubuntu, podría seguir las instrucciones básicas aquí para comenzar a trabajar. Tenga en cuenta que tendrá que acelerar un poco los aspectos básicos de Linux antes de comenzar a instalar y jugar con los servidores web / componentes de la base de datos.

En términos de cómo los desarrolladores necesitan interactuar con el servidor, más allá de cargar archivos, creo que esto varía mucho de una organización a otra.

  1. Los desarrolladores a menudo se ocupan de la administración de al menos el entorno de desarrollo. A veces, son los desarrolladores los que configuran el sistema de control de revisiones (por ejemplo, SVN) y el proceso de implementación (mover el código a través de los entornos).
  2. Según su punto de vista, al menos los desarrolladores deberán utilizar el sistema de control de revisiones que se encuentra en el servidor.
  3. También deberá hacer cosas como mirar los registros en un servidor para ver qué mensajes se generan para ayudar a diagnosticar y resolver problemas.
  4. Es posible que deba trabajar con un equipo de infraestructura para determinar cosas como la configuración de red o la configuración de almacenamiento del servidor. A menudo, los problemas de la aplicación son una combinación de la configuración y el código.

El punto es que no hay una respuesta única para saber exactamente cómo necesitará tocar el servidor, pero en el transcurso de su carrera, ciertamente irá más allá de simplemente cargar archivos a través de algo como FTP. Comenzar aprendiendo lo básico ahora será de ayuda.

DemetriKots
fuente
Gran respuesta, gracias! Entonces, cuando estoy configurando 'Mamp' para el trabajo local, ¿es lo mismo pero sin acceso al mundo exterior? He instalado algunos sistemas operativos Linux y conozco algunas cosas de la línea de comandos, pero nada que recordaría fácilmente. Mi conocimiento de los servidores es inexistente, pero siempre pienso que se accede a ellos solo por línea de comandos, y no como un sistema operativo fácil de usar, ¿es ese el caso?
John
2
Es mejor estar cómodo usando la línea de comando. La mayoría de los servidores web 'reales' con los que tratará serán máquinas remotas y no tendrán GUI instaladas.
GrandmasterB
2
Como escribió @GrandmasterB, es útil tener acceso a la línea de comando. En mi opinión, Linux es una buena plataforma de aprendizaje porque te obliga a "acercarte al metal" para aprender sobre lo que está haciendo el sistema operativo más allá de lo que ves en la pantalla. Mire el archivo httpd.conf, comprenda qué está haciendo realmente el servidor web y cómo se integra el módulo PHP. Obtenga una comprensión fundamental de la plataforma y lo convertirá en un mejor desarrollador.
DemetriKots
Me cambié de Linux a los servidores de Windows hace unos años, y nunca miré hacia atrás. Linux es excelente y poderoso, pero debes elegir las herramientas que mejor se adapten a los requisitos del trabajo.
Reactgular
2

Mi primer consejo es no limitarse exclusivamente a un solo rol. Es genial ser un especialista y tener un conocimiento profundo de un conjunto de habilidades en particular (PHP, por ejemplo). Sin embargo, es igual de importante tener un conocimiento amplio que abarque el resto de su dominio.

En mi experiencia, la mayoría de los equipos no buscan contratar a alguien que tenga el conocimiento para reescribir la funcionalidad central de PHP, sino a alguien que pueda manejar cualquier problema que se les presente (aunque tener ese nivel de conocimiento ciertamente no dañaría). O al menos alguien que pueda ayudar a resolver cualquier problema que encuentre el equipo. Por ejemplo, imagine una situación en la que su aplicación deja de funcionar y los clientes se ven afectados. Puede levantar las manos y decir "No tengo idea de qué hacer ..." o puede SSH en el servidor, comenzar a escanear registros, notar que el espacio en disco de un sistema de archivos en particular está lleno y proceder a limpiarlo. Este es un ejemplo menor, pero creo que el punto está claro. Con ese conocimiento básico, como desarrollador, podría escribir un script que supervise ese sistema de archivos en particular y lo limpie una vez que alcance un cierto umbral. Ahora se ha vuelto mucho más valioso para su gerente.

Otra cosa que aprendí durante mi carrera es que las cosas se mueven rápido, y si no sigues el ritmo te vas a quedar atrás. Cuanto más sepa sobre su entorno completo (incluidos los aspectos comerciales), mejor estará. Eso no quiere decir que necesite ser un experto en todo lo que hace, pero al menos tener el conocimiento para no ser etiquetado como despistado. Cuanto más familiar sea, más adaptable será y más valioso será un activo para su empresa.

Para responder específicamente a sus preguntas ...

  • ¿Qué elementos del servidor debo saber como desarrollador?

Estar familiarizado con toda la pila de aplicaciones. Sepa qué servidor web, base de datos, mecanismos de almacenamiento en caché, etc. se están utilizando. Y qué versiones también. Tenga suficiente familiaridad para poder recrear el entorno en su propio servidor. Lo cual, en sí mismo, es de vital importancia. Debe esforzarse por tener más o menos los mismos entornos en desarrollo y producción, ya que reduce las sorpresas ( http://12factor.net/dev-prod-parity ).

  • Como desarrollador, ¿qué tratos tienes con el servidor?

Esto realmente depende del equipo. En mi caso particular, los desarrolladores juegan un papel muy importante en la puesta en escena de los entornos. Estamos más familiarizados con el funcionamiento interno de la aplicación y, por lo tanto, estamos en la mejor posición para determinar qué tecnologías de servidor existen para ejecutarla. Me imagino que no todos los equipos tienen un enfoque tan práctico, pero tener suficiente familiaridad para poder involucrarse en las discusiones es una gran ventaja. Específicamente, en lo que respecta al control de versiones, usted como desarrollador está muy afectado por la tecnología elegida (Git, Subversion, Mercurial, etc.) y, por lo tanto, debe esforzarse por involucrarse en el proceso de decisión.

¿Y ahora que?

¿En cuanto a mi sugerencia sobre la mejor manera de abordar el aprendizaje de todo esto? Mueve tus pies . No se preocupe por tratar de leer todo lo que pueda sobre el tema, la mayoría probablemente se saldrá de su cerebro cuando termine. En cambio, comienza a desarrollar algo desde cero. Comience con Vagrant ; le permitirá crear y administrar fácilmente una máquina virtual que puede usar como su nuevo patio de recreo. Luego, instale un servidor web y una base de datos y comience a crear. Si tienes una idea para una aplicación, perfecta, anímate ... si no, encuentra un tutorial o intenta recrear una aplicación existente. El punto es simplemente familiarizarse con todo el proceso. Además, como desarrollador de PHP, asegúrese de consultar PHP: la forma correcta... realmente contiene mucha información excelente. Y lo más importante, no te estreses. Me imagino que seguiste el camino de un desarrollador porque es algo que disfrutas y te apasiona ... ¡no pierdas de vista eso!

JC Yamokoski
fuente
1

Centrándose en ¿Qué necesita saber sobre los servidores para ser desarrollador web? ...

En realidad sorprendentemente poco. Sus principales áreas de conocimiento deben ser programación, html, php, etc.

Lo que necesita saber es cómo ejecutar las cosas localmente y cuando lo hace, está usando su caja como un "servidor". Entonces, cuando se ejecuta localmente, usa un navegador web para ver las páginas, al igual que con cualquier sitio de Internet ... excepto que el suyo será http://localhostohttp://127.0.0.1

En cuanto a la configuración de cgi, http, etc. No espero que necesites saber eso. Siempre puede trabajar en cualquier libro general sobre la configuración de un servidor web para el sistema operativo en el que trabaja y eso sería suficiente cobertura para conocer los términos generales.

Para una visión más amplia, recomiendo ingresar a Linux y aprender a configurar y configurar máquinas como servidores web. Pero solo si realmente te interesa el material. No solo para impresionar en las entrevistas.

Finalmente, le recomendaría que considere tomar notas durante las entrevistas sobre áreas que no conoce lo suficiente. Sería útil si su pregunta fuera más específica sobre qué términos, etc., no sabía.

Michael Durrant
fuente
Gracias. Me gustaría aprender de todos modos si el tiempo lo permite. ¿Me ayudaría un libro tipo "Linux for Dummies"? Me mudaré de host en breve, ¿es Amazon AWS cloud hosting algo que me beneficiaría con un poco de trabajo o es completamente diferente?
John
1
No usaría un libro de muñecos. Gran parte puede no ser relevante. Intentaría escatimar algo como Administrar servidores web, por ejemplo cengagebrain.com/shop/en/US/storefront/…
Michael Durrant
Sí, ejecute Linux como su máquina de desarrollo y configure un servidor web en él. Acostúmbrate a jugar con él y configurarlo. Aprenderás lo suficiente de esa manera. Eso es básicamente cómo se aprende en el trabajo. La mitad del material está bajo el control de los administradores de sistemas, lo que puede ser bueno para comenzar, pero a medida que avanza, preferirá que se le dé más control de la configuración usted mismo.
wobbily_col
0

Necesita saber las siguientes cosas para completar el ciclo de desarrollo web.

1) IDE (Netbeans y Eclipse, etc.)

2) Cualquier lenguaje de programación para codificación. (PHP, java, etc.)

3) Tecnología frontal para el diseño de páginas (HTML, CSS, etc.)

4) Base de datos respaldada para almacenar y recuperar datos. (MySQL, etc.)

3) Sistema de control de versiones para verificar y recuperar su repositorio de formularios de código.

4) herramienta de compilación para compilar su código con archivos dependientes. (Hormiga, Maven)

6) Servidor web para implementar y ejecutar su código.

7) Necesita conocer el proceso de implementación básica sobre servidores para ejecutar y probar su componente web y ejb. (Tomcat, servidor Web-Logic)

Ratnesh Dubey
fuente
0

Además de la respuesta de DemetriKots, también agregaría la búsqueda de soluciones para la implementación automatizada y la integración continua. Configurar el servidor inicialmente es solo un paso, y la implementación a través de FTP es dolorosa y propensa a errores, sin una solución adecuada para deshacer las implementaciones incorrectas.

  • Hudson - Servidor de integración continua
  • Phing : herramienta de compilación automatizada, específicamente para PHP, basada en Ant
  • Ant - herramienta de compilación automatizada
  • Capistrano : cree scripts de implementación para automatizar y facilitar la implementación de su aplicación web.
Kikimac
fuente