7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. General

De FTP a Git: Una historia de implementación

Read Time: 10 mins

Spanish (Español) translation by Steven (you can also view the original English article)

Había una vez un archivo. Estaba en tu computadora y deseabas tenerlo en un servidor.

¿Alguna vez te preguntaste por qué hay tantas maneras de hacer eso? Explicaremos algunos de los conceptos básicos de implementación (o despliegue a servidor) en este artículo para que entiendas cuándo usar qué. ¡Empecemos!


FTP

FTP, File Transfer Protocol por sus siglas en inglés o Protocolo de transferencia de archivos, es considerado por muchas personas como la forma tradicional de "poner un sitio". Es un protocolo, lo que básicamente significa que hay un conjunto de reglas en las que tanto la computadora local como la máquina host acuerdan y pueden enviar mensajes. FTP no es un "programa" per se, sino más bien una línea telefónica.


SFTP/SSH

Entonces, 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 (no obstante, no es necesariamente más rápido). SFTP funciona con SSH, que esencialmente encripta los mensajes que se pasan entre las dos máquinas; por lo que cualquier red maliciosa de terceros o no confiable no puede obtener tus datos sin procesar durante la transferencia.


SFTP vs FTP

Si no entendiste eso, FTP y SFTP son protocolos de transferencia de archivos. Sin embargo, SFTP (y otros protocolos de transferencia con SSH) transfieren archivos y encriptan 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 lamentar.

Pero no tengo ganas de pasar por el problema.

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

Ahora, si todavía eres un poco flojo pero te gusta la idea de una adopción fácil, puedes usar SFTP con casi cualquier cliente FTP. Es más seguro. Asegúrate de que tu servidor sea compatible con SSH (el puerto 22, por lo general, debe estar abierto), y debe estar listo. Pero el objetivo de este artículo no es hacerte pensar en el cifrado y la seguridad de transferencia; es para hacerte pensar en una estrategia de implementación más sólida.


Implementación vs Transferencia de archivos

"Pero no tengo ganas de pasar por el problema"... si este es tu trabajo, hazlo

Si has estado desarrollando durante un tiempo, probablemente hayas realizado el ejercicio de crear un sitio y arrastrar y soltar constantemente tus archivos a tu cliente FTP (o haciendo doble clic, o presionando "sincronizar", o...) . Esta es técnicamente una estrategia de implementación, aunque no muy sólida. Por supuesto, muchas veces este tipo de estrategia funcionará bien, especialmente si eres es la única persona que alguna vez tocará los archivos, y mágicamente nunca has sobrescrito o eliminado un archivo importante. Pero, de nuevo, estás aquí para mejorar, ¿verdad? Y eres un mago.

La implementación, en su forma más simple, es tomar algo de código y convertirlo en código "en vivo". Al transferir un archivo index.html a tu directorio de publicación, ya estás implementando (enviando el archivo a producción). De hecho, al final del día, todas las estrategias de implementación (a menos que estés utilizando un sistema de aplicación compilado) esencialmente mueven archivos o versiones de archivos al "directorio de trabajo actual", o cambian los que ya están allí. Por ejemplo, podrías realizar cambios en el mismo archivo index.html 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 tu equipo ha configurado un sistema que requiera que notifique a todos cuando hayas enviado un archivo al servidor a través de FTP? O tal vez tengas que reiniciar un servidor Django o Rails después de cambiar el código. Si haces esto como parte de la rutina de hacer que tu sitio refleje los cambios que has realizado, eso es parte de tu proceso de implementación.


Conceptos de control de versiones

Entonces, si la implementación significa hacer que algún conjunto de códigos y archivos esté activo, ¿cómo puede haber mucho más que SFTP? "¿Qué es Git y por qué debería importarte?" estarás preguntándote. Git es un sistema de control de versiones o un VCS. Es uno de los muchos VCS que hemos elegido descaradamente como nuestro favorito. Explicaremos por qué más tarde, pero primero hablemos de qué se trata.

Los sistemas de control de versiones realizan muchas tareas, pero lo más importante es proporcionar una red de seguridad a los desarrolladores, especialmente a los equipos de desarrollo. Mencionamos anteriormente cómo FTP y SFTP pueden estar perfectamente bien si eres perfecto y nunca sobrescribirás un archivo o eliminarás una carpeta importante sin querer. Pero si aún no lo has hecho, no te preocupes, sucederá tarde o temprano. Es casi seguro que le ha sucedido a tu equipo si no has descubierto un sistema de solución alternativa. Pero incluso esos sistemas de solución son un sufrimiento. Por ejemplo, ¿alguna vez viste así tu directorio CSS?

Si es así, estás manteniendo versiones de hojas de estilo que eventualmente fusionarás. Por cierto, Git hace esto, pero lo hace mucho mejor, más rápido y con más solidez que tú solo. ¿Mantienes un archivo CSS diferente cada vez que realizas algunos cambios? ¿Y cómo harías para volver a tener tu archivo como lo tenías en un momento determinado? Por supuesto que no puedes. Pero Git hará exactamente eso por ti, y con eso no tendrás un montón de archivos esparcidos y sistemas de nombres oscuros en todas partes. Más allá de esto, Git es lo suficientemente inteligente como para saber cómo tomar tu archivo styles.css y combinarlo con el archivo styles.css de Mary o John. Además, las versiones de Git no son archivos completos; en cambio, se almacenan en deltas, que es esencialmente una representación de código de bajo nivel de las diferencias entre un archivo y otro archivo. Esto significa que las diferentes versiones son mucho más pequeñas y mucho más rápidas de transferir cuando llega el momento de implementarlas.

Pero nada de esto tiene nada que ver con el despliegue, estarás diciendo, ¿no? Tienes razón, los sistemas de control de versiones en gran parte simplemente hacen lo que su nombre sugiere: mantener las versiones en orden. Pero también tienen la capacidad de comunicarse a través de los diferentes protocolos que hemos discutido antes. Git puede leer a través de HTTP y leer y escribir a través de SSH. (Lee más sobre los protocolos de transferencia aquí).

Entonces, si Git tiene estas conexiones directas a través de protocolos de transferencia, puedes enviar versiones hacia adelante y hacia atrás con tu equipo a través de un servidor local, GitHub o tu propio servidor en vivo. Y así es como Git encaja en la implementación. Empujas tu código, Mary y John empujan su código, entonces el responsable de la implementación en tu equipo iniciará sesión en el servidor y fusionará el código en el entorno en vivo. Git ofrece la capacidad de tener múltiples destinos y ramas de código para enviar diferentes versiones a diferentes lugares. Una práctica común es tener un servidor "provisional", donde se empuja el código para verificarlo en un entorno en vivo en un dominio de desarrollo privado. Otro posible flujo de trabajo es nunca conectar los repositorios locales de tu equipo al repositorio en vivo y, en cambio, solo permitir a la máquina de almacenamiento en etapas la capacidad de ingresar al servidor en vivo. Esto crea un sistema de revisión que no se puede omitir.

Las diferentes versiones son mucho más pequeñas y mucho más rápidas de transferir, cuando llega el momento de implementarlas.

Más allá de la puesta en escena, las ramas, los múltiples destinos de implementación y el control robusto de la versión, Git ofrece ganchos (hooks), como "post-recepción", que pueden realizar cualquier tipo de acción que puedas lanzar juntos. Tal vez desees una rama "araña", donde cuando el código llega a un punto en tu servidor, la publicación recibe ese código en múltiples ubicaciones (remotas o no). Aún más, el uso de una plataforma como GitHub ofrece una excelente interfaz gráfica para configurar ganchos. Indica fácilmente a GitHub que te envíe correos electrónicos (o si eres creativo, conecta una notificación de Growl) cada vez que recibas un nuevo cambio (o push) de un miembro del equipo, por ejemplo.

Hay literalmente miles de formas de desarrollar una estrategia de implementación con Git. Puedes ver rápidamente que el uso de un VCS para la implementación ofrece algunas ventajas, protección y potencia muy amplias para tu implementación. Una vez que te tomes el tiempo para aprender lo suficiente sobre Git para establecer un flujo de trabajo (y cometer algunos errores), tu proceso de desarrollo se beneficiará enormemente.


Implementación con Git: Un ejemplo de puros huesos

Los siguientes comandos configurarán un repositorio en una máquina remota, configurarán un repositorio en tu máquina local, agregarán el repositorio remoto como "origen", retirarán una rama llamada "mybranch" que se fusionará en el servidor, presionarán "mybranch" al remoto, "origen", y finalmente crea un registro en el servidor para fusionar "mybranch" con la rama predeterminada "maestra".


Git + Heroku: Una combinación hecha en las nubes

Más allá de hacer tu propio flujo de trabajo impulsado por Git e integrarlo en tu propio servidor, puedes utilizar otros servicios gratuitos, como Heroku;. Heroku es una solución de alojamiento que te permite ejecutar algunas líneas desde tu aplicación controlada por Git e implementarla en la "nube" (en este caso, un clúster remoto de servidores Linux) sobre Git casi sin esfuerzo. Tómate unos minutos para configurar algunas cosas, y estarás listo para las carreras con solo unas pocas líneas de código para una implementación simple. En serio, se ve algo así.

Otras herramientas similares incluyen Pagoda Box, que se centra en arquitecturas basadas en LAMP, y AppFog y PHPFog, que es muy similar a Heroku.

Mientras no haya ningún error en tu configuración y hayas seguido las pautas de Heroku sobre cómo configurar aplicaciones, puedes tener aplicaciones Rails, PHP o Node en funcionamiento en unos momentos. Ah, y ¿mencionamos que puedes hacer aplicaciones simples con tecnología Heroku de forma gratuita? No es hasta que actualices a más instancias, incluyas más memoria, o necesites agregar una base de datos, que incurrirás en gastos de Heroku. Otras herramientas similares incluyen Pagoda Box, que se centra en arquitecturas basadas en LAMP, y AppFog y PHPFog, que es muy similar a Heroku. Estas opciones ofrecen servicios similares e integración de Git, con diferentes estructuras de precios. Los tres ofrecen una opción gratuita para la potencia limitada del servidor. Estos son claramente grandes beneficios, ya que configurar tu propio servidor con arquitecturas de aplicaciones más involucradas como Rails o Node requiere de mucho tiempo. Más allá de eso, la escalabilidad se vuelve muy simple, ya que estos tres servicios ofrecen equilibrio de carga y se puede escalar a múltiples instancias con el clic de un botón. Estos servicios se encargan de la fuerte administración del servidor por ti; por lo que puedes centrarte en la creación de aplicaciones, sabiendo que existe una estrategia de implementación bien documentada, segura y rápida que puedes usar cuando estés listo para salir a producción.


Conclusión

Con suerte, este artículo ha eliminado cierta confusión sobre las diferencias entre Git (y otros VCS) y FTP/SFTP, y lo que significa el concepto de implementación. Además, espero que esto te haya animado a desarrollar tu propia estrategia de implementación, con la ayuda de herramientas como Git y Heroku. Si ya tienes una estrategia, ¿qué tipo de cosas haces durante la implementación?

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.