Provide Load Balancing for Intra-Role communications
The fabirc should provide the ability to have load-balanced intra-role communication (i.e. internal cloud VIP's), so instead of asking the RoleEnvironment for the instance IPEndpoint list and choosing manually, there should be a mechanism for simply saying call this other role, and let the fabric decide (based on perf/count/round robin, etc...) to what instance of the role to send the call.
Load balancers for internal endpoints should be an absolute must-have! At the moment you can't write a nicely n-tiered, secured, stateless and fault-tolerant application without either messing around with your own load balancing code, or exposing your lower tier as an external endpoint (which might be a showstopper from a security point of view).
Will Blackie commented
along with this goes a need for the internal endpoint to select a different port per instance on the dev fabric .. so that you can test with more than 1 instance prior to cloud deployment.
Jeroen Mineur commented
I very much agree. And there is a very good reason to have this implemented as soon as possible: when the Azure Fabric Controller decides to take a role instance down for maintenance (which happens about once a month), the load balancer is informed of this immediately but the RoleEnvironment class in the other roles is not (at least not immediately). Therefore, those roles will keep trying to connect to an invalid IP/port, resulting in exceptions. An inter-role loadbalancer can resolve this.
Agreed. I ran into this today, and I wasnt happy. InternalEndpoints are useless if they cannot be load balanced like the InputEndpoints of a web site.