There is no universal answer. It depends on what the systems are, what capabilities they have, what are your business and technical requirements and restrictions and so on.
For example, what data you want to integrate, in which direction, in what frequency, what amount of data, what delay is acceptable, what APIs do the system offer and are able to consume, whether the systems will be on-line at the same time and so on and so on.
ISVs are nice, because it’s nice to be able to hand that stuff off, but they’re usually expensive.
Like Martin said, you could always build something yourself, but there’s lots of moving parts to deal with. Getting data into and out of D365 is pretty straightforward using data entities, but dealing with error handling and mapping is something you usually need another tool like Logic Apps or something to deal with.