Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

팀 버너스리의 Solid: 개인 데이터 주권을 위한 웹 재탈중앙화 프로젝트 완벽 가이드

최근 팀 버너스리(Tim Berners-Lee) 교수가 Solid라는 프로젝트의 베일을 벗었습니다. 저는 이 프로젝트를 직접 살펴보았고, 이 글에서는 Solid가 목표로 하는 바와 함께 실제로 시작하는 방법까지 소개하려고 합니다.

Solid란 무엇인가?

Solid는 웹을 다시 탈중앙화하려는 시도입니다.

'다시'라고요?

웹 초창기의 비전은 탈중앙화된 협업형 읽기-쓰기 공간이었습니다. 실제로 최초의 브라우저였던 WorldWideWeb은 편집 기능까지 갖추고 있었죠.

그러나 웹이 발전하면서 여러 가지 이유로 웹 애플리케이션의 설계는 점차 중앙화되기 시작했고, 사용자 데이터는 인터넷 기업들의 권력과 수익의 원천이 되었습니다.

Solid는 바로 이 문제에 대한 해결책입니다.

Solid는 기존 웹과 하위 호환되는 새로운 웹 애플리케이션 패러다임입니다. 또한 하나의 기술 스택이자, 관련 프로토콜과 구현체, 그리고 끊임없이 성장하는 커뮤니티의 집합이기도 합니다. 마치 웹 자체처럼 말이죠.

앱과 데이터의 분리

인터넷 이전의 컴퓨팅 시대에는 개인용 컴퓨터에 여러분의 데이터가 저장되었습니다.

그러나 사람들이 여러 대의 컴퓨터를 사용하게 되고 스마트폰이 일상에 들어오면서, "데이터는 내 곁에 있다"는 모델은 "데이터는 전 세계의 거대 데이터 센터에 있으며 앱 개발사가 관리한다"는 모델로 대체되었습니다.

그 결과 애플리케이션은 데이터와 깊이 결합되었습니다. 웹에서 애플리케이션을 만든다는 것은 곧 대규모로 사람들의 데이터를 관리하는 일을 의미하게 된 것입니다.

앱과 그 수익성은 결국 데이터 사일로(data silo)의 크기로 측정됩니다. 서로 다른 앱들은 데이터를 제각각의 방식으로 저장하기 때문에, 사용자가 데이터를 옮기는 것은 매우 어렵습니다.

그 결과는 어떨까요? 거의 모든 앱이 폐쇄적 정원(walled garden)의 특성을 띠게 됩니다. 이는 개발자들이 앱 수준에서 혁신할 유인을 약화시키고, 기존 플랫폼은 데이터 잠금 덕분에 사용자 이탈이 어려워 경쟁으로부터 안전해지는 구조를 만듭니다.

데이터 보호 규제의 한계

일부 국가는 데이터 보호법을 제정했습니다. 기업은 사용자의 데이터를 제공해야 하며, 사용자는 이를 다운로드하거나 삭제할 수 있습니다.

이는 데이터에 대한 통제권을 사용자에게 되돌려주려는 시도입니다. 하지만 이것은 어디까지나 법적 처방일 뿐, 기술적 현실은 아닙니다. 사용자 데이터는 여전히 앱 개발사의 손에 있으며, 대안 서비스로 데이터를 옮길 수 없다면 다운로드 기능 자체도 큰 의미가 없습니다.

포드(Pod): 내 데이터를 직접 소유하다

Solid는 이 문제를 기술적인 차원에서 해결합니다. 애플리케이션이 사용자의 포드(pod)에 저장된 데이터를 읽고 쓰는 방식으로 구축될 수 있게 해주는 것입니다.

여러분은 포드를 가지고 있습니다. 친구들도 각자의 포드를 가지고 있죠. 포드는 여러분의 데이터를 저장하며, 여러분은 앱이 포드에 접근하도록 허용할지 직접 결정합니다.

포드는 여러 개 가질 수도 있습니다. 집용과 업무용으로 나눌 수도 있겠죠. 포드는 여러분의 컴퓨터에 존재할 수도 있고, 여러 기기에 분산될 수도 있으며, 호스팅 서비스를 통해 운영될 수도 있습니다.

그리고 포드는 링크드 데이터(linked data)를 저장합니다. 여러분의 포드는 제 포드의 어떤 데이터와도, 나아가 웹상의 어느 곳과도 연결될 수 있습니다.

우리는 여러 기기에서 실행되는 애플리케이션을 원합니다. 동시에 데이터에 대한 자율권도 원하고, 서로 다른 앱이 같은 데이터를 활용하고 수정할 수 있는 능력도 원합니다.

Solid의 핵심 개념들

Solid를 공부하기 시작하면서 저는 웹 개발을 처음 배웠던 시절이 떠올랐습니다. HTML, CSS, JavaScript, 그리고 당시의 프레임워크들을 한꺼번에 배웠던 기억이 나네요.

유일한 차이점이 있다면, Solid는 아직 새로운 기술이라 도움을 찾기가 더 어렵다는 것입니다.

다음은 Solid 개발을 시작하기 위해 첫날부터 알아두면 좋은 핵심 개념들입니다.

(참고: 바로 실습에 들어가고 싶으시다면 '첫걸음' 섹션으로 건너뛰셔도 좋습니다.)

링크드 데이터(Linked Data)

Solid의 힘, 그리고 웹 전반의 힘은 데이터가 하이퍼링크로 서로 연결되는 방식에서 나옵니다.

Solid에서는 여러분이 만든 데이터를 원하는 곳 어디에든 저장할 수 있습니다. 개인 데이터는 아마도 여러분의 포드에 저장되겠죠. 이 데이터를 참조할 때는 웹에서처럼 URL을 사용합니다.

이쯤에서 Solid의 정식 명칭을 소개할 적절한时机입니다. Solid는 SOcial LInked Data(소셜 링크드 데이터)의 약자입니다.

RDF(Resource Description Framework)

RDF는 주어-술어-목적어(subject-predicate-object) 형태의 문장으로 링크드 데이터를 표현하는 방식입니다. 이러한 문장들을 '트리플(triple)'이라고도 부릅니다.

RDF는 추상적인 모델이기 때문에, 심지어 영어 문장으로도 표현할 수 있습니다. 할 일 목록에 있는 하나의 작업을 예로 들어보겠습니다.

T1 is a task
T1 is labelled "Write an article about Solid"
T1 is due October 5rd 2018
T1 is assigned to @itsarnavb
T1 is incomplete

Turtle

Turtle은 URL을 사용해 subject, predicate, object를 표현하는 RDF 데이터의 간결한 표기법입니다.

URL을 그대로 나열하면 반복적이고 읽기 어렵기 때문에, Turtle은 접두어(prefix)와 축약 표기 시스템을 제공합니다. 긴 문서를 다룰 때 이 시스템은 특히 중요해집니다.

시맨틱 웹(Semantic Web)

이 개념은 팀 버너스리 본인이 가장 잘 설명했습니다.

"나는 웹에 대한 꿈이 있다. 컴퓨터가 웹의 모든 데이터, 즉 콘텐츠와 링크, 사람과 컴퓨터 간의 거래를 분석할 수 있게 되는 것. 이를 가능하게 하는 '시맨틱 웹'은 아직 등장하지 않았지만, 그날이 오면 무역과 행정, 그리고 우리 일상의 메커니즘이 기계와 기계가 대화하는 방식으로 처리될 것이다. 사람들이 오랫동안 내세워온 '지능형 에이전트'가 마침내 실현될 것이다."

첫걸음

아래 항목들을 편하신 순서대로 진행해 보세요.

  • 포드 만들기: 무료 포드 제공업체에 가입하거나, 직접 서버를 운영할 수도 있습니다.
  • Solid 앱 만들기: 튜토리얼을 따라 첫 번째 Solid 앱을 만들어 보세요.
  • 사례 살펴보기: Solid로 만들어진 다양한 프로젝트와 해커톤 결과물을 읽어보세요.
  • 공식 문서 읽기: Solid 공식 문서를 통해 전체 구조를 파악하세요.

Solid에 동참하기

Solid 생태계에 기여하고 싶다면 다음 두 가지 방법이 있습니다.

  • Solid 자체 및 관련 인프라 개발에 참여하기
  • Solid를 활용한 애플리케이션 개발하기

다만 주의할 점이 있습니다. 현재 Solid를 학습하고 개발하는 과정에는 상당한 시행착오가 필요하며, 어리석어 보일 수 있는 질문도 감수해야 합니다. 아직 Stack Overflow처럼 방대한 Q&A 자료가 없고, 일부 오류를 디버깅하려면 소스 코드를 직접 파고들어야 할 수도 있습니다.

도움을 받을 수 있는 커뮤니티는 다음과 같습니다.

  • r/solid (필자도 운영진 중 한 명입니다)
  • gitter.im/solid

마지막으로, 필자의 DM은 언제나 열려 있습니다(@itsarnavb). 받은 질문에 직접 답변하거나, 답할 수 있는 사람을 찾아 연결해 드리겠습니다. 그리고 이 글도 Solid를 배우는 데 가장 좋은 자료들로 계속 업데이트할 예정입니다.

추가 읽을거리

  • Solid 공식 웹사이트 - solid.mit.edu
  • Paradigm shifts for the decentralized web - Ruben Verborgh
  • One Small Step for the Web - Tim Berners-Lee

freeCodeCamp의 오픈소스 커리큘럼은 지금까지 4만 명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 무료로 코딩을 배우는 여정을 지금 시작해 보세요.