Diferença entre front-end, back-end e middleware no desenvolvimento web

Eu queria saber se alguém pode comparar / contrastar as diferenças entre front-end, back-end e middleware ("meio-fim"?) De forma sucint

Existem casos em que eles se sobrepõem? Existem casos em que DEVE se sobrepor e o front-end / back-end não pode ser separado? Em termos de gargalos, qual extremidade está associada a que tipo de gargalos?

questionAnswers(5)

yourAnswerToTheQuestion