This started as a question on the community forums, and my answer got so long I decided to capture it as a blog as well.
In general, when you are choosing an infrastructure model the first question you need to ask is what your team is comfortable having responsibility over, and what your organization is willing to pay to have somebody else worry about. You could do it in-house, pay a managed services group or Sitecore partner, or have Sitecore do things for you. Figure out what your team wants to have responsibility for and then that will guide you towards the best hosting model for your production environment.
Sitecore has no official recommendation on IaaS or PaaS, both are offered so that you can choose how much of the infrastructure hosting you want to do. There is also a Managed Cloud option where you let Sitecore spin up the infrastructure for you and Sitecore provides a bunch of services along with it:
Remember, going IaaS, PaaS, or managed services should be based on what YOU want to take on as a responsibility and what you want SOMEBODY ELSE to own
IaaS using containers is the current “hot trend” which gives you something a little bit between traditional IaaS and PaaS. This is the direction a lot of technical teams are going right now. If you are the type of person who likes to work on the hottest topics, this is the place to go but that does mean there won’t be as many tried and true practices available to you. Balance what your organization is comfortable with when making your choice.
Here are a few current materials on this in relation to Sitecore:
- Sitecore Docker Images GitHub repo
- Starting with Docker and Sitecore – Martin Miles
- Sitecore Docker for Dummies – Mark Cassidy
- Yet Another Sitecore Docker Series – Rob Ahnemann
- Secure Docker Websites for Sitecore – Michael West
- Sitecore on Docker Swarm in production – Per Bering
- Sitecore loves Containers - Bart Plasemeijer
There are loads others, but this can give you a start!