Uma aplicação Web é uma aplicação projetada para ser acessada através de um navegador web, ou um browser. O navegador é conhecido como o cliente universal de aplicações Web. Estas aplicações são tipicamente compostas por duas partes de código com suas responsabilidades muito bem definidas: o frontend e o backend.
O backend é a parte da aplicação que não conseguimos ver. O backend acessa diretamente os dados - pode-se dizer que é a memória da aplicação. Em geral além de acessar os dados o backend também realiza o processamento necessário para atingir os objetivos da aplicação (especialmente se estivermos tratando de grandes bases de dados). O frontend é a parte "cliente" que vai acessar a API e usar as bibliotecas gráficas geralmente oferecidas pelo prórpio browser para permitir que o usuário possa usar a aplicação Web. Neste caso, o usuário do frontend é um ser humano (em geral) e o usuário da API é outro software, que é o frontend.
Nas aplicações mais tradicionais o backend é como o atuador da experiência de frontend. Isto significa que o backend é responsável por realizar ações de acordo com o que foi solicitado pelo usuário via frontend. Quem é a ponte que permite que estas partes conversem? Sim, a API (REST). As aplicações modernas podem deixar parte do processamento das informações no frontend, depende dos requisitos da aplicação, do tipo de processamento realizado e da quantidade de dados a serem transferidos entre backend e frontend. Mas no geral, mesmo com um frontend com mais funcionalidades, capaz de processar dados, se o backend não funcionar, a aplicação será falha porque os dados não serão acessados.
No backend são realizados cálculos, lógica de negócios, interações com banco de dados e em geral é lá que ha bastante preocupação com desempenho (dependendo do que precisa ser feito) e segurança (já que lá são acessados os dados). O código de backend é executado no servidor, em oposição ao frontend, que é executado no cliente. O programador de backend deve estar familiarizado com a pilha de hardware/software que compõe o backend: rede, servidor/SO, framework, aplicação, banco de dados. Em termos de opções de uso de tecnologias, o backend oferece muito mais variação do que o frontend (linguagens, tecnologias, serviços). Aqui neste curso focaremos apenas no desenvolvimento de backend que expõe uma API REST e é desenvolvido usando Java/Spring Boot. Mas existem muitas outras opções, por exemplo, podemos encontrar código de backend desenvolvido em Python (Django), Ruby (Rails), JavaScript (Node.js). Também é comum que o backend seja um conjunto de serviços (ou várias APIs que se comunicam - arquitetura de microsserviços) e nesse caso cada serviço pode fazer uso de linguagens e tecnologias diferentes.
Como todo software de qualidade, o backend deve ser fácil de entender e de manter/atualizar. Neste curso escreveremos backend em Java, que é uma linguagem orientada a objetos (OO). Assim, é importante que boas práticas de design OO (como padrões para atribuição de responsabilidade e outros padrões de projeto) sejam seguidos. Baixo acoplamento entre entidades do software, alta coesão dentro uma classe (ou método) e manter responsabilidade com quem tem os dados continuam sendo regras fundamentais para a atribuição de responsabilidades. Essas mesmas regras podem ser aplicadas em níveis mais altos, por exemplo, alta coesão de uma API, evitar que os mesmos dados sejam acessados por APIs diferentes (da mesma organização), seguindo assim o padrão expert, etc.
Já deve estar claro aqui nesse ponto que o backend expõe os serviços em forma de APIs. APIs conectam software, aplicações, bancos de dados, e serviços juntos de forma transparente e coordenada. Uma outra definição simples para API é que é uma interface de um serviço. O "cliente" do serviço (que pode ser outra API, o frontend, etc.) usa a API exposta pelo serviço para acessar o que precisa. O usuário de uma API é sempre outro programa (nunca um ser humano). Dizemos que a API determina um conjunto de instruções para acessar o serviço.
Como a indústria de aplicações Web só tem crescido nas últimas décadas, é possível que você vá trabalhar nela depois que se graduar. Nas chamadas de emprego é comum a procura por backend developer, frontend developer e full stack developer, que é o desenvolvedor que tem habilidades de desenvolver tanto o front quanto o backend da aplicação.
Antes de continuar, teste seus conhecimentos.
Nosso próximo assunto vai tratar um pouco sobre as diversas arquiteturas que aplicações Web podem seguir e em qual focaremos neste curso.