Supabase RLS와 anon 키: RLS Disabled in Public, 백엔드 개발자를 위한 보안 가이드

Supabase는 편리한 기능과 자동화된 API 덕분에 많은 개발자에게 사랑받고 있지만, 간혹 대시보드에 나타나는 “RLS Disabled” 경고는 백엔드 개발자들을 혼란에 빠뜨리곤 합니다. “나는 백엔드에서만 안전하게 통신하는데, 이게 왜 문제지?“라고 생각했다면 이 글이 명쾌한 해답을 드릴 것입니다. 이 글에서는 RLS와 anon 키의 관계를 명확히 이해하고, 백엔드 중심 프로젝트에서 RLS를 어떻게 활용해야 하는지에 대한 모범 사례를 제시합니다. 1. 문제 상황: “RLS Disabled in Public” 경고의 의미 Supabase 대시보드에서 public.users 또는 public.notes와 같은 테이블에 대해 RLS Disabled 경고를 마주하는 것은 생각보다 흔한 일입니다. 이 경고의 진짜 의미는 무엇일까요? ...

December 23, 2025 · Byung Kyu KIM

Python Web 프레임워크 (Flask, FastAPI) Vercel로 배포하기

Python 기반의 웹 프레임워크인 Flask나 FastAPI를 개발한 후, 이를 실제 서비스로 배포하는 방법은 여러 가지가 있습니다. (AWS EC2, Docker, Heroku 등) 그 중에서도 Vercel은 복잡한 서버 관리 없이 가장 간편하고 빠르게 배포할 수 있는 플랫폼 중 하나입니다. 이번 글에서는 Vercel을 사용하여 Python 웹 애플리케이션을 배포하는 전반적인 과정과 주요 개념들을 정리해 보겠습니다. 1. Vercel 서비스 개요 및 기능 Vercel은 개발자가 만든 웹 애플리케이션을 쉽고 빠르게 배포할 수 있도록 돕는 클라우드 플랫폼입니다. 초기에는 Next.js와 같은 프론트엔드 프레임워크 배포에 최적화된 서비스로 시작했으나, 현재는 Serverless Functions 기능을 통해 Python, Node.js, Go 등의 백엔드 언어도 지원합니다. ...

December 21, 2025 · Byung Kyu KIM

네트워크 패킷의 이동

네트워크 상에서 데이터(패킷)가 출발지에서 목적지까지 어떻게 이동하는지, 그 과정을 단계별로 정리해 보았습니다. 우리가 인터넷을 통해 데이터를 보낼 때, 눈에 보이지 않는 수많은 장비들이 어떤 역할을 수행하는지 알아보겠습니다. 전체 흐름도 (Network Flow Diagram) 먼저 전체적인 흐름을 인포그래픽으로 살펴보겠습니다. 단계별 이동 과정 패킷이 목적지 IP로 이동하는 과정은 크게 4단계로 나눌 수 있습니다. (1) 로컬 네트워크 확인 및 이동 (Routing Table & MAC) 컴퓨터나 네트워크 스위치는 패킷을 보낼 때 먼저 자신의 **라우팅 테이블(Routing Table)**을 확인합니다. ...

December 13, 2025 · Byung Kyu KIM

Github에서 사용되는 주요 라이선스 종류 및 허용, 제약 사항

오픈 소스 프로젝트를 시작하거나 기여할 때 가장 먼저 고려해야 할 것 중 하나는 **라이선스(License)**입니다. Github에는 수많은 프로젝트가 존재하며, 각 프로젝트는 코드 사용에 대한 권리와 의무를 규정하는 라이선스를 가지고 있습니다. 라이선스를 제대로 이해하지 못하고 코드를 사용하면 법적 분쟁에 휘말릴 수 있습니다. 이 글에서는 Github에서 가장 널리 사용되는 주요 오픈 소스 라이선스들의 특징과 허용 범위, 제약 사항을 정리해 봅니다. 1. MIT 라이선스 (MIT License) MIT 라이선스는 가장 단순하고 제한이 적은 라이선스 중 하나로, Github에서 가장 많이 사용되는 라이선스입니다. ...

December 11, 2025 · Byung Kyu KIM

웹 개발 필수 개념: SOP, CORS, CORP의 관계 정리

현대 웹 환경에서는 Cross-Origin 리소스 접근을 관리하기 위한 복잡한 보안 메커니즘이 존재합니다. 그 중심에는 SOP, CORS, CORP 세 가지 정책이 있습니다. 특히 CDN(Content Delivery Network)을 사용하는 경우, 이 정책들을 정확히 이해하지 못하면 예측하지 못한 로드 오류(CORS/CORP 에러)에 직면하게 됩니다. 1. 웹 보안의 근간: 출처(Origin)와 SOP 웹 보안의 모든 논의는 **출처(Origin)**의 개념에서 시작됩니다. 1-1. 출처(Origin)의 정의 두 URL이 동일한 출처가 되기 위해서는 다음 세 가지 요소가 모두 일치해야 합니다. 프로토콜 (Scheme): http 또는 https 호스트 (Host): 도메인 이름 (예: example.com) 포트 (Port): 포트 번호 (생략 시 기본값 80 또는 443) 1-2. 동일 출처 정책 (SOP: Same-Origin Policy) SOP는 웹 브라우저의 가장 기본적인 보안 정책입니다. ...

December 8, 2025 · Byung Kyu KIM

락프리(Lock-Free) 알고리즘 이해하기

멀티스레드 프로그래밍 환경에서 동시성 제어는 성능과 직결되는 매우 중요한 문제입니다. 이번 글에서는 전통적인 락 기반 동시성 제어의 한계를 극복하기 위해 등장한 락프리(Lock-Free) 알고리즘에 대해 알아보고, 그 개념과 구현 방법, 그리고 장단점을 살펴보겠습니다. 락프리 알고리즘이란? **락프리(Lock-Free)**는 이름 그대로 “자물쇠(Lock) 없이” 여러 스레드가 동시에 데이터를 처리하는 기술입니다. 쉽게 비유하자면 회전문과 같습니다. 락(Lock): 한 번에 한 명만 들어갈 수 있는 화장실입니다. 누군가 안에 있으면 밖에서 열쇠를 받을 때까지 마냥 기다려야 합니다. 락프리(Lock-Free): 여러 사람이 동시에 지나갈 수 있는 회전문입니다. 가끔 문이 꽉 차서 한 바퀴 더 돌아야 할 수도 있지만, 멈추지 않고 계속 움직일 수 있습니다. 락프리는 시스템 전체가 멈추는 일(Deadlock) 없이, 누군가는 반드시 작업을 완료한다는 것을 보장합니다. ...

December 7, 2025 · Byung Kyu KIM

rustfs 101

rustfs 소개 rustfs는 Rust로 구축된 고성능 S3 호환 분산 객체 스토리지 시스템입니다. 성능, 메모리 안전성 및 보다 관대한 라이선스에 중점을 두어 MinIO와 같은 다른 객체 스토리지 솔루션에 대한 현대적인 대안으로 자리매김하고 있습니다. 웹사이트: https://rustfs.com/{:target="_blank"} 핵심 기술: Rust로 구축되어 메모리 안전성과 고성능 보장. 라이선스: MinIO의 AGPLv3에 비해 비즈니스 친화적인 Apache 2.0. 호환성: 100% S3 호환. rustfs 시작하기 rustfs는 Docker를 사용하여 빠르고 쉽게 시작할 수 있습니다. Docker로 설치 Docker 이미지 다운로드 docker pull rustfs/rustfs Docker 컨테이너 실행 ...

December 4, 2025 · Byung Kyu KIM

VPN 구현체의 종류 및 특징 비교: OpenVPN vs Wireguard

가상 사설망(VPN)은 인터넷과 같은 공용 네트워크를 통해 사설 네트워크를 안전하게 확장하는 기술입니다. VPN은 데이터를 암호화하여 터널링함으로써 사용자의 개인 정보와 데이터를 보호하고, 지역 제한 콘텐츠에 접근하거나 원격지에서 사내망에 접속하는 등 다양한 용도로 활용됩니다. VPN을 구현하는 방법에는 여러 가지가 있으며, 각각의 프로토콜과 소프트웨어는 고유한 특징과 장단점을 가지고 있습니다. 이번 포스트에서는 대표적인 VPN 구현체인 OpenVPN과 최신 기술로 주목받는 WireGuard를 중심으로 VPN 구현체의 종류와 특징을 비교 분석해 보겠습니다. 주요 VPN 프로토콜의 종류와 특징 VPN의 핵심은 터널링과 암호화 프로토콜이며, 이는 VPN의 속도, 보안, 안정성을 결정하는 가장 중요한 요소입니다. 다양한 VPN 프로토콜이 있으며, 각각은 고유한 장단점을 가집니다. ...

December 3, 2025 · Byung Kyu KIM

GNU Parallel: xargs를 넘어선 강력한 병렬 처리

리눅스 환경에서 대량의 데이터나 파일을 처리하다 보면, 단일 코어만 사용하는 쉘 스크립트의 성능 한계에 부딪히게 됩니다. xargs를 통해 어느 정도 병렬 처리가 가능하지만, 더 복잡하고 강력한 기능을 제공하는 도구가 바로 GNU Parallel입니다. 🚀 parallel 개요 GNU Parallel은 로컬 또는 원격 컴퓨터에서 작업을 병렬로 실행하기 위한 쉘 도구입니다. 덴마크의 Ole Tange가 Perl로 개발했으며, 표준 입력(stdin)이나 파일로부터 인자를 받아 명령어를 병렬로 실행합니다. 가장 큰 특징은 xargs나 find -exec와 같은 기존 도구들의 사용성을 유지하면서도, 출력 제어, 작업 슬롯 관리, 원격 실행 등 고급 기능을 제공한다는 점입니다. ...

November 23, 2025 · Byung Kyu KIM

Linux vs Windows 쓰레딩 모델 비교

쓰레드는 운영체제가 프로세스 내에서 작업을 병렬로 실행하기 위해 사용하는 기본 실행 단위입니다. 리눅스와 윈도우는 이 쓰레드를 관리하고 스케줄링하는 방식에서 서로 다른 모델을 채택하고 있으며, 이러한 차이는 시스템 성능과 프로그래밍 방식에 영향을 미칩니다. 🐧 리눅스 쓰레딩 모델: N:1 및 1:1 혼합 (NPTL) 리눅스는 역사적으로 다양한 쓰레딩 모델을 거쳐왔으나, 현재는 **NPTL(Native POSIX Thread Library)**이라는 1:1 모델과 N:1 모델의 장점을 결합한 형태가 주류입니다. 1. 핵심 개념: 경량 프로세스 (LWP, LightWeight Process) 리눅스 커널의 관점: 리눅스 커널은 프로세스와 쓰레드를 구분하지 않고, 모두 태스크(Task) 또는 **경량 프로세스(LWP)**로 취급하고 스케줄링합니다. 쓰레드의 생성: POSIX 쓰레드(pthreads) 라이브러리를 통해 쓰레드를 생성하면, 커널에 새로운 LWP가 생성됩니다. 이 LWP들은 부모 프로세스의 주소 공간, 파일 디스크립터 등을 공유하며, 각자의 실행 문맥(Context)을 가집니다. 2. 모델 유형: 1:1 모델 특징: 사용자 공간의 **각 쓰레드(N)**가 커널 공간의 각각의 스케줄링 가능한 엔티티(1), 즉 LWP에 직접적으로 대응됩니다. 장점: 진정한 병렬성: 멀티 코어 환경에서 여러 쓰레드가 동시에 병렬로 실행될 수 있습니다. 커널 지원: 특정 쓰레드가 I/O 작업 등으로 블록(Block) 상태가 되더라도, 커널은 해당 프로세스의 다른 쓰레드들을 계속 스케줄링할 수 있습니다. 단점: 쓰레드 생성 및 컨텍스트 전환 시 커널 오버헤드가 발생합니다. 요약: 리눅스는 POSIX 표준을 따르며, 사용자 레벨의 쓰레드가 커널 레벨의 프로세스와 유사한 경량 프로세스로 매핑되는 1:1 모델에 가깝습니다. ...

November 22, 2025 · Byung Kyu KIM