As more of the world is connected, and automated we see more and more uses of IoT devices, and robotics which need communication system not only to home in to their server, but also sometimes to the customer itself. What we see now are there are not easy way to do that programmatically, without needing to setup their own infrastructure.
What it does
With synchronous we can make communication of machine-to-machine or human-to-machine as easy as sending some kind of message to a centralized edge server, and be able to communicate to whatever device in the area. Not to mention that the edge server are built on top of AWS Wavelength and Verizon 5G network making those messages instant.
How we built it
The big picture of synchronous architecture are something like this,
The big picture of synchronous are this, there are 2 server, the central one in the normal AWS EC2 region which handle all of the authentication, authorization, and it communicates it to the edge server about a new device that is going to be connecting, or removing that. And from the edge server it receives the broadcast made from the device from all of the edge server (in this case just one).
Then the edge server are in the AWS EC2 Wavelength Zone itself, that is connected directly to Verizon 5G Network. The edge server itself handles all the communication of devices in that wavelength region, it connects one to another, or even one to many devices. It also checks for the devices that want to connects, making sure it is allowed by the central server.
Then there's the user server and devices, both are the synchronous customer. With the devices and servers managed by the customer which piggy back of their communication to synchronous. In the demo video itself there are 2 devices, one is the delivery robot which receives command to start moving the order, and the customer of the "Sync Delivers" itself, which receives updates of the robot, and command it to open after the robot has arrived.
All communication between the central server, the edge server, and the devices in the wavelength zone are made using Socket.IO. It could be anything else, but it is the most versatile and the event based of it make perfect sense for the demo. That is why the server, are all made using Node JS, Express, and Socket.IO. While the "robot" devices are just simulating what would a real robot sends, also uses Node JS, and Socket.IO. Lastly, the demo website are a React app using Socket.IO to communicate.
Challenges I ran into
There are quite a bit of challenges along the way, a few of them are,
- Coming up about the use of 5G and edge computing even though my country did not even have any 5G connection (at the time of the first round)
- Designing what would be a proof-of-concept of synchronous itself
- Developing multiple individual Node Application at once really eats up all the RAM
- Deploying all the servers took quite a bit of exploration and debugging, especially with CORS and HTTPS, ended up with HTTP, (if anyone know how to secure EC2 in wavelength zone with HTTPS please do tell me)
- Perfect storm of a timing, with midterm, a ton of tasks, and other thing in life
Accomplishments that I'm proud of
A snappy working prototype that shows what synchronous can do just really does it after a perfect storm of timings in my life.
What I've learned
I learned a lot, deploying to edge server, and learning about the hub-and-spoke design I used. But especially being able to actually learned the new technology that is 5G, its speed, latency, and low jitter really does opens my eye on what could be done in the future.
What's next for Synchronous
I think there are a lot of use of a new kind of communication layer, especially later when 5G is the norm. There could be a lot device that needs a way to just easily devices around them, to some devices specific to it (like a self driving car to a specific CCTV to check for blind spot), and even to just broadcast something to the network (like a security devices).
But what would be really nice is if synchronous could be an edge compute platform as well on top of being a communication platform, it just make sense a natural progression. The device could compute something heavy and not that critical of safety of people, it can offload it to the server. Something like a entertainment system of heavy games, could be renders it in the edge server without sacrificing the latency of it. A city could have their camera hooked up to it, and do inference of how many people are in one spot in the city and do Covid precaution accordingly. The possibility are endless.