The performance footprint of a Shiny application is almost entirely dependent upon the Shiny application code. There are two factors to consider when selecting the hardware platform for Shiny Server.
The memory requirements of a Shiny application depend heavily on the amount of data loaded when running the application. Users often find that a Shiny R process requires a minimum of 50MB of RAM -- beyond this, the amount of memory consumed by an application is determined by the data loaded or generated by that application. The Scoping Section of the Shiny Tutorial describes in detail how to take advantage of Shiny's scoping rules to share data across multiple Shiny sessions. This enables application developers to load only one copy of data into memory but still share this data with multiple shiny sessions.
R is fundamentally a single-threaded application. Unless parallel packages and tools are specifically selected when designing a Shiny application, the R process (and the associated Shiny application) will be run serially on a single processing core. Therefore, the typical Shiny application may saturate the processing core to which it is assigned, but will be unable to leverage other cores on the server that may be idle at that time.