De FTP a Git una historia de implementación

Érase una vez, había un archivo. Estaba en tu computadora y querías tenerla en un servidor.

¿Alguna vez te has preguntado por qué hay tantas formas de hacerlo? Explicaremos algunos de los conceptos básicos de la implementación en este artículo para que sepa cuándo usar qué. Empecemos!


FTP

FTP, o Protocolo de transferencia de archivos, es considerado por muchas personas como la manera de la vieja escuela de "instalar un sitio". Es un protocolo, lo que básicamente significa que hay un conjunto de reglas que tanto la computadora local como la máquina host aceptan y pueden enviar mensajes. FTP no es un "programa" per se, sino más bien una línea telefónica..


SFTP / SSH

Por lo tanto, si FTP es una línea telefónica de la vieja escuela (que todavía funciona bien), SFTP es como una red 4G

Ofrece un nuevo protocolo para que las dos máquinas hablen (aunque no es necesariamente más rápido). SFTP está alimentado por SSH, que esencialmente encripta los mensajes que se pasan entre las dos máquinas; por lo tanto, cualquier red maliciosa de terceros o que no sea de confianza no puede retener sus datos en bruto durante la transferencia.


SFTP vs FTP

Si no lo has captado, FTP y SFTP son protocolos de transferencia de archivos. Sin embargo, SFTP (y otros protocolos de transferencia basados ​​en SSH) transfieren archivos y Encripta la transferencia. "No necesito cifrado", puedes decir. Mucha gente piensa de la misma manera; sin embargo, los desarrolladores con visión de futuro y las herramientas modernas se inclinarán hacia métodos más seguros. Lo has escuchado antes - Más vale prevenir que curar.

Pero no tengo ganas de pasar por el problema..

En primer lugar, si este es tu trabajo, apómalo. Puedes seguir con tu zona de confort (ya sabes, el FTP aún funciona, al igual que tu teléfono fijo). ¿Pero no quieres mejorar? Después de todo, por eso estás aquí, ¿verdad??

Ahora, si todavía eres un poco perezoso pero te gusta la idea de una adopción fácil, puedes usar SFTP con casi cualquier cliente FTP. Es más seguro. Asegúrese de que su servidor admita SSH (el puerto 22, comúnmente, debe estar abierto), y debería estar listo. Pero el objetivo de este artículo no es para que piense en el cifrado y la seguridad de transferencia; Es para que piense en una estrategia de implementación más robusta..


Despliegue vs transferencia de archivos

"Pero no tengo ganas de pasar por el problema". ... Si este es tu trabajo, apágalo.

Si ha estado desarrollando durante un tiempo, es probable que haya pasado por la tarea de crear un sitio y constantemente arrastrar y soltar sus archivos a su cliente FTP (o hacer doble clic, o presionar "sincronizar", o ...). Esta es Técnicamente una estrategia de despliegue, aunque no muy robusta. Por supuesto, muchas veces este tipo de estrategia funcionará bien, especialmente si eres la única persona que alguna vez tocará los archivos, y mágicamente nunca has sobrescrito o eliminado un archivo importante. Pero, una vez más, estás aquí para mejorar, ¿verdad? Y tu eres un mago.

Despliegue, en su forma más simple, es tomar algún código y convertirlo en código "en vivo". Al transferir un index.html archivo en su directorio de servicio, está desplegando. De hecho, al final del día, todas las estrategias de implementación (a menos que esté utilizando un sistema de aplicación compilado) esencialmente mueven los archivos o las versiones de los archivos al "directorio de trabajo actual", o cambian los que ya están allí. Por ejemplo, podrías hacer cambios a ese mismo index.html archivo directamente en el servidor, y eso efectivamente "desplegaría" esos cambios al público. Pero la implementación puede ser mucho más.

¿Alguna vez su equipo ha configurado un sistema que requiere que notifique a todos cuando haya insertado un archivo en el servidor a través de FTP? O quizás tenga que reiniciar un servidor Django o Rails después de cambiar el código. Si hace esto como parte de la rutina de hacer que su sitio refleje los cambios que ha hecho, eso es parte de su proceso de implementación..


Conceptos de control de versiones

Por lo tanto, si la implementación significa hacer que un conjunto de códigos y archivos en vivo, ¿cómo puede haber mucho más que SFTP? "¿Qué es Git y por qué debería importarte?" te estas preguntando Git es un sistema de control de versiones, o un VCS. Es uno de los muchos VCS que hemos elegido sin vergüenza como nuestro favorito. Más adelante explicaremos por qué, pero primero vamos a hablar de qué es.

Los sistemas de control de versiones realizan muchas tareas, pero la más importante es proporcionar una red de seguridad a los desarrolladores, especialmente a los equipos de desarrollo. Anteriormente mencionamos cómo FTP y SFTP pueden estar perfectamente bien si eres perfecto y nunca sobrescribirás un archivo o eliminarás una carpeta importante involuntariamente. Pero si aún no lo has hecho, no te preocupes, esto sucederá tarde o temprano. Es casi seguro que le haya pasado a su equipo si no ha descubierto un sistema de solución alternativa. Pero incluso esos sistemas de solución son un dolor. Por ejemplo, ¿su directorio CSS se ha visto así??