General requirements:
- You must complete all elements of the demo during the 30-minute slot you have reserved. Points will be deducted if you are unable to complete all elements of the demo during that time, for example because you are not prepared at the beginning of the demo or because you arrive late.
- You must demonstrate your program running on the microcloud.
- You must demonstrate your program running on several different nodes. Each instance of the backend or frontend must run on a different microcloud node.
If you implemented strong consistency you must demonstrate the following:
- Launch a primary and one secondary node
- Launch at least two frontend nodes
- Execute several POST and GET requests from each frontend
- Use logs or command line output to demonstrate communication between the primary and secondary
- Lauch a second secondary node
- Use logs or command line output to demonstrate that the new secondary receives a correct copy of the database
- Launch another frontend
- Execute several more POST and GET requests from the frontends
- Kill the primary node
- Use logs or command line output to demonstrate that the election algorithm works correctly
- Execute several more POST and GET requests from the frontends
- Demonstrate that if the primary fails after replicating to secondary 1 but before replicating to secondary 2 that the data store is made consistent after the new primary is elected
If you implemented eventual consistency you must demonstrate the following:
- Launch two backend and two frontend nodes
- Execute several POST and GET requests from each frontend
- Use logs or command line output to demonstrate gossiping between the backends
- Use logs or command line output to demonstrate correct updating of the vector clocks
- Launch a third backend node
- Use logs or command line output to demonstrate that the new backend receives a correct copy of the datastore
- Execute several POST and GET requests from each frontend
- Use logs or command line output to demonstrate correct updating of the vector clocks
- Kill one of the backend nodes
- Use logs or command line output to demonstrate that failure of the backend is discovered
- Execute several GET and POST requests from each frontend
- Demonstrate that if a frontend contact a backend with a GET and has a higher timestamp the backend will not reply with older data