싱글 테넌시
Single-tenancy
도구
고객사마다 서버와 데이터베이스를 따로 띄워 주는 배포 구조로, 데이터를 남과 섞지 말라는 조건을 건 고객을 받을 때 씁니다.
등장 배경
설치 없이 구독해 쓰는 형태의 소프트웨어, 곧 SaaS 가 값을 낮춘 방식은 한 벌을 여러 고객이 나눠 쓰게 만든 것이었습니다. 서버 한 벌에 고객사 300곳을 태우면 고객이 열 배 늘어도 비용은 열 배가 되지 않습니다.
그런데 이 방식으로는 받을 수 없는 고객이 있었습니다. 은행, 보험사, 공공기관의 보안 검토 문서에는 우리 데이터가 다른 회사 데이터와 같은 저장소에 있으면 안 된다는 항목이 들어 있습니다. 계약 직전까지 다 맞춰 놓고도 그 한 줄에 걸려 도장이 찍히지 않습니다.
영업이 논리적으로는 완전히 갈라져 있다고 설명해도 통하지 않는 자리입니다. 심사를 하는 쪽은 소프트웨어가 얼마나 잘 만들어졌는지를 보는 게 아니라 규정에 적힌 조건이 충족됐는지를 봅니다. 계약 한 건이 연 3억 원인데 그 한 줄 때문에 못 받는 상황이 반복되면서, 원하는 고객에게만 환경을 따로 떼어 주는 방식이 별도 요금제로 자리 잡았습니다.
해결하는 문제
싱글 테넌시가 해결하는 것은 데이터를 남과 같은 저장소에 두면 안 된다는 조건 때문에 계약이 막히는 문제입니다. 고객사마다 환경을 한 벌씩 따로 띄우면 그 조건이 그대로 충족됩니다. 이 구조가 실제로 풀어 주는 것은 넷입니다.
- 저장소 분리 — 고객사마다 데이터베이스가 아예 다른 통입니다. 한 데이터베이스 안에서 줄마다 붙은 고객사 번호로만 가르는 방식과 달라서, 질의를 잘못 써서 다른 고객사 데이터가 섞여 나올 여지가 구조적으로 없습니다. 보안 심사에서 요구하는 것이 대개 이 지점입니다.
- 장애와 부하 격리 — 한 고객사가 문서 8만 건을 한꺼번에 내보내도 다른 고객사 화면이 느려지지 않습니다. 300곳이 한 서버를 쓰는 구조에서는 한 곳의 무거운 작업이 나머지 299곳의 응답 속도에 그대로 나타납니다.
- 배포 시점 통제 — 업데이트를 고객사 일정에 맞출 수 있습니다. 분기 결산 기간에는 어떤 변경도 올리지 말라는 조건이 계약서에 들어가는 일이 흔한데, 환경이 따로 있으면 그 고객사만 멈춰 둘 수 있습니다.
- 보관 지역 지정 — 데이터를 특정 국가 안에 둬야 하는 요구가 있을 때 그 고객사 환경만 해당 지역에 올립니다.
대가는 운영량입니다. 고객사 100곳이면 환경 100벌을 돌려야 하고, 기능 하나를 올릴 때도 100번 올려야 합니다. 서버를 빌려 쓰는 IaaS 요금도 환경 수만큼 붙습니다. 그래서 값을 몇 배로 매긴 별도 요금제에 얹고, 받을 고객 수를 미리 정해 둡니다.
대안
같은 요구에 답하는 방법이 여럿이라 조건의 강도에 맞춰 고릅니다. 넷을 놓고 견줍니다.
- 멀티테넌시 — 고객사 여럿이 한 벌의 시스템을 나눠 쓰는 기본 구조입니다. 값이 가장 싸고 배포가 한 번이면 끝납니다. 분리 요구를 문자 그대로는 못 맞추지만, 암호화 키를 고객사마다 따로 두고 접근 기록을 남기는 것으로 심사를 통과하는 경우가 실제로 많습니다. 조건이 규정 문서에 못 박혀 있는지 담당자의 우려 수준인지를 먼저 확인합니다.
- 데이터베이스만 분리 — 서버는 함께 쓰고 데이터베이스만 고객사별로 따로 두는 중간 방식입니다. 저장소가 갈라졌다는 조건은 충족하면서 운영량은 환경 전체를 복제하는 쪽보다 적습니다. 다만 부하 격리는 되지 않습니다.
- 온프레미스 — 고객사 자기 서버에 설치해 쓰는 방식으로 분리의 최대치입니다. 외부 인터넷과 끊어 놓은 망에서만 일하는 조직은 이것만 가능합니다. 대신 버전이 고객사 손에 넘어가 원격으로 고칠 수 없고, 한 고객사가 2년 전 버전을 쓰고 있는 상태가 생깁니다.
- 지역별 환경 — 고객사 단위가 아니라 국가 단위로 한 벌씩 띄웁니다. 같은 나라의 요구를 가진 고객이 여럿이면 환경 수를 크게 줄일 수 있습니다.
고객사 브랜드를 달아 내보내는 화이트라벨은 이 줄에 놓이지 않습니다. 화면에 누구 이름이 보이는지를 정하는 선택이라 환경을 갈라 두는지와는 다른 축입니다.
실무 용례
"이 고객사는 싱글 테넌시 아니면 계약이 안 됩니다. 보안 검토 항목에 박혀 있어요."
논리적 분리로는 넘어갈 수 없는 조건이라는 뜻입니다.
"지금 환경이 여섯 벌인데 배포가 반나절씩 걸려요. 자동화 먼저 해야 합니다."
환경 수가 늘어 운영 손이 한계에 닿았다는 신고입니다.
"그 요구가 규정에 적힌 건지 그냥 걱정인지부터 확인해 주세요."
멀티테넌시로도 통과할 수 있는 건이라면 환경을 따로 띄울 이유가 없다는 판단입니다.
페이지덱은 대부분의 고객에게 한 벌을 나눠 쓰는 구조로 팔고, 대기업 여섯 곳에만 환경을 따로 열어 줍니다. 수아가 계약 단계에서 보안 검토 문서를 먼저 받아 오고 태오가 그 항목이 어느 방식으로 충족되는지 표로 답합니다. 규원은 이 요금제로 받을 고객 수에 상한을 뒀습니다. 여섯 벌을 넘어가면 태오 혼자 배포를 감당할 수 없기 때문입니다.
흔한 오해
환경을 갈라 두면 더 안전하다고 읽는 경우가 가장 많습니다. 남과 섞이지 않는다는 말이 곧 안전하다는 말처럼 들립니다. 하지만 갈라 두는 일이 없애 주는 것은 다른 고객사 데이터가 섞여 나올 여지이고, 소프트웨어 자체의 취약점은 그대로 100벌에 복제됩니다. 오히려 나빠지는 대목도 있습니다. 보안 패치를 100번 올려야 하고, 한 벌을 빠뜨리면 그 고객사가 가장 오래 취약한 상태로 남습니다. 환경이 여섯 벌일 때 두 벌이 지난 분기 버전에 머물러 있는 일이 실제로 벌어집니다.
값을 몇 배로 받으니 남는 장사라고 읽는 것도 흔합니다. 단가가 오르는 것만 보면 그렇게 계산됩니다. 그런데 이 구조에서 늘어나는 것은 서버 요금만이 아니라 사람 손입니다. 고객사가 열 곳이면 배포, 점검, 장애 대응이 열 갈래로 갈라지고 그 일은 자동화 없이는 사람 수로 메워야 합니다. 값을 세 배로 받고 운영 손이 열 배로 늘면 계약이 늘어날수록 적자가 커집니다. 그래서 이 요금제를 여는 회사는 받을 고객 수에 상한을 두거나 배포 자동화를 먼저 갖춥니다.
자주 헷갈리는 용어
| 용어 | 무엇인지 | 싱글 테넌시와의 차이 |
|---|---|---|
| 멀티테넌시 | 여러 고객사가 한 시스템을 나눠 쓰는 구조 | 데이터를 한 저장소 안에서 고객사 번호로 갈라 두고 서버 한 벌을 함께 씁니다. 값이 싸고 배포가 한 번이지만 저장소를 물리적으로 갈라 달라는 조건은 맞추지 못합니다 |
같이 보면 좋은 페이지
마지막 업데이트 2026-09-26