마스토돈에서 “정합성 훼손”이란? (+ 서버 관리자가 명심해야 할 점)

date
slug
what-is-consistency-break-in-mastodon
status
Published
tags
기술
마스토돈
summary
데이터 무결성과 정합성의 개념에 대해 알아보고, 마스토돈에서 어떤 의미를 가지는지 알아봅니다. 또한 “정합성 훼손”이 마스토돈에서 가지는 의미와 위험성에 대해 알아봅니다.
type
Post
https://velog.io/@yangsijun528/무결성과-정합성이란-무엇인가 설명을 시작하기 전 글 하나 보고 가시겠습니다. 무결성과 정합성에 대해 개념을 정리한 글입니다.
해당 글에서 데이터 무결성은 데이터 값이 정확한 상태를, 정합성은 데이터 값이 서로 일치하는 상태를 의미한다고 설명하고 있습니다. 마스토돈을 이용하는 상황을 예로 들어 보겠습니다.
툿을 보낼 때 보낸 툿의 내용은 변경되어서는 안될것입니다. 예를 들어 “생일 축하해”라고 보낸 툿이 생ㅇ리 축하해”가 된다면 오해를 부를 거라는건 불보듯 뻔한 일이죠. 하지만 데이터 정합성은 여기에서 더 나아갑니다. 오늘 다룰 주제가 바로 이 “정합성”에 대해서, 그리고 이게 훼손되면 발생하는 일에 대해서입니다.
 
먼저, 정합성에 대해 이야기하기 전 마스토돈이 어떻게 다른 서버와 서로 소통하는지부터 간략히 알아봅니다.
이를 위해 아파트를 예시로 들어보겠습니다. 트잉여 아파트와 큐돈 아파트, 플래닛 아파트, 그리고 와르르 맨션이 한 도시에 있습니다. 아파트간 거리는 멀어서 대화할수 없습니다. 같은 아파트내 거주자끼리만 서로 대화할수 있죠. 이러한 서비스 형태의 예로는 기존 SNS 서비스들이 있습니다. 트위터/페이스북/인스타그램 같이요. 인스타그램 계정으로 트위터 계정에게 멘션을 보낼수는 없겠죠?
 
마스토돈과 같은 분산형 SNS에서는 조금 다릅니다. “편지”라는 것을 이용해서 아파트간 대화를 할 수 있습니다. 이 편지는 받는 아파트가 어떤곳이건(즉 아파트건, 맨션이건, 심지어 단독주택이더라도!) “편지”라는 규격을 이해한다면 내용을 볼수 있도록 해줍니다.
“편지”를 마스토돈에선 ActivityPub라고 부릅니다. ActivityPub를 이해하는 프로그램으로는 마스토돈도 있지만 플레로마나 미스키도 ActivityPub를 이해할수 있습니다. 이를 또다시 아파트에 비유하자면 아파트 단지에 위치한 우편함을 예로 들 수 있습니다.
우선 아파트 단지별로 관리인이 한명씩 존재한다고 가정해 봅니다. 이 관리인은 아파트에 온 편지를 보고 그 편지가 누구에게 보내진 건지 확인합니다.
  • 만약 받는 주소에서 보낸 사람의 편지를 받는다고 미리 이야기해 뒀다면 편지를 받습니다.
  • 하지만 편지를 받는다고 하지 않는 경우 그냥 버립니다.
  • 하지만 그 호수가 반드시 읽어봐야 한다고 표시하면 그냥 보냅니다.(멘션이나 DM)
(덧. 실제로 팔로워가 하나도 없는데 공개툿이 서버로 보내지는 일은 없을겁니다. 하지만 비유를 위해 적습니다)
 
이 상황에서 트잉여 아파트 101호에 사는 사람이 플래닛 아파트 201호의 사람의 공개 편지()을 받아보고 싶어합니다. 201호가 공개적으로 보내는 편지를 받아보고 싶어해요. 그렇다면, 201호가 편지를 보낼 때 101호한테도 보내달라고 이야기를 해야합니다. 이를 위해 101호는 201호에 편지를 한통 씁니다.
  • 저는 트잉여 아파트 101호입니다. 플래닛 아파트 201호의 공개 편지를 받아보고 싶어요.
201호는 모든 요청을 아무 조건 없이 받아주는 곳이라 바로 답장을 씁니다.
  • 저는 플래닛 아파트 201호입니다. 트잉여 아파트 101호에게도 앞으로 공개 편지를 보낼게요.
그리고 공개 편지를 보낼 대상에 트잉여 아파트 101호도 추가합니다.(팔로) 트잉여 아파트 101호는 플래닛 아파트 201호에게서 온 공개 편지는 의심하지 않고 받아보기 위해 따로 기록해 두고요.(팔로)
 
플래닛 아파트 201호의 편지만 받는건 지루합니다. 그래서 큐돈 아파트의 303호의 공개 편지도 받아보고 싶어졌습니다.
  • 저는 트잉여 아파트 101호입니다. 큐돈 아파트 303호의 공개 편지를 받아보고 싶어요.
하지만 큐돈 아파트 303호는 조금 까다롭습니다. 좀 더 고민해 보겠다고 답장을 보냅니다.
  • 저는 큐돈 아파트 303호입니다. 트잉여 아파트 101호에게 공개 편지를 보내는건 조금 더 고민해 보겠습니다.(좌물쇠 계정=팔로워 수동 승인)
시간이 조금 지나고, 큐돈 아파트 303호가 결정했습니다. 트잉여 아파트 101호에게도 공개 편지를 보내기로요. 답장을 다시 해줍니다.
  • 저는 큐돈 아파트 303호입니다. 트잉여 아파트 101호의 요청을 허락하니 앞으로 제 공개편지를 받아볼 수 있습니다.
아까와 똑같이 큐돈 아파트 303호는 공개 편지를 보낼 대상에 트잉여 아파트 101호를 추가합니다.(팔로) 트잉여 아파트 101호도 큐돈 303호의 공개 편지를 의심하지 않고 받아보기 위해 따로 기록해 둡니다.(팔로)
 
여기에서 뭔가 눈치채셨나요? 네. “팔로우”라는 과정을 진행하면서 트잉여 아파트, 플래닛 아파트, 큐돈 아파트가 모두 각각 기록을 따로 남겼습니다. 뭔가 불필요해 보이는데 말이죠. 하지만 이 과정중 하나라도 빠지면 이상한 상태가 됩니다.
 
이번에는 와르르 맨션이라는, 이상한 아파트를 예로 들어 보겠습니다. 이 아파트의 관리인은 건망증이 심해서 처리해야 하는걸 자꾸 빼먹어 버립니다. 공개 편지를 보낼 대상을 기록하는걸 빼먹은 경우를 예로 보겠습니다.
와르르 맨션의 401호가 트잉여 아파트 201호의 공개 편지를 받기 위해 편지를 쓰고, 승인을 받습니다.(아까 설명했으니 자세히 또 적진 않을게요!) 근데… 하필 와르르 맨션 관리자가 빼먹고 공개 편지를 받아볼 대상(팔로)에 트잉여 아파트 201호를 추가하지 않았습니다. 이렇게 되면 나중에 트잉여 아파트 201호에서 공개 편지를 보내도 모르는 사람이 보내는 편지가 되서, 편지를 읽지 않고 버리게 됩니다. 불쌍한 401호는 트잉여 아파트 201호의 편지를 받아보고 싶었는데 못 받아보게 되고요.
반대의 경우도 문제가 됩니다. 이번엔 플래닛 아파트 301호가 와르르 맨션 502호의 공개 편지를 받아보기 위해 요청을 보냈고 승인을 받았습니다. 아뿔싸! 이번에도 와르르 맨션 관리자가 실수해서 502호가 공개 편지를 보낼 대상(팔로) 목록에 301호를 추가하지 않았습니다. 이렇게 되면 플래닛 아파트 301호는 와르르 맨션 502호의 공개 편지를 받아보겠다고 했지만 아무것도 못 받아보게 됩니다.
 
이를 보고 “정합성이 훼손되었다”고 표현합니다. 두 아파트 모두가 같은 상태여야 하는데 달라져 버리는거죠. 와르르 맨션의 관리자가 실수를 눈치채고 바로잡지 않는다면 두 아파트간 교류는 일어나지 못할 겁니다.
이러한 일이 일어나는 이유는 주로 다음과 같습니다.
  • 마스토돈 베타 버전에서, 개발자의 실수로 인해
  • 마스토돈 코드를 임의 수정하며, 실수를 해서
첫번째의 경우 보통 해결방법도 같이 제시해줍니다. 마스토돈 개발사에서 운영하는 인스턴스는 개발 중인 버전을 선적용하기 때문입니다. 하지만 두번째 경우, 즉 코드 임의 수정의 경우 임의 수정을 한 본인이 책임져야 합니다. 관리인의 실수가 다른 사람이 잘못 시킨것라면 시킨 사람에게 책임을 물을수 있지만 관리인 본인의 실수라면 스스로 책임을 져야 하는것입니다.
 
이 글을 통해 당부드리고 싶은 것은, 만약 본인이 위 사례와 같은 일이 생겼을때 바로잡을 수 있는 지식이 없다면 함부로 코드를 수정하거나, 베타버전을 적용해서는 안된다는 것입니다. 정합성이 훼손되면 해당 서버의 유저 뿐만 아니라 다른서버의 사용자까지 피해를 줄수 있으니까요.

© 유메카 2021 - 2024