less than 1 minute read

the lack of robustness is inherent in the interface and not something that can be changed by altering the implementation

  • 과도한 추상화는 캐망이다.
  • 프로그래머가 local, distribute 인지 알고 짜게 해야 함.
  • 즉 인터페이스를 미친 듯이 통일할 필요는 없다.

distributed computing 에서 명심

latency

local machine처럼 막 호출했다간 심각한 성능 저하.

memory access

shared memory를 지원하지 않는 이상 address-space-relative pointer를 못 쓴다.

partial failure and concurrency

  • 구현 이슈가 아니라 인터페이스 이슈다
    • 인터페이스에서 이걸 처리할 수 있거나 state를 검사할 수 있는 걸 제공해야 한다는 뜻
  • 구현에서 어떻게든 극복하려고 하겠지만 안 된다
  • 어떻게든 같은 인터페이스를 가지게 하려면 local computing을 distributed computing에 맞춘 조낸 비효율적이고 불편한 인터페이스로 수행할 각오

그럼 완전 다른 인터페이스로 디자인해야 해?

  • distributed 속성을 추가하는 식으로 디자인하는 예제
    • Spring, Clouds
  • local object의 속성을 공유
  • distributed object 속성을 추가로 가지는 식으로 디자인
  • 이 정도가 가장 훌륭한 해결책으로 생각함

저자

  • Jim Waldo
  • Geoff Wyant
  • Ann Wollrath
  • Sam Kendall