The Puppet tutorials I have read so far haven't mentioned how to structure the puppet
Can anyone share some experiences of what works and scales well?
Yes, please see my comments at: How can the little guys effectively learn and use Puppet?
I followed the examples and guidelines in this book. But part of my initial frustration was a lack of a standard or "best-practice" way of doing things with Puppet when, as a sysadmin, I expect some direction there.
You can basically create your own structure. Whatever makes sense... But I'd follow one of the examples for consistency. I ended up restructuring several times in a month as things started to make more and more sense to me.
The rest will depend heavily on your server infrastructure. If you have a large number of systems on ONE location, your manifest/module directory structure will look different than running servers in 20 co-location facilities... so the logical arrangement may be function-based or location-based. It'll really need to be tailored to your particular setup.
Then, there's the approach of decentralized PuppetMasters or distributing manifests by Git or rsync... The book I linked above covers some of the scalability issues.