Transações são necessárias quando realizamos um conjunto de operações em um determinado recursos distribuído (banco de dados, serviço de mensageria, serviço de gerenciamento de arquivos, etc) e queremos garantir a completude deste conjunto de operações ao seu término, evitando que qualquer possível erro durante a execução do conjunto de operações deixe os recursos distribuídos inconsistentes.