The most common issue I see come up when starting a new project always circles around external data. Client has a third party system or maybe even a home grown database. They want to know what the best route to take is and it always comes down to some factors.
Who maintains the data should be a big deciding factor. If its something that a content author will be managing then this is a good candidate for Sitecore. But it gets more complicated from there. In some cases its a different department or a different company entirely that owns the content. In these cases you would need to walk down scenarios to look for pain points. Is there licensing concerns? Could the data scheme change over night and outside my control? Is there a strong api already in place and this content displayed in other systems? Hopefully answers to these questions will lead you to a clearer picture on where the data should live
Once beyond the maintaining of data you have to look at the benefits of placing content in Sitecore. Here are some:
- Ability to publish pages as an author
- Ability to control security over sections of content
- Ability to clone common content across all documentation sections.
- Development control over base design of the site.
- Ability to version control content.
- Ability to add work flow to content items.
- Built in search capabilities both admin and front end (pending development).
- Built in caching to control high bandwidth problems.
- Language versioning.
Now these are not all but some of the highlights of all the great things you can do with content once it is inside Sitecore.
Budget restraints and project timelines can also play a factor here. It can be much easier to just run with the APIs they have in place and call data externally as needed. Especially as complexity increases on how you use it. Like user specific records or data that would need to be searched and filtered. Of course all this can be done inside Sitecore, you just need to justify the extra time initially to get there.
Finally I think a very important factor of where to place your data can fall on availability. If you need up to the second data, sticking with the source is always going to be the best approach. There is just no way around that. Importing data through any secondary system will always cause lag. However there is plenty of approaches to how to handle data transfer to Sitecore if your demand is not immediate. Here are some:
- Manually uploaded content.
- Scheduled (every min to once a week) import of data.
- Author requests an import.
- In certain scenarios, data import could be event triggered. Like when a user logs in for the first time of the day or an author saves a content item.
These are all scenarios where the publish could be manual or automated. It really comes down to how much oversight your authors require and how fast it needs to get out.
Overall I find the data debate to be one part logical and one part political. Do your best to promote all the value that Sitecore can bring to the table if data resides inside Sitecore. There truly are some great advantages here. However its just as important to understand your users and department quirks. Just because you created a Frankenstein does not mean others will love it like you do.