도움말 / 여럿이 함께 쓰기

한 번호를 여러 명이 함께 쓸 때

가게·사무실 번호 하나를 여러 사람이 맡으면 왜 같은 답장이 두 번 나가는지, 그리고 그것을 줄이는 방법.

가게 번호, 사무실 대표 번호, 예약 전용 번호 — 받는 사람은 여럿인데 번호는 하나인 경우가 많습니다. 전화는 돌려받으면 그만이지만 문자는 다릅니다. 같은 문의에 두 사람이 각자 답장을 보내고, 손님은 같은 말을 두 번 받습니다. 반대로 서로 "저쪽이 했겠지" 하고 아무도 답하지 않는 일도 생깁니다. 답장이 두 번 나가면 성의 없어 보이고, 광고성 문자였다면 수신자 입장에서는 같은 광고를 두 통 받은 셈이 됩니다.

이 글은 그 문제가 어디에서 오는 구조적 제약인지, 흔히 쓰는 회피책이 각각 어디서 막히는지, 그리고 웹 문자함이 자리(seat)와 접속 표시라는 장치로 그것을 어떻게 줄이는지를 정리한 것입니다. 마지막에 TwoPhone의 등급별 숫자를 함께 적었습니다.

문자에는 「여러 사용자」라는 개념이 없습니다

이메일은 처음부터 여러 사람이 한 주소를 함께 쓰는 것을 전제로 만들어졌습니다. 계정이 서버에 있고, 여러 기기가 같은 사서함에 접속하며, 읽음 표시가 서버에 공유됩니다. 그래서 "공유 사서함(shared inbox)"이라는 제품 범주가 따로 생겼습니다.

문자는 반대입니다. 문자는 회선(SIM)에 배달되고 단말에 저장됩니다. 사서함은 서버가 아니라 휴대폰 안에 있고, 그 휴대폰은 한 대뿐이며, 읽음 표시도 그 한 대에만 있습니다. 표준 어디에도 "이 번호의 담당자 세 명" 같은 개념이 없습니다. 문자를 여럿이 나눠 받으려면 휴대폰 바깥에 그 개념을 따로 만들어야 합니다.

그래서 흔히 쓰는 방법이 셋인데, 셋 다 어딘가에서 막힙니다.

방법되는 것막히는 것
휴대폰을 돌려 쓴다 기기 하나에 기록이 모여 있어 누가 뭘 보냈는지 섞이지 않습니다. 동시에 두 사람이 못 씁니다. 기기를 가진 사람이 자리를 비우면 그동안 아무도 답하지 못합니다.
한 사람이 전담한다 중복 답장이 구조적으로 안 생깁니다. 가장 확실한 방법입니다. 그 한 사람이 쉬거나 그만두면 응대가 멈춥니다. 문의가 늘어도 나눠 받을 수 없습니다.
화면·계정을 공유한다 여러 사람이 같은 대화를 볼 수 있습니다. 서로 지금 무엇을 하고 있는지 보이지 않습니다. 중복 답장은 바로 여기서 납니다. 로그인을 한 곳만 허용하는 서비스라면 뒤에 들어온 사람이 앞사람을 밀어내기도 합니다.

「한 번에 한 곳만」은 왜 기본값이었나

휴대폰의 문자를 PC 브라우저에서 보게 해 주는 서비스는 대개 로그인을 한 곳으로 제한합니다. TwoPhone도 그랬습니다. 새 로그인이 들어오면 그 계정의 기존 세션을 전부 무효로 만들고 붙어 있던 브라우저를 끊었습니다.

그 설계에는 이유가 있습니다. 비밀번호가 샜을 때 남이 조용히 붙어 있는 상태가 오래 가지 않게 하는 가장 단순한 방법이고, 설명할 것도 없습니다("접속은 한 곳만"). 개인용 서비스라면 이것으로 충분합니다.

문제는 팀입니다. 두 번째 사람이 로그인하는 순간 첫 번째 사람의 화면이 끊기는 서버에서는 나눠 받기 자체가 불가능합니다. 같이 쓰라고 만든 기능이 로그인 단계에서 막히는 셈입니다.

자리(seat)로 일반화하면 달라지는 것

해법은 "한 곳"을 숫자로 바꾸는 것입니다. 자리가 N개이고, 한 번에 N명까지 붙을 수 있다고 보면 종전 동작은 N=1인 특수한 경우가 됩니다. 중요한 것은 무엇을 한 자리로 세는가입니다.

자리가 다 찼을 때 — 거절할 것인가, 회수할 것인가

선택지는 둘입니다. ① 새 로그인을 거절한다 ② 가장 오래된 자리를 회수한다. TwoPhone은 ②를 택했습니다. 이유는 세 가지입니다.

  1. ①은 1자리 등급을 망가뜨립니다. 자리가 하나일 때 "같은 사람이 기기를 옮긴다"는 것은 정상적인 사용 흐름입니다. 거절해 버리면 노트북에 세션을 남긴 채 밖에 나온 사람은 노트북을 다시 열기 전까지 로그인할 방법이 없습니다.
  2. 유령 탭이 실제 사람을 잠급니다. 자리를 쥐고 있는 것이 사람이 아니라 닫지 않은 탭인 경우가 대부분인데, 거절 방식은 그 탭 하나가 팀원을 영구히 막게 둡니다.
  3. 회복 가능성이 비대칭입니다. 거절당한 사람은 스스로 할 수 있는 일이 없습니다(남의 세션을 끊어야 하는데 그럴 화면이 없습니다). 반대로 밀려난 사람은 다시 로그인하면 됩니다.

대신 밀려나는 쪽이 이유를 알아야 합니다. 그냥 끊기면 장애로 보입니다. 그래서 끊을 때 사유를 함께 보냅니다 — 본인이 다른 곳에서 다시 로그인한 것인지, 자리가 꽉 차서 가장 먼저 로그인한 자리가 회수된 것인지를 구분해서 알려 줍니다.

중복 답장은 자리를 늘리면 오히려 늘어납니다

여럿이 동시에 붙을 수 있게 되면 새 사고가 따라옵니다. A와 B가 같은 문의를 동시에 보고, 둘 다 답장을 씁니다. 손님은 같은 안내를 두 번 받습니다. 그래서 동시 접속과 접속 표시는 같이 들어가야 하는 기능입니다. 하나만 넣으면 문제를 만들고 끝납니다.

필요한 정보는 생각보다 적습니다. 내용도, 이름도 필요 없습니다. 「누가 어느 대화방에 있는가」 하나면 됩니다. TwoPhone에서는 두 가지로 보여 줍니다.

무엇이 보이고 무엇은 보이지 않나

항목어떻게 되나왜 그렇게 했나
문자 내용 중개 서버가 읽지 못합니다 내용은 브라우저와 휴대폰 양 끝에서만 암·복호화되는 종단간 암호화 구간입니다. 접속 표시에는 내용이 필요 없으므로 터널을 열 이유가 없습니다.
대화방 같다·다르다만 비교합니다 브라우저가 보내는 것은 전화번호가 아니라 그 자체로는 뜻이 없는 불투명한 값입니다. 서버는 두 사람이 같은 방에 있는지만 보고, 기록으로 남기지 않습니다.
표시 이름 「Chrome · Windows」 수준 계정이 팀 공용이라 로그인 정보로는 사람을 가를 수 없습니다. 그렇다고 이름을 새로 받으면 없던 개인정보를 만드는 것이라, 브라우저가 어차피 보내는 값에서 거칠게 뽑아 씁니다.
다른 계정 서로 보이지 않습니다 명부는 계정 단위로 완전히 분리됩니다. 다른 계정의 접속 여부를 알 수 있으면 그 자체가 정보 유출입니다.
구버전 웹 명부에 오르지 않습니다 브라우저가 먼저 참여를 알려야 명부에 오르는 방식입니다. 이 기능을 모르는 예전 화면은 종전과 똑같이 동작합니다.
접속 표시는 잠금이 아닙니다. 다른 사람이 쓰고 있다고 해서 내 발송이 막히지는 않습니다. 둘이 동시에 보내면 둘 다 나갑니다. 이것은 사람이 보고 피하라고 두는 신호이지 배타적 점유 장치가 아닙니다. 애초에 문자는 「보류했다가 취소」가 안 되는 매체라, 잠금을 걸었다가 잘못 풀리면 급한 답장이 막히는 쪽의 손해가 더 큽니다. 「입력 중」은 몇 초 안에 갱신이 없으면 서버가 스스로 끕니다. 사실과 어긋난 채 켜져 있는 표시는 기능이 없는 것보다 나쁩니다 — 사람이 그걸 보고 답장을 미룹니다.

표시만으로 부족할 때

표시는 사고를 줄이지만 없애지는 못합니다. 두 사람이 같은 순간에 보내기를 누르면 방법이 없습니다. 실제 운영에서는 아래 같은 규칙을 함께 두는 쪽이 훨씬 효과가 큽니다.

TwoPhone 등급별 계정 한도

여기서부터는 통신사 규정이 아니라 TwoPhone이 스스로 두는 제품 정책입니다. 통신사 약관에는 접속 자리나 조회 횟수에 관한 조항이 없습니다. 아래 값은 전부 계정 단위이고, 회선 수와 무관합니다.

등급동시 접속 자리연락처 1회 등록조회 한도
(계정당 분당)
웹훅
동시 / 대기
무료1자리기능 없음60회기능 없음
Plus1자리500개60회4 / 64
Pro3자리2,000개180회8 / 128
Business10자리5,000개600회16 / 256
발송량은 전혀 다른 축입니다. 위 표에는 "하루 몇 건"이 없습니다. 발송 한도는 회선 단위로 세고 통신사 약관의 상한과 맞물려 있어서, 저희가 임의로 정할 수 있는 값이 아니기 때문입니다. 두 축은 성격이 다르니 섞어 읽지 않는 편이 좋습니다. 발송 쪽은 문자는 하루 몇 건까지 보낼 수 있나에 약관 조항 근거와 함께 정리해 두었습니다. 등급별 금액과 전체 비교는 홈의 구독 등급에 있습니다. 결제·해지와 최신 금액은 Google Play의 구독 관리 화면이 기준입니다.

요약