2. Server architectural drivers
Functional requirements
• Connect clients based on their location
• Pass messages between clients when they can not use bluetooth
for communication
Quality attributes
• Availability - clients should be processed despite the fact that they
might have loosely and interruptible connection
• Scalability - service should be resistible to short term load peaks
Constraints
• Business
1. Connect only clients in the X range between each other
2. Server should not process contents of messages
• Technical
1. Java, ProtoBuf, Netty were chosen to use
2. Clients are iPhone and Android devices that communicate via bluetooth
and direct WiFi between each other