I know a company that successfully implemented Sitecore on Azure Scale Sets because of the prohibitive cost of Azure Web Apps deployed to a virtual private network (App Service Environment) and regulatory requirements. Here is a high level overview:
- Create Azure Managed image from a marketplace image using Hashicorp packer.
- Provision scale set using ARM Template with the managed image described above, Octopus Deploy tentacle, and OMS Agent extension.
- Patch scale set VM instances using Azure Automation, which uses OMS Agent to install necessary Windows Updates.
Scale set image is not used to deliver code changes, but is rather used to establish infrastructure for Octopus Deploy, which then deploys Sitecore.
Alternative solution is not to create custom managed image but provision scale set directly from a marketplace image and configure VM using DCS extension. This approach however will significantly increase VM startup during auto scaling.
Update 2021: This answer was for Sitecore 9, newer versions might have better deployment options in IaaS using containers.