Performance considerations
Operating a Puppet master gives you numerous benefits over just using puppet apply
on all your machines. This comes at a cost, of course. The master and agents form a server/client relation, and as with most such constructs, the server can become the bottleneck.
The good news is that the Puppet agent is a fat client. The major share of the work—inspecting file contents, interfacing with the package-management subsystem, services subsystem, and much more—is done by the agent. The master only has to compile manifests and build catalogs from them. This becomes increasingly complex as you hand over more control to Puppet.
There is one more task your master is responsible for. Many of your manifests will contain file resources that rely on prepared content:
file { '/usr/local/etc/my_app.ini': ensure => file, owner => 'root', group => 'root', source => 'puppet:///modules/my_app/usr/local/etc/my_app...