앞으로 추가될 하이브마인드와 커뮤니티 기능 이해하기 (Let's dig into Hivemind and Community)

in #kr7 years ago (edited)

스팀잇 팀의 @roadscape가 어제 하이브마인드 (Hivemind) 프로젝트에 대한 업데이트(morning님의 번역)를 하였습니다. 이 프로젝트가 무엇을 의미하는지 저의 관점에서 해설을 해드리고자 글을 시작합니다.

본 글에서 언급하는 내용은 하이브마인드의 소스코드를 통해 파악한 내용이며, 스팀잇 개발 상황에 따라 언제든 변경될 수 있음을 미리 알려드립니다.

하이브마인드 소스코드:
https://github.com/steemit/hivemind

하이브마인드

하이브마인드 프로젝트는 스팀 풀노드가 가진 한계를 극복하기 위한 off-chain API layer 이며 이는 많은 변화를 가져올것으로 기대됩니다. 그리고 하이브마인드 내부 기능 중에서 가장 주목받고 있는 한가지가 “커뮤니티”입니다.

현재 스팀잇은 모든 글이 한곳에 쏟아져 들어오고 사용자들이 태그를 이용해서 알아서 걸러내야 하는 구조입니다. 또한 어떠한 추가적인 거버넌스 기능도 제공되지 않기 때문에 사실 사용자 입장에서는 너무나 불친절하고 불편합니다.

이를 극복하기 위한 방법은, 각 클라이언트 (예를들면 steemit.com, busy.org 등) 들이 각자의 off-chain 데이터베이스와 API를 구축하고 그위에 전용 UI를 입히는 것입니다. 이 방식이 어려운것은 아니지만, 가장 큰 장애물이 있습니다. 그것은 바로 클라이언트 간의 호환입니다.

만일 제가 끝내주는 스팀잇 클라이언트를 만들고, 동호회 기능을 추가했다고 가정합시다. 그리고 이모티콘 기능과 별도의 글 편집기를 장착했습니다. 그러면 제 클라이언트에서 사용하기위한 데이터들을 따로 저장하고, 블록체인에도 일부 저장하는 등의 방식을 택할 수 밖에 없습니다. 그런데 그런 일련의 비표준적인 방식으로 저장된 글과 데이터는 다른 클라이언트에서는 호환이 되지 않기때문에 결과적으로는 혼자 잘 살겠다고 나머지 클라이언트들에게 해를 가하는 결과를 초래합니다. 이것이 지금 스팀잇의 클라이언트들이 겉모습 말고는 딱히 대단한 변화를 주지 못하고 있는 가장 큰 이유입니다.

결국 이런 새로운 기능들이 스팀잇 “표준”으로 규격화 되고 제공되어야 다른 클라이언트들이 호환성을 유지할 수 있습니다. 그렇다고 이런 부분을 블록체인과 맞닿아 있는 steemd 풀노드에 추가하는것은 여러가지 문제로 불가능에 가깝습니다. 그래서 클라이언트와 steemd 사이에 추가적인 계층을 구성하여 표준화 된 방법으로 제공하려는 프로젝트가 하이브마인드 입니다.

Screen Shot 2018-04-03 at 12.08.02.png

아키텍쳐

하이브마인드는 이름은 거창하지만 사실 매우 단순한 컴포넌트 몇가지로 구성 되어 있습니다.

  • 인덱서: 스팀 블록체인을 읽어서 데이터베이스에 차곡차곡 저장합니다.
  • 서버: 가장 전면에서 클라이언트들의 API 요청을 라우팅합니다.
  • 커뮤니티: 서버 뒷단에 붙어서 API 중 커뮤니티 관련 API 처리를 합니다.

SteemSQL 같은 서버에 여러 API 가 추가되어 데이터를 모듈 형태로 조회할 수 있도록 하고 일부 데이터들을 steemd를 통해 블록체인에 기록하기도 하는 형태의 백엔드 서비스라고 생각하시면 됩니다.

Screen Shot 2018-04-03 at 12.26.09.png

커뮤니티

하이브가 활성화 되면 클라이언트들이 표준화된 방법으로 커뮤니티 기반 UI를 구현 할 수 있습니다. 이는 완전히 off-chain은 아니고, 커뮤니티 설정 정보 자체는 on-chain 이고 글을 community 단위로 분류한다거나 권한을 적용한다거나 하는 부분은 off-chain 입니다.

커뮤니티는 누가 만들수 있나

누구나 만들 수 있습니다. 커뮤니티하나당 steem account 하나가 필요하며, 커뮤니티 설정정보들은 account의 json_metadata에 저장하는 듯 합니다. 따라서 커뮤니티 멤버들이나 권한설정 들은 블록체인에 바로 공개됩니다. 반드시 새로운 어카운트가 필요한것은 아니고 아무나 자신의 계정을 기반으로 하는 커뮤니티를 만들 수 있습니다.

커뮤니티를 생성할때 설정 가능한 값

커뮤니티 이름, 설명, 언어, 유해정보여부 (NSFW)

제공될 커뮤니티 관리 기능

  • 멤버 추가: 멤버를 커뮤니티에 추가합니다.
  • 멤버에게 권한 부여: 멤버에게 커뮤니티 운영 관련 권한을 줍니다.
  • 멤버 제거: 멤버를 제외시킵니다.
  • 멤버 뮤트/언뮤트: 특정 사용자의 글을 목록에서 보이지 않도록 합니다.
  • 글 뮤트/언뮤트: 글을 목록에서 보이지 않도록 합니다.
  • 글 고정/해제: 항상 위에 뜨게 하는 등 공지사항처럼 사용가능할 것으로 보입니다.
  • 글 플래깅: 다운보팅 합니다.

멤버 종류와 그에 따른 권한 종류

소스코드상으로 본 멤버 종류와 권한입니다. 커뮤니티장은 모든 권한을 가지고 그 아래로 갈수록 권한이 사라지는 계층구조입니다.

  • 커뮤니티장: 생성
  • 관리자(admin): 관리자 추가/제거, 조정자 추가/제거
  • 조정자 (moderator): 설정 변경, 회원 추가/제외, 사용자 뮤트/언뮤트, 글 뮤트/언뮤트, 글 고정/해제, 특정 사용자 이름이 어떻게 보일지 지정
  • 회원(member): 다운보팅
  • 손님(guest): 권한이 없음
  • 차단됨(muted): 권한이 없음

성능

현재 스팀잇의 실 사용자 수가 얼마 되지 않기때문에 성능이 염려될 수준은 아닙니다. 메이져 SNS만큼의 트래픽을 감당하기에는 한계가 명백한 구조이므로 앞으로 개선할 점이 많아보입니다. 하지만 현재 생각할 수 있는 가장 경제적인 아키텍쳐이기도 하고, 확장성도 어느정도 까지는 보장되므로 큰 우려는 없습니다.

한계

하이브는 off-chain이므로, on-chain 데이터에 대한 access는 변동이 없습니다. 즉 커뮤니티 설정과 권한 설정과 전혀 관계없이 누구든 이전 클라이언트나 steemd API를 호출하여 액션을 취할 수 있기 때문에 on-chain에 행해지는 액션들은 여과 없이 그대로 반영 됩니다. 예를 들면 어떠한 방법으로도 커뮤니티 내의 글을 비밀로 할 수 없고, 커뮤니티 외부에서의 모니터링이나 다운보팅 같은 것을 막을 수는 없습니다.

데이터는 모두에게 노출되며 클라이언트에서 모든것을 설정에 따라 필터링해주는 방식이 됩니다. 하지만 이 방식만으로도 유저들의 만족도는 엄청나게 올라갈 것으로 판단됩니다.

마치며

지금 개발중인 하이브/커뮤니티는 백엔드쪽 구현이 전부입니다. 이부분이 완성되어도 클라이언트들이 커뮤니티 기능을 개발하지 않으면 아무것도 바뀌지 않습니다. 현재 대표적인 클라이언트인 steemit.com과 busy.org 가 하이브마인드의 개발 진행사항에 발맞춰서 신속하게 UI를 개발해 주기를 기대해 봅니다.

Sort:  

이해하기 쉽게 풀어주셔서 감사합니다.~ steamed 풀노드 오타 발견.

오우 감사드립니다! ^^

해석 감사합니다~ 커뮤니티가 기다려집니다.

감사합니다. 간단한건데 후딱좀 만들면 좋겠습니다. ㅎㅎ

커뮤니티가 빨리 활성화 되었으면 좋겠어요. 스팀잇이 빨리 베타 딱지를 떼야할텐데.. 언제쯤 그 날이 올까요.

까마득할것같은데요.. ㅎㅎ

우와 ~~ 어렵지만... 뭔가 좋아보입니다 ~ ^^
스팀잇의 빠르고 편리한 업데이트 쪽 기대해봅니다 ~
그리고 커뮤니티 활성화 ~ 꼭 필요할 듯 싶습니다.

그렇습니다. 오프체인이라는점이 저에게는 단점보다는 장점으로 다가옵니다. ^^

지식이 부족하여 무슨 말인지는 못 알아듣겠지만, 응원하겠습니다.

감사합니다 그림. .. 아니 시쟁이 시린님 ㅎㅎ

저도 지식이 부족하여 완벽하게 이해하지는 못하겠지만...
여튼 개발자들이 열일 하고 있고
앞으로 더 발전하는 스팀잇이 된다는 내용인 듯 싶네요...
감사합니다

감사합니다. 개발자들이 열일하는지는 모르겠습니다만... ㅎㅎㅎ.

배울게 너무 많습니다.ㅠㅠ

전혀 모르셔도 됩니다. ^^ 궁금해하시는분들이 계실까봐 정리한것입니다.

하이브 하면 저그가 떠오르네요 ㅎㅎ 커뮤니티가 일장일단이 있을 것 같긴 한데, 지켜봐야겠네요.

울트라리스크만 뿜뿜 뽑아내면 되는데말이죠 ㅎㅎ

이거 궁금했는데 이리 소스 분석까지 해서 알려주시니 넘 감사합니다 +_+

구현된게 거의 없어서... ㅎㅎㅎ 감사합니다!

뭔가 상당히 복잡해보이네요ㅎ

알고보면 간단합니다. 빨리 완성했으면좋겠네요. ^^

이렇게 풀어 써 주시니 이해가 쏙 되는 군요. 감사합니다.

이해가 쏙 되신다니.. 감사합니다. ㅎㅎ

뭔지 조금 알거같아요
감사합니다

감사합니다 ^^

와~ 소스까지 보시고, 상세한 해설 감사드립니다. :)

소스는 조금 봤습니다 ^^ 강아지가 너무귀엽네요 ㅎㅎ

각 커뮤니티에 하이브 파트 개발자가 요구될 수 있겠네요. 후후... 몸값을 올려둬야 (...)

커뮤니티가 아니고 클라이언트 말씀이시죠? ㅎㅎ

네! ㅎㅎㅎ 용어를 헷갈렸네요 ;ㅂ;

어려운 말인데... 참..
아무튼 고생많으세요 ㅎㅎㅎㅎ

제가 만든느것도아닌데요 뭐 ㅎㅎㅎ 족장님이 글쓰시느라고생이 많으시죠..ㅋ

ㅠㅠ;

숙제를 내주고 내빼셨잖아요 ㅠㅠ;

곧 숙제검사 합니다. ㅎㅎ

오늘은 좀 넘어갈려고 했더니.. 숙제 검사를 하신다길래... ㅠㅠ;
즐거운 여행되세요~!!

역시~ 잘보고 갑니다.

워니윤님 잘지내시죠^^ 감사합니다!

다른 블로그들과 약간 비슷한 점을 갖출 듯 한 느낌을 받는데 맞나요? 그래야 더 큰 그림이 그려지는 것 같으네요~

표면적으로는 비슷한 서비스를 구현할수 있게 됩니다. 하지만 뒤에는 노출되어있죠.. 근사한 집인데 앞에 벽만 있고 뒤는 비어있는.. 느낌이려나요 ㅋㅋ

오호~ 하이브마인드 완성되면~ steemsql 같은 DB는 공개를 해주려나요..?? ㅎㅎ
거기에는 일단 스팀블록체인 내용은 다 들어가 있을것 같은데 말이죠..?? ㅎ

아마 sql 돌릴수있는 수준까지는 공개는 안해줄겁니다. 대신 각자가 하이브마인드 설치하고 싱크 하면 완성된 DB를 가질수 있죠.. PostgreSQL로요 ㅎㅎ 이것도 괜찮은 장점같습니다.

참 근데 wallet 등의 정보는 관리하지않는다고하니 몇몇 기능을 위해서는 좀 부족할것같습니다.

아하... 음 그렇군요...
모닝님 번역본을 보니 사양도 아마존 프리티어로는 힘들겠던데요 ㅎㅎ 그래도 smt처럼 대역폭 확보를 위한 스팀보유는 없어도 될것같은 느낌이네요

지갑 정보는 또 부족이라... 거의 포스팅 보팅 이런쪽 내용이 다겠네요~ 한번 설치는 해봐야겠네요~

포스트그레면 쓰기도 편할테고요~~

맞습니다 ㅎㅎ 하드용랑만 넉넉하면 개발용으로라도 사용해볼만 할것같습니다.

풀어서 설명해주시니 이해가되네요. 감사합니다.

징스님 잘지내시죠?^^ 스팀카톡방은 아직 잘 돌아가고있나요?

와우, 제가 미쳐 확인을 못했네요
멋진 포스팅 감사합니다.^^

요호님 감사합니다. 요호님글도 잘 읽었습니다!

하나하나 태그로 구분짓는 것이 많이 불편했는데
자동으로 커뮤니티 내에서만 사용가능한 태그를 제한하는 기능도 될까요.
(추방개념 같은거라던가)
다른 커뮤니티를 기준으로 생각하다보니 생각이 좁아지는 느낌입니다만...어서 모습을 드러내서 활성화되었으면 좋겠네요...

태그와 커뮤니티는 딱히 엮이지 않을것 같습니다. 커뮤니티는.. 사용자가 원하는 것만 볼 수 있는 필터링 계층 이라고 생각하시면 되겠습니다. 태그 제한은 구현사항에는 아직 없는데 추가될수도 있지 않을까요? ^^

좋은 글 감사합니다. 또 공부해보아야 할 게 늘었네요 :)

감사합니다 ^^

좀 더 딥한 설명이군요 +_+ 와 감사합니다.

일단 해당 결과물이 공표되어져서 사용해보면서
익혀야 더 공감이 오지 않을까 싶네요..

수고하셨고 그럼에도 잘 보고 가요

맞습니다.빨리 개발되면 좋겠습니다.. ^^

이제 막 입문하긴 했는데 상세해보이는 설명을 여러번 읽어도 무슨 말인지 모르겠는 까막눈... ㅠ_ㅠ 슬픕니다 ㅠㅠ..

상세라기보다는 깊이 들어간거라서 그럴수있습니다 ^^;

대략 읽어보니 꿀이군요.
벌집의 생각? ㅎㅎ
SMT와는 어떻게 다른가요.
SMT 나오기 이전에 시험하는 정도의 의미도 있을까요.

SMT는 역시 코어의 변화일 뿐, 서비스로직을 구현하는 하이브마인드는 필요할것 같습니다. 따라서 SMT도 지원할 가능성이 높다고 보고있습니다 ^^

답변 감사합니다.
각자 코어와 서비스 역할을 하면서 서로 보완적인 관계가 될거라는 거죠?
앞으로가 기대됩니다.

와우 나날이 발전 하는군요. 기대되네요. 스팀잇의 미래.

좋은글 감사합니다. 리스팀 합니다.~

커뮤니티가 필요한 건 모두의 마음인것 같습니다..속히 시행 되길 기다려봅니다^^