After the initial redesign for IaaS, I found the benefit of IaaS is rather obvious:
- Use the more mature IIS Web Deploy cmdLine tool to provision web site, instead of update IIS configure file directly.
- Updating IIS configure file is a little bit dangerous, and it will cause troubles when concurrent access is not managed well.
- Web Deploy is mature tool which is also used in Visual Studio to deploy web site to Azure.
- Using Web Deploy generates deployment logs, which helps diagnosis and auditing.
- De-provisioning web site using Web Deploy is also cleaner and safer.
- This is only possible under IaaS, since you have to pre-install Web Deploy tool and other dependent services in the VM.
- Reduce two layers: routing + hosting, into one layer. The design is thus more simple and robust.
- This change might also work in PaaS. Need further investigation.
- IaaS gives us more flexibility to manage end points on each VM, and thus makes this design change more natural.
This is the new design for AWS: