Softwares são ferramentas que automatizam rotinas, regras e procedimentos de um modelo de negócio. Então já é de se esperar que alguns nichos possuam maiores desafios do que outros. Existe um domínio de sistemas que traz contigo grande probabilidade de ocorrer problemas devido à alta concorrência por uso de um recurso de software, e estou me referindo aos sistemas que envolvem realizar reservas.
Sistemas que realizam Reservas, estão sujeitos a sofrer com problemas de condições de corrida (Race Conditions), pois por natureza a solução em software é criada baseado no padrão: leitura-processamento-escrita. E soluções baseadas neste padrão abrem pequenas janelas de tempo onde é possível que outro processo execute a reserva do recurso, e se seu sistema não estiver preparado ocorrerá o que chamamos de atualização perdida ou Lost Update, permitindo que mais de um processo reserve o mesmo recurso. Dado a isso é importante que o desenvolvedor possua heurísticas para identificar Race Conditions e proteger seu sistema, já que a maioria dos WebServices e REST APIs nascem concorrentes por natureza.
A ideia desta talk é trazer de maneira muito didática uma visão de como uma pessoa desenvolvedora independente do estágio de carreira consegue identificar problemas de Race Conditions, anomalias em banco de dados relacionais e como implementar estratégias de controle de concorrência extraindo o máximo da aplicação e do Banco de dados.