La mejor manera de aprender sobre desarrollo web backend

Mi artículo anterior describía cómo puede ingresar al desarrollo de frontend. También discutió cómo la interfaz puede ser un lugar lleno de minas terrestres: si ingresa al lugar equivocado, se verá abrumado por los numerosos marcos del ecosistema de JavaScript.

En este artículo de blog, veamos cómo puede ingresar al desarrollo de back-end. A lo largo del camino, responderé algunas de las preguntas más comunes que la gente me hace al respecto.

¿Qué es el desarrollo backend?

El desarrollo de front-end implica lo que un usuario ve en la pantalla cuando abre una URL específica de su propiedad. Incluso en un entorno completamente estático (con solo HTML / CSS), cuando alguien abre un sitio web, algún servidor del planeta necesita responderle con esos archivos HTML y CSS.

Ese servidor es solo una computadora, como la que usa usted mismo para navegar por Internet. Pero se ha ajustado para el rendimiento y no tiene componentes innecesarios como un mouse o un teclado conectados. Y se encuentra con toneladas de otras computadoras probablemente en un almacén de datos.

La programación de esas computadoras de alguna manera especial se denomina desarrollo de back-end .

Puede pensar que el desarrollo de backend se llama así porque se ejecuta a espaldas del usuario. Un visitante de su sitio web nunca "accede" completamente al back-end. Simplemente se comunican con su servidor, ya sea directamente a través de puertos para un acceso muy limitado (como la transferencia de archivos HTML / CSS) o ni siquiera eso, enterrados bajo CDN o firewalls (como Cloudflare).

Ahora que tenemos una comprensión clara de lo que significa el desarrollo de back-end, entremos en algunas preguntas reales .

¿Se requieren conocimientos de programación front-end para el back-end?

TLDR; No.

El desarrollo de back-end, como se mencionó anteriormente, implica la programación de una computadora ubicada probablemente en el otro lado del planeta responsable de responder a lo que los usuarios dicen desde sus propias computadoras.

Si es un desarrollador de backend a tiempo completo, realmente no necesita preocuparse por lo que sucede dentro de esos archivos HTML, CSS y JavaScript que envía al navegador del usuario. En cambio, debe centrarse más en el rendimiento del servidor, el código del servidor y el rendimiento.

¿Qué implica el desarrollo de back-end?

Bueno, siguiendo los libros, puede decir que una persona que codifica una aplicación que puede responder a solicitudes HTTP es un desarrollador de back-end.

Pero, en realidad, a veces los desarrolladores de back-end pueden hacer mucho más que escribir scripts de servidor. Tienen el conocimiento para configurar servidores proxy inversos (NGiNX / HAProxy), habilitar la compresión y otras formas de acelerar el sitio y configurar un entorno de ventana acoplable de producción.

Para calificar como desarrollador back-end, diría que las habilidades mínimas que necesita son:

  1. Buen conocimiento sobre un lenguaje de programación en el que puede escribir servidores HTTP. Ejemplos: C #, Java, Node, PHP, Python, etc. (¡hay muchos!)
  2. Administre el hospedaje usando cPanel (tradicional) o usando terminal bash (hospedaje en la nube / tradicional)
  3. Trabajar con sistemas de control de versiones (VCS) como git para administrar e implementar compilaciones

Al igual que todos los juegos vienen con especificaciones mínimas y recomendadas, para los desarrolladores de back-end, mis especificaciones recomendadas serían (incluidas las habilidades mínimas):

  1. NGiNX para activos de archivos estáticos y gestión de servidores
  2. Habilidades de gestión de bases de datos (SQL / NoSQL)
  3. Seguridad del backend (escritura de código seguro y robusto, ejecución de aplicaciones en contenedores de docker con privilegios limitados, protección contra ataques DoS)
  4. Ajuste de escala automático / equilibrio de carga

Muy bien, hablar demasiado sobre lo que implica el desarrollo de back-end. Pero, ¿cómo te conviertes en uno?

Comience con requisitos mínimos

Como dije, para el back-end, al igual que los juegos, tenemos un conjunto de requisitos mínimos y requisitos recomendados. Los requisitos mínimos constan de 3 cosas:

Aprenda un lenguaje de programación backend

Cuando las personas aprenden por sí mismas, generalmente no tienen un equipo ni nadie que pueda hacer el desarrollo de front-end. Están todos solos. Por lo tanto, a menudo tendrá que crear páginas web y servidores usted mismo, al menos al principio.

Aunque hay muchas opciones para lenguajes de programación de back-end, no puedo pensar en ningún lenguaje de sistema popular que no admita servidores HTTP listos para usar. La ventaja de elegir Node es que sus habilidades de JavaScript de front-end se pueden transferir al back-end.

No obstante, puede elegir entre una variedad de lenguajes como Java, C ++, C #, Python, PHP, etc.

¿Cómo eliges uno ?, podrías preguntar. La respuesta es la misma que en el artículo de desarrollo de front-end: tienes que probar todo inicialmente y ver cuál te hace clic mejor.

Node es fácil, ya que es posible que ya haya realizado la programación JS para el front-end. Pero si eres un desarrollador de Python o Java, es posible que te resulten fáciles de aprender. Depende de tu profesión y gusto por completo.

Aprenda a administrar el alojamiento

Atrás quedaron los días en los que tendría que comprar servidores manualmente y configurarlos en su hogar, conectarse a su ISP, hacer todo eso usted mismo. Esta es la era de la computación en nube. Ahora, al alojar su sitio web, tiene principalmente 2 opciones:

  1. Optando por servidores de alojamiento administrados como HostGator o GoDaddy.
  2. Optando por proveedores de alojamiento en la nube como GCP, AWS o DigitalOcean.

¿Cuál es la diferencia entre los dos? En ambos casos, los servidores son propiedad y están operados por las respectivas compañías. Pero la principal diferencia es que el alojamiento administrado es más amigable con la GUI, tiene un rico conjunto de herramientas para ver el sistema de archivos, monitorear el uso, administrar los correos electrónicos de su dominio oficial, cargar / descargar archivos de su servidor, etc. Básicamente es una configuración para personas con menos habilidades técnicas.

Por esa razón, no recomiendo sitios administrados como HostGator o GoDaddy para desarrolladores experimentados. Aún así, podría ser una buena plataforma para cometer errores y aprender, principalmente porque generalmente tiene planes prepagos para ellos. También tendrá una interfaz de usuario agradable para administrar las cosas, lo que no le permitirá disparar accidentalmente sus facturas.

Pero cuando empiece a ganar velocidad, le recomiendo que se cambie a un proveedor en la nube. Esto elimina todas las buenas herramientas de cPanel que usaba para administrar archivos y carpetas en los servidores. Pero al mismo tiempo, te desafiará a mejorar mucho tus habilidades.

Hoy en día, muchos proveedores de servicios en la nube también ofrecen una prueba gratuita decente, de modo que pueda probar su plataforma antes de entrar por completo. Alojo mi sitio web para desarrolladores, codedamn, en DigitalOcean y encuentro que tiene un excelente equilibrio de complejidad y características del sitio.

Puede usar este enlace para registrarse en DigitalOcean y obtener créditos gratis de $ 100 . Las instancias de DigitalOcean son tan baratas como $ 5 al mes, por lo que tiene una pista de aproximadamente 20 meses en esa instancia, mucho, ¿eh?

De todos modos, puede elegir cualquier proveedor de nube. Entonces es importante aprender a administrar el servidor usando solo la línea de comando ingresando en ella.

Más información sobre los sistemas de control de versiones

Hay otras soluciones además de Git para VCS. Pero Git es el más utilizado y el más sencillo de entender.

Como individuo, es posible que no lo aprecie de inmediato. Pero comprenderá por qué es tan importante en el momento en que comience a trabajar en equipo en múltiples funciones simultáneamente en su proyecto.

Git le permite administrar su flujo de trabajo mediante confirmaciones y ramas. Las confirmaciones son como puntos de control en su base de código, a los que siempre puede volver si se equivoca.

Las ramas son como realidades alternativas de su proyecto, donde podría suceder algo completamente diferente. Estas realidades alternativas se pueden crear a partir de cualquier momento y se pueden fusionar nuevamente en cualquier momento.

Si esas realidades se pueden fusionar con compatibilidad, entonces está bien. Pero si hay un conflicto (como si estuvieras vivo en una realidad y muerto en otra), entonces tienes que hacer una elección manualmente. Otros cambios se pueden combinar automáticamente.

Git es súper interesante, y una vez que lo domines, querrás usarlo en todos los proyectos. Puede mantener un historial de su trabajo de manera eficiente (comprime y almacena solo la diferencia entre confirmaciones).

También le permite crear repositorios de git en línea en sitios como GitHub, que actúa como una fuente central de información para su sitio web. Los sitios como GitHub se pueden configurar con webhooks especiales que pueden actualizar su sitio web cada vez que agrega un nuevo punto de control (un nuevo compromiso) sin que tenga que ir manualmente al servidor y actualizarlo usted mismo.

Busque las habilidades recomendadas

Soy un gran creyente en aprender haciendo. Y la mejor manera de hacer algo surge por necesidad o interés. Una vez que se considere lo suficientemente bueno con los requisitos mínimos, es hora de adquirir las habilidades recomendadas. Esto incluye todas las herramientas como Docker y NGiNX mencionadas anteriormente.

DevOps también es algo que encaja muy bien con los desarrolladores de back-end. Puede probar y explorar TravisCI o CircleCI para implementaciones de compilación automatizadas. La integración e implementación continuas (CI / CD) es un tema que podría ocupar otra publicación de blog completa, así que no entraré en eso. De hecho, una vez que esté configurado correctamente, ¡le ahorrará una cantidad ridícula de tiempo de desarrollador!

Luego vienen las bases de datos, que coloqué en las habilidades recomendadas. Pero necesitará bases de datos para prácticamente cualquier aplicación que implique algún tipo de persistencia de datos generada por el usuario.

Por lo general, es fácil comenzar a trabajar con las bases de datos, pero es más difícil mantenerlas y modificarlas correctamente. La mejor manera de comenzar a trabajar en una pila de tecnología back-end es tener todo junto en un solo servidor: el código de su aplicación, los servidores proxy inversos, la base de datos, etc. Luego, a medida que se vuelve más competente en cada cosa, puede desacoplarlo de la lógica empresarial existente.

Al hacer esto, habilita una arquitectura que se puede escalar mucho. Una aplicación de operación intensiva de bases de datos podría tener una solución optimizada para bases de datos. Y un sitio con tráfico pesado debería tener un buen mecanismo de CDN para descargar activos estáticos, etc.

Conclusión

Hay mucho que aprender, pero todo se puede lograr si no te rindes. Déjame saber lo que piensas sobre esta publicación a través de mi cuenta de Twitter e Instagram . ¡Significará mucho para mí si nos conectamos allí!

Además, si está interesado, consulte codedamn , ¡una plataforma centrada en el desarrollador para tecnologías de aprendizaje como el desarrollo de backend! ¡Incluso publiqué un video de YouTube sobre cómo poner en marcha su propio servidor web simple en 2 minutos! ¡Mira eso y déjame saber lo que piensas!

¡Paz!