This might sound like a lazy answer, but will help in the long term..
I'd suggest learning about SIP as a protocol before you do anything else.
You'll find learning the protocol itself inherently dictates how to scales across multiple servers. For example, in defining what the role of a Registrar is, SIP explains that a single 'server/process' can handle that job independently of any other SIP related activity. It likewise discusses that what a SBC is, and thereby helps understand that you can seperate the handling of SIP and RTP to a proxy and media server.
Once you understand SIP properly, it's easy to come in and say "Well I need a registrar.. that's OpenSIPS or Kamailio.. Now I need a server to handle Media.. well FreeSWITCH does that.. I need a server to handle presence.. well presence can utilise dialog info to produce this I might as well use OpenSIPS or Kamailio".
If you do implement it using Kazoo, using a guide, or whatever, you'll find yourself learning about SIP anyway. Why don't you just attack it head on, and you'll understand it all a bit better?
The latest OpenSIPS book has a good chapter on SIP I think is worth the read.
I think this is why a lot of people are responding with 'it depends'. What they really mean is, "SIP is a flexible protocol, and it's really your choice in how you want to implement its various components".