I am working through resources related to non-abstract large scale system design. I'm working through the google system design exercise in this video.
In the example solution presented, a calculation is made for the number of write requests a write server can pass through to an underlying storage subsystem. Essentially, the write service is receiving 4MB images from users and for each calling the storage system write operation in parallel. We assume that the storage subsystem has inifinite scaling. The write service hardware has a NIC capable of 1GB/s operation. We assume that the server has reasonable CPU and cache/memory to fully saturate the link up and down.
The example video tried to estimate the total number of write operations that a single server can achieve per second.
They state that:
- it takes 4ms to receive the file from the user (4MB / 1000 MB/s)
- it takes 4ms to send the file to the storage back end (4MB / 1000 MB/s)
- Therefore 8ms to 'save' the file.
- Therefore a single server instance can process 125 writes / second.
But this feel a bit wrong to me. If the server hardware is a standard NIC connected to a standard switch, then the connection is full duplex? Therefore the bandwidth up and down is not shared, and therefore the write operations would be roughly 250 / second?