"Tech is still growing and will for decades. Each type of deployment has it's niche ? use the tech that works best for your case and be prepared to look at all the alternatives, because we have more and more options available"
"Kubernetes pod CPU throttling happens each 100ms that the millicore budget is used, ie if in the first part of a 100ms window you use all your allocated millicore budget, the pod is not allocated any more CPU until the start of the next 100ms window. This CPU budget includes your application CPU usage as well as the JVM and GC CPU usage. The JVM uses Runtime.availableProcessors() to size the GC thread count and internal JVM thread pools, but this is an integer value, so millicores are rounded up to the next full core. This means the JVM can be expecting more CPU than is actually allocated, eg 1100 millicores would see the JVM decide it has 2 cores and allocate 2 threads to the GC which might cause too much CPU utilization by the GC and cause the application to be throttled. Using -XX:ActiveProcessorCount=N let's you explicitly tell the JVM how many cores it should use; it also let's you increase the thread pool sizes if that is beneficial."