I am desgining an architecture of system.( Java EE/Spring)
The main factor of this system is low latency.(talking about 1 ms and less from end to end)
We have planned several components for this real time system.
My question to you experts: I know all the advantages of coupling and decoupling(fail over, separation, maintenance, extension etc..)
The problem I am facing here is:
For example let’s say I have two diffrent applications on machine A(app1) and application on Machine B(app2).
a request must go through both machines. and final answer will be sent to the client after both machines processed the request.
The integration latency between those two will surely be higher then having those apps under the same machine(networking time, etc..)
In other hand I can update and maintenance each application on it’s own without being depended on the same machine. same goes for failover, clustering, load balancing
What would you advice me? what should I consider? Latency vs decoupling and maintenance
thanks,
ray.
It could add 0.1 to 0.2 ms. This may be acceptable.
You are more likely to update the software than the hardware. Hadrware can usually be updated in off peak times like on weekend.s
The more machines you have the more points of failure you have.
You might not need to cluster if you have it all on one machine.
This make more sense if you need to use multiple machines.
If you have a web application 1 ms is fairly aggressive target. If you have a networked service such as trading system sub milli-second or even sub 100 micro-seconds is achievable depending on your requirements.