Challenges in distributed systems
- Concurrency
- Paritial failure
- Performance
노드를 늘려서 bottleneck을 해소시킬 수 있습니다.
Fault Tolerance (Failure)
Fault tolerance란 아래 두 가지를 의미합니다.
- Availbility - 일부 노드가 다운되더라도 서비스가 정상적으로 작동할 수 있음을 의미합니다.
- Recoverability - 노드가 다운되더라도, 재시작후에 정상적으로 작동할 수 있음을 뜻합니다. 따라서, 다운 전까지의 데이터를 저장하고 있어야합니다. Non-volatile storage(hard disk, flash memory) 등이 이용됩니다. 혹은, replication을 이용합니다.
Consistency
2개의 Key-value storage replication이 존재할때, 하나를 업데이트하면 나머지도 같은 값으로 업데이트되어야 Consistent하다고 할 수 있습니다.
- Strong consistent : consistency가 항상 보장됩니다. 이를 위해, replication끼리 항상 통신을 하여 값이 일치함을 검증하므로 비용이 비쌉니다.(느립니다.)
- Weak consistent : stale value을 얻을 수도 있습니다. 현장에서는 보통 Weak consistent를 사용합니다.(속도가 빠르므로) 따라서, weak consistency를 적절히 활용하는 방법에 대한 연구가 많습니다. (consistency를 항상 보장하지 않으므로)
Reference
https://www.youtube.com/watch?v=cQP8WApzIQQ&t=2239s