We argue that objects that interact in a distributed system need to be dealt with in ways that are intrinsically different from objects that interact in a single address space. These differences are required because distributed systems require that the programmer be aware of latency, have a different model of memory access, and take into account issues of concurrency and partial failure.
A Note on Distributed Computing
많은 사람들이 network transparency 또는 distributed object 기술에 관해서 부정적인 견해를 보이고 있지만 이 문제에 관해 잘 정리된 문서를 보기는 힘들었다. 이 paper에서는 latency, memory access model, concurrency와 partial failure의 문제를 들어 local object와 distributed object 사이의 차이를 보이고 있다. 그러한 차이 때문에 local object와 distributed object 사이에는 implementation의 차이뿐만 아니라 interface 수준 (즉 설계 수준)에서 차이가 발생할 수 밖에 없다고 얘기하며, 이를 무시할 경우에 어떤 문제가 발생하는 지를 설명하고 있다. NFS를 예로 들어 설명하고 있으며, 마지막에서는 같은 machine boundary지만 memory는 공유하지 않는 세번째 모델에 대해서 언급하고 있다.
실제로 distributed object 기술 개발을 경험해봤던 사람으로써, 이 paper가 언급하고 있는 문제를 대부분 경험해보았다고 얘기할 수 있을 것 같다. 이 paper가 언급하고 있는 NFS와 같이 오래된 예보다는 RPC나 CORBA 계열의 기술들을 직접 예로 들어서 이 paper의 논리를 보충하면 좋을 것 같다는 생각이 든다. 나중에 시간이 생기면 실제 경험을 바탕으로 얘기해보도록 하겠다.