Tip
-
AI 크롤러 차단해서 요금 폭탄 방지하기Tip 2025. 5. 25. 19:48
최근 사내에서 Vercel의 요금이 평소보다 많이 나오는 문제가 발생해 알아보니 meta-externalagent이 범인이었습니다.meta-externalagent는 Meta의 AI 크롤러로 무분별한 크롤링으로 대용량의 트래픽을 발생시켜 요금 폭탄을 유발한 것이었습니다. 이 글에서는 Meta의 meta-externalagent 뿐만 아니라 OpenAI의 GPTBot, Anthropic의 ClaudeBot, Google의 Google-Extended 등 다양한 Bot들을 차단할 전략을 다루겠습니다. 우리의 경우 다행히 아웃바운딩 요금 폭탄만 발생했지만, Vercel 이미지 최적화를 사용하거나 할 경우 더 끔찍할 수도 있습니다!만약 차단을 안 해두셨다면 얼른 차단을 통해 서버 비용 폭증을 막기를 권장드립니..
-
PandaCSS vs Tailwind CSS vs Vanilla Extract 비교 분석Tip 2025. 5. 11. 19:45
RSC(React Server Component)의 출시와 Next.js의 App Router 전환 뒤 전통적인 CSS-in-JS 방식의 한계로 더욱 각광받고 있는 Tailwind CSS, Vanilla Extract, PandaCSS를 비교해 보겠습니다.1. CSS-in-JS의 한계와 새로운 접근법의 필요성과거에는 styled-components나 Emotion과 같은 CSS-in-JS 런타임 스타일 생성 방식은 런타임에 JS로 스타일을 생성·주입하는 과정은 성능 오버헤드로 이어지고, SSR(서버사이드 렌더링) 환경에서는 추가 설정이 필요하거나 FOUC 문제가 발생하는 등의 단점이 명확했지만, 편리함이라는 장점이 너무 컸기에 폭넓게 사용되었습니다. 하지만 Next.js 13의 App Router 도입 ..
-
Next.js와 Node.js 기반 실시간 대용량 편집기 Part4. 차세대 전송 및 AI 기술Tip 2025. 5. 10. 00:11
이전 3편 시리즈를 통해 아키텍처, 프로토콜, 구현 및 성능 최적화, 데이터 동기화·보안을 다뤘습니다.4편에서는 실시간 대용량 편집기를 구현할 때 주목할 만한 차세대 전송 기술, P2P 메커니즘, 그리고 AI 기반 충돌 예측 및 작성 보조 기능을 살펴봅니다. 1. WebTransport 프로토콜의 적용 가능성WebTransport는 비교적 새로운 웹 전송 기술로, HTTP/3 (QUIC) 위에서 동작하는 양방향 통신 프로토콜입니다.표면적으로 WebSocket과 유사하게 브라우저와 서버 간에 지속적인 세션을 맺고 데이터를 주고받을 수 있지만, 아래층이 HTTP/3이므로 UDP 기반 QUIC의 이점들을 활용할 수 있습니다.async function initWebTransport(url) { const tr..
-
Next.js와 Node.js 기반 실시간 대용량 편집기 Part3. 동기화 알고리즘 & 보안Tip 2025. 5. 6. 23:37
1편과 2편에서는 시스템 아키텍처 설계와 실제 구현 방법 및 성능 최적화를 다뤘습니다.3편에서는 협업 편집기의 핵심인 데이터 동기화 알고리즘을 분석하고, 보안 및 효율적인 운영 관리를 위한 전략을 살펴보겠습니다.1. 실시간 협업을 위한 동기화 알고리즘: CRDT vs OT실시간 협업 편집기의 백미는 여러 사용자의 동시 편집을 일관성 있게 병합하는 동기화 알고리즘입니다. 대표적인 기법으로 OT(Operational Transformation)와 CRDT(Conflict-Free Replicated Data Type)가 있으며, 역사적으로 OT는 Google Docs 등에서 활용되어 왔고, 최근에는 CRDT 기반의 Yjs, Automerge 등이 각광받고 있습니다.1.1 OT (Operational Tran..
-
Next.js와 Node.js 기반 실시간 대용량 편집기 Part2. 구현 및 성능 최적화Tip 2025. 5. 3. 00:14
1편에서는 대용량 데이터를 처리하는 협업 편집기의 시스템 아키텍처와 프로토콜 선택 기준을 심층적으로 다뤘습니다. 이번 2편에서는 실제 Next.js 프론트엔드와 Node.js 백엔드를 사용하여 이러한 시스템을 구현하는 방법과, 성능을 최적화하는 다양한 기법을 살펴보겠습니다.1. Next.js 클라이언트에서의 데이터 스트리밍 처리Next.js 클라이언트에서는 실시간 편집 데이터를 주고받기 위해 주로 WebSocket API를 사용합니다. Next.js는 React 기반이므로, 보통 페이지가 로드되면 useEffect 훅 등을 통해 WebSocket 연결(new WebSocket("wss://..."))을 열고 이벤트 리스너를 설정합니다.useEffect(() => { const socket = new W..
-
Next.js와 Node.js 기반 실시간 대용량 편집기 Part1. 아키텍처 & 프로토콜Tip 2025. 4. 27. 22:39
대용량 문서와 이미지를 실시간으로 다수 사용자와 공유하기 위해서는 프론트엔드, 백엔드, 인프라 각 계층이 유기적으로 설계되어야 합니다.프론트엔드는 Next.js를 기반으로 하여 SSR(서버사이드 렌더링)도 가능하지만, 실시간 편집기에서는 주로 클라이언트 측 SPA 동작과 WebSocket 통신을 활용하게 됩니다.Next.js 앱은 사용자의 편집 UI를 제공하고 WebSocket 등의 실시간 채널을 통해 백엔드와 통신하며, 리액트 기반의 실시간 UI 업데이트를 처리합니다. 백엔드는 Node.js로 구현된 실시간 협업 서버로, TypeScript로 작성되며 실시간 동기화 로직(CRDT/OT 알고리즘 적용)과 스트림 데이터 처리를 담당합니다. 인프라는 AWS 클라우드 상에 Kubernetes(EKS 등)를 ..
-
스키마 유효성 검사 라이브러리 비교(feat. Zod vs Yup vs Joi)Tip 2025. 1. 5. 18:38
클라이언트와 서버 간 데이터 교환이 빈번해지면서, 데이터의 일관성과 정확성을 보장하는 것이 중요한 과제가 되었습니다.이는 단순히 버그를 줄이는 것을 넘어, 개발 생산성과 시스템의 안정성에 직접적인 영향을 미치는 문제입니다.오늘은 기존에 자주 사용했던 Yup과 Joi 그리고 최근에 자주 사용되는 Zod에 대해 소개해 보겠습니다.1. 왜 스키마 유효성 검사가 필요한가?1.1 데이터 무결성과 유지보수서비스를 운영한다면 기능이 늘어나고 서비스 구조가 복잡해지기 쉽습니다.API 요청, 응답, DB 저장 구조가 점점 복잡해지면, 예상치 못한 형태의 데이터가 들어와 서비스 전체가 흔들릴 수 있습니다.스키마 유효성 검사를 통해 입력 데이터의 무결성을 보장하면, 추후 에러가 발생해도 디버깅 지점이 뚜렷해지고 유지보수가 ..
-
C4 Model for Visualizing Frontend Architecture (Feat. FSD)Tip 2024. 12. 29. 18:34
1. C4 Model for Visualizing Frontend Architecture먼저, C4 모델은 소프트웨어 아키텍처를 네 가지 수준으로 시각화합니다. (Context, Container, Component, Code)이 접근법은 시스템을 직관적이고 명확하게 이해할 수 있도록 돕습니다.그러나 전통적인 C4 모델은 백엔드 중심의 시스템에 적합하며, 프런트엔드의 특수성을 담기엔 한계가 있습니다.Visualizing Frontend Architecture는 이러한 한계를 극복하기 위해 설계되었습니다.이 방법론은 프런트엔드의 도메인 특화된 요구사항과 기술 스택을 시각적으로 표현할 수 있게 합니다.크게 아래와 같이 구성될 수 있습니다. FE 앱을 Context(전체 시스템에서의 FE의 역할) → Cont..