Sitecore Headless Services With a Traditional CD Site
With the heavy move to headless by Sitecore, and tools such as Experience Edge, there is a sense that the only option is to popup a React app to consume GraphQL data from Headless Services or Experience Edge… but what about those who have XP or XM topologies with a CM and CD that just want to expose API data for consumption by their Mobile app that lives separate of Sitecore?
This may also assist those who are not yet ready to embrace or have the technical front end development resources for headless delivery of Sitecore sites, but still require the API data from Sitecore for their external applications. Some may never want full headless at all, as there are pros/cons with headless (ex. where does the heavy business logic live?), but still require this API data via GraphQL.
In Experience Edge there is not a CD Server per se, and for those that leverage Sitecore JSS or Headless Services, the CD is lightweight and traditionally used to expose data to a React app, not hosting the public Sitecore site.
On the surface this limits those who prefer the traditional CD server hosted site but still want to expose Sitecore content for other applications outside of Sitecore. However, you can install Headless Services alongside an XP or XM topology that has CD servers running public sites while exposing GraphQL data for other applications, such as Mobile apps.
Enter Headless Services without a Sitecore SDK
Per Sitecore, you can leverage Headless Services without a rendering SDK. This allows you to keep your CM to CD traditional site where items are pulled from the databases, while exposing GraphQL data for non-Sitecore applications. Specifically, Sitecore states:
A rendering SDK can vastly simplify the consumption of Layout Data from Sitecore and enable dynamic component construction with Sitecore Placeholders. However, any platform that understands JSON data can consume Sitecore-provided content and layout information directly from the Sitecore Headless Services APIs. Therefore, it is not mandatory to use a rendering SDK provided by Sitecore to display Sitecore content and layout information.
Use Sitecore Headless Services without a Sitecore SDK
Headless Services vs. Experience Edge for API Extension
Headless Services (replacing the JSS Server Components), is installed as part of the CM and CD layers. Depending on where the data is consumed from, you could experience more load on the server layers.
That is why Sitecore recommends Experience Edge for production, but this should be tested to determine if Headless Services meets your needs for consumption in an external source such as a Mobile App, since you may not require several of the features exposed by Experience Edge (or Headless Services for that matter) if all you need is the GraphQL data.
If you choose Experience Edge, testing is also required to determine if this can run alongside a traditional CD Server. Currently, there is no obvious preclusion that forces a CD Server to not be used if Experience Edge is leveraged, so you should be able to still publish items to a CD Server if that is desired while serving GraphQL data to an external application such as a Mobile app.