I just recently switched over to pjsip and I have to say that despite being legacy, chan_sip has a lot to recommend it.
Prior to the “upgrade” all of my extensions “just worked”. Now I have extensions which randomly turn on DND on their own, or lose their registration randomly ( despite showing as registered ) ( same subnet, same physical network, so no firewall between endpoint and server ). I’ve had a few core dumps as well, whereas I never experienced that with chan_sip. Compounding these issues is that I have yet to find anything online related to these issues, despite extensive looking.
This may very well be related to all the modules that are being loaded; chan_sip has one module to load, whereas PJSIP has 30+ modules to load, not all of which are clear on their purpose. There doesn’t appear to be any documentation related to which module does what, either ( at least not that I could find ).
I can accept that all the issues I experienced were related to my own ignorance ( I assume this is the case as I’m sure others are using PJSIP in their own environments successfully ), and would love to correct that ignorance; but I don’t know where to look for the relevant data.
DND might be traceable on the signaling layer SIP and therefore by Wireshark.
The core dumps can be tracked down via backtraces.
This is hard work, I know. But that would be a starter.
The modules and their amount should not be the problem, it is just about modularity which chan_sip lacked. Furthermore, you are able to tailor the amount of modules via make menuselect. Since Digium Asterisk 13.34, most of the references should be correct. Consequently, you see in menuselect what you really need. However, when it comes to the functionality which is inside the modules, yes, as with chan_sip: Look at their source history (for example on GitHub) and when/why the module was introduced. This is a pity and I do not know a better answer either.
To be honest, personally, I gave up on migrating to PJSIP and moved over to FreeSWITCH.
Thought about your question a bit more, and I am not aware of any architecture view point on Digium Asterisk. Not even aware of a short explanation of each module. However, there is a book about Digium Asterisk 16. Might help; not checked it yet myself because I left with Asterisk 13.