I absolutely can't stand how destructive terraform is by nature. We have switched to Ansible, which has an excellent AWS module, and never looked back.
What do you mean by destructive by nature? A resource will only be destroyed if:
1) You remove it explicitly from your configuration; which should be the intended result - it's no longer a "part of your infrastructure"
2) You've change some attribute that requires your provider to replace the instance entirely - Trying to think of an example off hand... While not applicable anymore as AWS now supports applying/changing IAM roles to running instances now, had you done something like that in the past, that would've forced a resource replacement.
1) You remove it explicitly from your configuration; which should be the intended result - it's no longer a "part of your infrastructure"
2) You've change some attribute that requires your provider to replace the instance entirely - Trying to think of an example off hand... While not applicable anymore as AWS now supports applying/changing IAM roles to running instances now, had you done something like that in the past, that would've forced a resource replacement.