메인
투자 노트
🥠

호기심의 시작

서버-클라이언트 구조의 웹 개발 프로젝트를 회사 혹은 개인으로 여러번 경험했는데 서버 비용이 많이 나가더라.
개인 프로젝트의 경우 서버 비용은 프로젝트 자체를 유지하기 어렵게 만들었다.
서버 없이 웹 페이지만으로 돌아가되 실제 니즈를 충족시킬 수 있는 제품 아이디어가 있다면 기꺼이 해보고 싶다.
데이터를 압축해서 URL에 담는 식으로 작동하는 일정 공유 어플리케이션을 만들어볼까 생각중이었다. URL을 다른 사람에게 공유하면 자신의 일정을 공유할 수 있고 서로간의 되는 시간을 맞춰볼 수 있는 사이트이다.
이런 생각을 가지고 있던 와중 블록체인에 흥미가 생겨서 비트코인 백서도 읽어보고 이것저것 검색하면서 동작 원리를 파악했다.
각 뉴런의 독립적인 활동이 지능으로 창발되는 신경망처럼 각 블록의 독립적인 활동이 보이지 않는 중앙 서버로 창발되는것 같다. 내 언어로 표현하면 이렇게 느껴졌다.
비트코인을 포함한 여러 블록체인 프로젝트는 자신만의 프로토콜과 그것을 구현한 소프트웨어로 동작한다.
모든 블록체인 프로젝트는 근본적으로 무결한 DB를 만들고 유지시킨다는 똑같은 목적을 가지고 있다.
Chrome과 같은 브라우저가 서버를 거치지 않고 브라우저들과 통신할 수 있다면 블록체인 네트워크를 구성해서 모두가 동일한 DB를 쓰게 만들 수 있다. 그러면 서버 없이 HTML 파일 하나만 가지고 여러 이용자가 모여 소통하는 웹 서비스를 만들 수 있다!
웹 브라우저간 P2P통신이 가능한지 찾아보았다. 현대 브라우저들은 WebRTC라는 기능을 통해서 P2P 통신이 지원된다. WebRTC를 사용해서 직접 만들어볼까 하다가 먼저, 이미 만들어진게 있는지 찾아보기로 했다.
이미 만들어진게 있었다. 심지어 이 개념 자체가 Web3.0이라는 큰 패러다임이었다.
Orbit db 프로젝트에서 탐색을 시작했다. IPFS로 파일 저장소를 구현하고 libp2p로 저장소 동기화를 구현했다. libp2p는 내부적으로 WebRTC와 WebTransport를 사용했다. 각 기술이 어떻게 사용되는지는 libp2p 문서에서 설명해준다. 충돌 없는 쓰기 및 병합을 위해서 Merkle-CRDTs를 사용한다.
Orbit db 프로젝트는 WebRTC를 포함해서 다양한 기술을 통합해 웹 브라우저로 동작하는 탈중앙화 DB를 구현한것 같다. 이것을 사용하면 서버 없이 다수의 사용자가 이용하는 웹 서비스를 개발할 수 있지 않을까?