Software Platform의 종류

이전에 Software에서 중요한 것이라 글에서 내가 생각하는 Software에 대해 이야기 했고, Software 이야기를 하면 항상 Software Platform에 대해 나오게 됩니다.

Software Platform이 무엇인가 하는 것은 여러 좋은 글들이 많았고, 15년 전에 Joel이 쓴 Platforms을 추천합니다. 여러 훌륭한 말 중에서 가장 마음에 드는 것은, Software Platform은 다른 Software와는 다르게 일반 사용자가 아니라 개발자를 대상으로 한다는 점입니다. 그리고 한 발자국 더 나아가, Software가 Platform을 원하지 않아도 사용자가 아닌 개발자를 위한 Software는 Software Platform 입니다.

아마도 Software의 개수 만큼 많은 Platform이 있겠지만 제 경험 상 다음과 같이 Software Platform들을 분류 할 수 있었습니다.
  1. Hardware Control Platform
    특정 Hardware가 한 번 나와서 끝난다면 상관 없는 이야기겠지만, 추후에 계속 시장에 존재하기를 원한다면 Software Platform이 필요합니다. Hardware Vendor들이 주도 할 것 같지만 의외로 Apple 이외에는 잘 하지 못하고 있습니다.
  2. 공통된 Software 기능 환경 Platform
    Internet Browser나 DBMS같이 독립된 Software 자체가 Software Platform 역할을 하는 하는 경우입니다. 주로 서로 다른 환경을 추상화 해서 공통된 환경울 제공 해 준다던가, 공통 된 기능을 제공 해 주는 역할을 합니다. 이전에 필요를 느끼지 못하는 부분에 대해서 Software Platform 을 도입하는 것이기 때문에 해당 Domain에 대해 최고의 지식과 경험이 필요합니다.
  3. 서비스 공통 모듈 Platform
    어떠한 모듈 A가 재사용 되고 다른 외부의 여러 모듈들이 A에 의존하거나, 외부 모듈의 형상이 계속 바뀌지만 A는 영향을 받지 않을 수 있으면 모듈 A는 Software Platform이 됩니다. 많은 웹 기반 서비스 회사 들에서 사용자에 대한 Front-End는 계속 바뀌지만 Back-End는 별도로 인터페이스를 유지하면서 Software Platform 역할을 합니다.
앞의 두 가지와 비교해서 3번째의 경우 외부가 아니라 내부 개발자가 기본 대상입니다만, 이렇게 Platform화 된다면 3번의 경우도 일부 기능들을 외부에게 제공 할 수 있게 됩니다.