En ingeniería de software , los términos frontend y backend (a veces escritos como back end o back-end ) se refieren a la separación de preocupaciones entre la capa de presentación ( frontend ) y la capa de acceso a datos ( backend ) de un software , o la infraestructura física o hardware . En el modelo cliente-servidor , el cliente suele considerarse el frontend y el servidor suele considerarse el backend, incluso cuando parte del trabajo de presentación se realiza en el propio servidor.
En la arquitectura de software , puede haber muchas capas entre el hardware y el usuario final . La parte frontal es una abstracción que simplifica el componente subyacente al proporcionar una interfaz fácil de usar , mientras que la parte posterior generalmente se encarga del almacenamiento de datos y la lógica empresarial .
En telecomunicaciones , el frente puede considerarse un dispositivo o servicio, mientras que la parte posterior es la infraestructura que soporta la prestación del servicio.
Una regla general es que el lado del cliente (o "frontend") es cualquier componente manipulado por el usuario. El código del lado del servidor (o "backend") generalmente reside en el servidor , a menudo muy alejado físicamente del usuario.
En los sistemas de gestión de contenido , los términos frontend y backend pueden referirse a las vistas del CMS orientadas al usuario final y a las vistas administrativas, respectivamente. [1] [2]
En la síntesis de voz , el frontend se refiere a la parte del sistema de síntesis que convierte el texto de entrada en una representación fonética simbólica , y el backend convierte la representación fonética simbólica en sonidos reales. [3]
En los compiladores , el frontend traduce un código fuente de programación informática a una representación intermedia , y el backend trabaja con la representación intermedia para producir código en un lenguaje de salida de computadora. El backend generalmente optimiza para producir código que se ejecuta más rápido. La distinción frontend/backend puede separar la sección del analizador que se ocupa del código fuente y el backend que genera el código y lo optimiza . Algunos diseños, como GCC , ofrecen opciones entre múltiples frontends (que analizan diferentes lenguajes fuente ) o backends (que generan código para diferentes procesadores de destino ). [4]
Algunas aplicaciones de interfaz gráfica de usuario (GUI) que se ejecutan en un entorno de escritorio se implementan como una interfaz delgada para programas de interfaz de línea de comandos (CLI) subyacentes, para evitar que el usuario tenga que aprender la terminología especial y memorizar los comandos .
Otra forma de entender la diferencia entre ambos es entender los conocimientos que se requieren para desarrollar un software frontend y backend . La siguiente lista se centra en el desarrollo web como ejemplo.
Tenga en cuenta que ambos puestos, a pesar de que posiblemente trabajen en el mismo producto, tienen un conjunto de habilidades muy distintas.
El frontend se comunica con el backend a través de una API . En el caso de los frontends web y móviles, la API suele basarse en una solicitud/respuesta HTTP . La API a veces se diseña utilizando el patrón "Backend for Frontend" (BFF), que ofrece respuestas para facilitar el procesamiento en el lado del frontend. [5]
En informática de red , el término frontend puede hacer referencia a cualquier hardware que optimice o proteja el tráfico de la red . [6] Se denomina hardware frontend de la aplicación porque se coloca en el frontend o límite exterior de la red . El tráfico de red pasa por el hardware frontend antes de ingresar a la red.
En el diseño de procesadores , el diseño frontend sería la descripción inicial del comportamiento de un circuito en un lenguaje de descripción de hardware como Verilog , mientras que el diseño backend sería el proceso de mapear ese comportamiento a transistores físicos en una matriz. [7]