Sizing your instances in terms of CPU, memory and storage affects greatly on performance and cost. Let's have a look at these considerations:
Jenkins deployment is best using AWS but it can also be deployed on Linux and Windows.
CPU and Networking:
If you expect a large number of concurrent users, you should expect additional CPU overhead for the rendering of this content.
It's important to keep large storage volumes on worker nodes as these worker nodes are the ones that actually carry out the operations on Jenkins. Jenkins settings and log files are saved on the master. So make sure you give enough storage to your master node to handle the project logs.
The selection of instance types depends on your project requirements. Make sure you chose the right one.