~/questoes/devops
StatefulSet é um recurso Kubernetes projetado para aplicações que precisam manter estado, como bancos de dados. Diferentemente do Deployment, que é ideal para aplicações sem estado, o StatefulSet garante que cada Pod tenha uma identidade estável e uma ordem previsível de criação e destruição.
Bancos de dados e serviços stateful exigem ordenação garantida e identidade de Pod estável. O StatefulSet fornece essas garantias, permitindo que serviços como MySQL, MongoDB ou Redis mantenham consistência de dados quando replicados. O Deployment não oferece essas garantias, tornando-o inadequado para esses casos.
Aplicações sem estado devem usar Deployment, não StatefulSet. O Deployment oferece escalabilidade horizontal mais rápida e leve, enquanto StatefulSet adiciona complexidade desnecessária para casos que não precisam de identidade estável.
Esta é a resposta correta. Bancos de dados, caches distribuídos e sistemas de fila precisam de ordenação e identidade estável de Pod, características que StatefulSet fornece nativamente através de nomes previsíveis e volumes persistentes associados.
Se uma aplicação não necessita de persistência ou identidade estável, deve usar Deployment. StatefulSet é especificamente para aplicações que exigem essas características, então usar StatefulSet aqui seria sobre-engenharia.
Microserviços simples que comunicam por REST devem usar Deployment, que é mais leve e rápido de escalar. StatefulSet é desnecessário quando não há estado a manter entre as instâncias.