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 una pieza de software , o el infraestructura física o hardware . En el modelo cliente-servidor , el cliente suele considerarse el frontend y el servidor 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 . El frente es una abstracción, que simplifica el componente subyacente al proporcionar una interfaz fácil de usar , mientras que la parte posterior generalmente maneja el almacenamiento de datos y la lógica empresarial .
En telecomunicaciones , el frente puede considerarse un dispositivo o servicio, mientras que la parte trasera 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 contenidos , 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 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 de computadora 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 se optimiza para producir código que se ejecute 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 código y lo optimiza . Algunos diseños, como GCC , ofrecen opciones entre múltiples interfaces (que analizan diferentes lenguajes fuente ) o backends (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 los programas de interfaz de línea de comandos (CLI) subyacentes, para evitar que el usuario aprenda la terminología especial y memorice los comandos .
Otra forma de entender la diferencia entre los dos es comprender el conocimiento requerido de un desarrollador de software frontend versus uno backend . La siguiente lista se centra en el desarrollo web como ejemplo.
Tenga en cuenta que ambos puestos, a pesar de trabajar posiblemente en un producto, tienen un conjunto de habilidades muy distinto.
El frontend se comunica con el backend a través de una API . En el caso de interfaces web y móviles, la API suele basarse en una solicitud/respuesta HTTP . A veces, la API se diseña utilizando el patrón "Backend for Frontend" (BFF), que proporciona respuestas para facilitar el procesamiento en el lado del frontend. [5]
En informática de red , frontend puede referirse a cualquier hardware que optimice o proteja el tráfico de la red . [6] Se denomina hardware de interfaz de usuario porque se coloca en la interfaz o límite exterior de la red . El tráfico de la red pasa a través del hardware de front-end 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]