Frontend and backend
In software engineering, the terms frontend and backend (or sometimes referred to as back end or back-end) refer to the separation of concerns between the presentation layer ("frontend"), and the data access layer ("backend") of a piece of software, or the physical infrastructure or hardware. In the client–server model, the client is usually considered the frontend and the server is usually considered the backend, even when some presentation work is actually done on the server itself. Introduction. In software architecture, there may be many layers between the hardware and end user. The "front" is an  abstraction, simplifying the underlying component by providing a user-friendly interface, while the "back" usually handles data storage and business logic. In telecommunication, the "front" can be considered a device or service, while the "back" is the infrastructure that supports provision of service. A rule of thumb is that the client-side (or "frontend") is any component manipulated by the user. The server-side (or "backend") code usually resides on the server, often far removed physically from the user. Software definitions. Web development as an example. Another way to understand the difference between the two is to understand the knowledge  required of a front-end vs. a back-end software developer. The list below focuses on web development as an example. Note that both positions, despite possibly working on one product, have a very distinct set of skills. API. The frontend communicates with backend through an API. In the case of web and mobile frontends, the API is often based on HTTP request/response. The API is sometimes designed using the "Backend for Frontend" (BFF) pattern, that serves responses to ease the processing on frontend side. Hardware definitions. In network computing, "frontend" can refer to any hardware that optimizes or  protects network traffic. It is called application front-end hardware because it is placed on the network's outward-facing frontend or boundary. Network traffic passes through the front-end hardware before entering the network. In processor design, "frontend design" would be the initial description of the behavior of a circuit in a hardware description language such as Verilog, while "backend design" would be the process of mapping that behavior to physical transistors on a die.