En ocasiones nuestras herramientas de desarrollo retrasan nuestro trabajo y nuestro crecimiento profesional sin que siquiera nos demos cuenta. Vamos a detectar esos casos y a explorar distintas opciones para construir un ambiente de desarrollo local moderno, ágil, portable y adecuado a las tecnologías más actuales del desarrollo web, y cómo acoplarlo a nuestro trabajo con WordPress.
2. Andrés Villarreal
Programador & Consultor Web
En web desde 2003. Ex UTN FRBA y AVG.
Technologies. Plugins y themes publicados en
wordpress.org. Core Contributor en 3.9 y 4.0.
3. Herramientas del
Desarrollador Moderno
En ocasiones nuestras herramientas de desarrollo retrasan nuestro trabajo y
nuestro crecimiento profesional sin que siquiera nos demos cuenta.Vamos a
detectar esos casos y a explorar distintas opciones para construir un
ambiente de desarrollo local moderno, ágil, portable y adecuado a las
tecnologías más actuales del desarrollo web, y cómo acoplarlo a nuestro
trabajo con WordPress.
4. • Desarrollador: toda persona
encargada de llevar a cabo un
proyecto web. Programadores,
diseñadores, implementadores,
encargados de contenidos,
etc.
• Herramienta: todo aquello
que un desarrollador utiliza
para llevar a cabo su trabajo.
Software, documentación,
conocimientos, etc.
Terminología
5. El Desarrollador
Moderno o Profesional
Aquel que siempre está
dispuesto a probar y dominar
nuevas herramientas, acordes
a la evolución de distintas
tecnologías, para mejorar
tanto el proceso como los
resultados de su trabajo.
8. Una herramienta deja de
ser útil cuando:
• Invertimos más tiempo en ella que en nuestro
trabajo puntual.
• Repercute negativamente en la calidad de lo que
hacemos.
9. ¿O SEA QUE SI NO ME PASA
NINGUNA DE ESAS COSAS,
YA ME PUEDO IR?
14. Problemas de los
Gestores de Servicios
• Por defecto, estoy obligado a que todos mis sitios locales estén en el mismo directorio (www o htdocs).
• Por defecto, todos mis sitios locales están bajo el mismo dominio:
http://localhost/capodelmondongo en vez www.capodelmondongo.com
http://localhost/nosoyunesclavodelsistema. en vez de www.nosoyunesclavodelsistema.com
• Si quiero usar un dominio propio para mi sitio, tengo que editar manualmente los archivos hosts y httpd.conf.
• Si quiero usar varios dominios propios simultáneamente, tengo que crear virtual hosts adicionales.
• Si instalo una actualización del gestor, mis configuraciones modificadas se sobreescriben.
• Mi ambiente no es fácil de mover de una máquina a otra.
• Mi ambiente no está controlado: puede entrar en conflicto con programas que corren en mi máquina de escritorio.
• Mi ambiente local no es similar a mi ambiente de producción, y mi sitio puede no comportarse de la misma forma en ambos.
• Las versiones instaladas de Apache y MySQL no siempre son exactamente iguales a las oficiales.
• Si el gestor se vuelve inestable, también se vuelven inestables los servicios.
15. El Problema de Windows
O “El misterio de por qué nada anda como debería”.
16. –Sócrates, 397 AC.
“Podríamos decir que, con el correr del tiempo,
un interrogante que se presenta tan complejo
como el mismísimo problema del sentido de la
vida es por qué los desarrolladores siguen
usando Windows para trabajar.”
17. Qué Onda con el
Desarrollo Local en Windows
• PHP,Apache y MySQL están pensados para
UNIX.
• MS-DOS es ineficiente para tareas complejas.
• Los avances en Windows llevan mucho más
tiempo en aparecer que en sistemas UNIX.
• La portabilidad de los ambientes de
desarrollo es inherentemente complicada.
• Los programas de escritorio pueden interferir
con nuestras aplicaciones de desarrollo.
• La mayoría de los desarrolladores
profesionales experimentados trabajan con
sistemas UNIX.
18. ¿O SEA QUE TENGO QUE
CORRER A INSTALAR
UBUNTU?
23. Terminales UNIX
• UNIX es el framework sobre el
que están construidos Linux y
Mac OS X, en todas sus versiones
y distribuciones.
• A través de la línea de comandos
podemos ejecutar procesos
automatizados muy potentes y
abarcativos, los cuales no suelen
ser accesibles desde la interfaz
gráfica.
• Existen emuladores de terminal
(limitados) para Windows, como
MINGW32 y CYGWIN.
25. Caso Común de
Versiones no Controladas
Estado inicial de carpeta htdocs:
nosoyunesclavodelsistema-backup-20150202
nosoyunesclavodelsistema
Estado de carpeta htdocs una
semana después:
nosoyunesclavodelsistema-backup-20150202
nosoyunesclavodelsistema-backup-20150203
nosoyunesclavodelsistema-backup-20150204
nosoyunesclavodelsistema-backup-20150205
nosoyunesclavodelsistema
26. Problemas de la Falta de
Control de Versiones
• Consume bastante tiempo y es muy susceptible
de errores.
• La posibilidad de ver estadíos intermedios de
nuestro código queda descartada por completo.
27.
28. Ventajas del Software de
Control de Versiones
• Con unas pocas líneas de comando puedo
registrar cambios en mi código y volver a
cualquier punto de mi proyecto.
• Puedo cerrar versiones.
• Puedo crear ramas de desarrollo separadas
para features, bugs y otras tareas.
• Puedo ver detalles de diferencias entre un
punto y otro del desarrollo.
• Puedo centralizar mi proyecto en un
servidor remoto, a manera de repositorio,
para que mis colaboradores y yo podamos
acceder a él desde cualquier lugar.
30. Problemas del
Deployment Vía FTP
• Los datos que se envían no
están encriptados.
• No está pensado para subir
grandes cantidades de
archivos.
• No está pensado para
trabajar con diferencias
entre archivos.
31. Alternativas al
Deployment Vía FTP
• SCP y SFTP: más seguros, con encriptación de
datos.
• FTP + zip/gzip/tarball: más eficiente - se sube
un solo archivo y se lo descomprime en
producción.
• VCS: más eficiente - solamente se actualizan
las diferencias de archivos.
• Capistrano: más seguro y más eficiente -
permite deployar usando distintos protocolos
(SFTP, SCP) oVCS (GIT, SVN, Mercurial) y
ejecutar tareas adicionales en el servidor de
destino.
• rsync: más seguro y más eficiente - con
encriptación de datos y actualización limitada a
diferencias de archivos.
36. –Gente cuyo código suele ser incomprensible para las formas de vida
basadas en carbono.
“Pero esas guidelines son feas, las de Java son más
lindas, y si las uso voy a perder espontaneidad y
blablablasmlasdlkd (…)”
40. Beneficios del
Software de Virtualización
• Conglomera muchas posibles soluciones a los
problemas anteriores, ofreciendo un ambiente de
desarrollo integral.
• Permite instalar un nuevo sistema operativo
“encapsulado” y trabajar en un entorno 100%
controlado y portable.
41. Vagrant
• RequiereVirtualBox o
VMWare.
• Construido sobre Ruby.
• Permite crear ambientes de
desarrollo diferenciados,
extensibles, livianos y portables.
• Gestiona sincronización y
compartición de carpetas de
forma automática.
42. Varying Vagrant Vagrants (VVV)
• Ubuntu 14.04 LTS.
• NGINX, PHP-FPM, MySQL, phpMyAdmin.
• xDebug (debugging)
• PHPUnit (testing)
• GIT (control de versiones)
• Composer (control de dependencias)
• NodeJS (framework JS)
• Grunt (JS task runner)
• WP-CLI (línea de comando para WordPress)
• Tres instalaciones de WordPress: stable (última versión
pública), develop (última versión sin compilaciones de
archivos) y trunk (última versión beta).
43. ¿Cómo Empiezo?
1. InstalarVirtualBox
2. Instalar GIT
3. InstalarVagrant
4. Descargar instancia deVVV:
git clone git@github.com:Varying-Vagrant-Vagrants/VVV.git ./nosoyunesclavodelsistema
5. Ingresar a mi instancia deVVV:
cd ./nosoyunesclavodelsistema
6. IniciarVagrant:
vagrant up --provision
45. ¿Qué Resuelve
la Virtualización?
• Permite usar versiones oficiales y actualizadas de Apache/NGINX, MySQL y PHP.
• Facilita crear y correr nuevos sitios.
• Facilita el control de versiones.
• Facilita el uso de terminales.
• Facilita backups remotos.
• Facilita testing y debugging.
• Facilita contribuciones a WordPress Core.
• Facilita procesos de deployment.
• Ofrece un entorno controlado y estable.
• Ofrece un entorno portable.
• Ofrece herramientas que permiten chequear que nuestro código siga las
guidelines de WordPress.