CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·MaClien ·주식한당 ·일본산당 ·방탄소년당 ·개발한당 ·자전거당 ·이륜차당 ·야구당 ·안드로메당 ·소시당 ·소셜게임한당 ·골프당 ·나스당 ·창업한당 ·AI당 ·가상화폐당 ·육아당 ·클다방 ·물고기당 ·IoT당 ·심는당 ·사과시계당 ·패스오브엑자일당 ·영화본당 ·스타한당 ·여행을떠난당 ·스팀한당 ·찰칵찍당 ·맛있겠당 ·바다건너당 ·콘솔한당 ·라즈베리파이당 ·키보드당 ·냐옹이당 ·디아블로당 ·갖고다닌당 ·3D메이킹 ·달린당 ·리눅서당 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·포뮬러당 ·젬워한당 ·걸그룹당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·품앱이당 ·리듬탄당 ·노젓는당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

PC/모바일 민감정보 때문에 클라우드를 버리고 로컬 설치형으로 갈아엎은 기록 (1) 2

2
2026-08-30 19:45:17 1.♡.143.114
박건희

다섯 주쯤 혼자 만든 업무 시스템 이야기입니다. 자랑할 결과물이 있어서가 아니라, 설계를 한 번 크게 뒤집으면서 배운 게 있어서 적어둡니다.


들어가며


장애인 자립생활센터 쪽 일을 합니다. 결재는 종이, 근태는 엑셀, 급여는 또 다른 엑셀, 이용자 관리는 담당자 머릿속에 있는 곳이 흔합니다. 시중 그룹웨어는 이 판의 서류 양식이나 보조금 정산 흐름을 모르고요. 그래서 직접 만들기 시작했습니다.


1. 처음엔 정석대로 짰습니다


Next.js + NestJS 모노레포, PostgreSQL 16, Row-Level Security로 기관별 데이터 격리, Azure 배포, 로그인은 Entra ID. 멀티테넌트 SaaS 교과서 그대로입니다.


RLS 격리 실증 테스트도 짰습니다. 세션 변수가 없으면 아무 행도 안 보인다는 걸 확인하고 커밋 찍었을 때는 꽤 뿌듯했습니다.


2. 한 달이 되기 전에 그걸 다 지웠습니다


이유는 한 줄입니다. 장애 유형과 등급은 개인정보보호법상 민감정보(건강에 관한 정보)에 해당할 가능성이 높습니다.


그러니까 제 서버에 남의 기관 이용자 수백 명의 장애 등급이 평문으로 쌓입니다. 기술적으로는 RLS로 막아뒀으니 괜찮다고 스스로 설득할 수 있었습니다. 다만 법적으로는 제가 수탁자가 되고, 사고가 나면 책임의 한 축이 될 가능성이 크다고 봤습니다.


보통은 일단 출시하고 나중에 고치라는 게 맞는 조언인데, 이건 나중에 못 고치는 종류입니다. 그때는 데이터가 이미 제 서버에 있으니까요.


그래서 정본 데이터를 각 기관 PC에 두는 로컬 설치형으로 갈아엎었습니다. Electron 셸 안에 기존 서버를 그대로 얹었습니다. PostgreSQL은 SQLite로 내렸고 RLS는 지웠습니다. 클라우드 백업은 종단간 암호화를 건 유료 옵션으로 빼서, 저는 암호문만 보관합니다. 기관 한 곳이 설치 하나니까 논리적 격리를 물리적 격리가 대신합니다.


정확히는 중간에 한 번 더 흔들렸습니다. 8월 중순에 그래도 서버 한 대를 우리가 운영하는 게 맞다고 결론 냈다가, 사흘 뒤에 그 결론을 다시 뒤집었습니다.


Next.js와 NestJS가 들어 있던 디렉토리는 통째로 지웠습니다. 두 벌을 유지하는 순간 둘 다 썩습니다.


3. 남은 것


데이터를 어디에 둘지는 기능이 아니라 구조입니다. 나중에 바꾸려면 이미 남의 개인정보를 손에 쥔 상태에서 바꿔야 하니까, 사실상 못 바꿉니다.


되돌아보면 제일 비쌌던 건 지운 코드가 아니라 이 결정을 한 달 가까이 미룬 시간이었습니다. 민감정보라는 건 첫날에도 알고 있었는데, 교과서적인 SaaS 구조가 너무 당연해 보여서 의심을 안 했습니다.


RLS를 걷어낸 대가는 그다음에 따로 치렀습니다. 그건 나중에 적겠습니다.

박건희 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [2]
너의닉네임은
IP 121.♡.126.15
08-30 2026-08-30 21:39:07
·
말씀하신대로 민감정보에 해당하기에 많이 아쉬우시겠지만 잘하신선택같습니다..
박건희
IP 1.♡.143.114
10:12 2026-08-31 10:12:20
·
@너의닉네임은님 감사합니다. 지울 때는 속이 좀 쓰렸는데, 지금 보면 그때 안 지웠으면 영영 못 지웠을 것 같습니다. 데이터가 쌓이고 나면 되돌릴 방법이 없더라고요.
삭제 되었습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.