"if the majority of your requests need both microservice A and microservice B, and these two microservices both each need to scale to the same number of JVMs, there is no point at all in having those microservices running in separate JVMs - you may as well coalesce those microservices into the same JVM and gain the benefit of single JVM efficiency"
"For thread-safety you just have to follow one simple rule - no mutable state in the code. No instance variables and you are safe, regardless of how many threads execute the same piece of code"