전체 글236 Nest에서 Cron 서비스가 갑자기 돌지 않는다면? 1. 배경: 코드 구조 리팩토링과 QueryBuilder의 도입NestJS로 백엔드 서비스를 운영하다 보면, 엔티티(Entity) 클래스가 점점 비대해지는 문제가 생깁니다.예를 들어 특정 엔티티 안에 “날짜 범위 검색”, “OO별 필터링” 같은 쿼리 매핑 메서드를 static으로 붙여두면, 어느 순간 엔티티가 데이터 모델링과 쿼리 빌더 역할을 동시에 하게 됩니다.이를 해결하기 위해 팀에선 전용 QueryBuilder 클래스를 도입했습니다.// src/purchase/query-builders/Sample-query.builder.ts@Injectable({ scope: Scope.REQUEST })export class SampleQueryBuilder { private filters: FilterQu.. Framework/NestJS 2025. 9. 22. TanStack Query v5로 GraphQL과 REST API 통합 관리하기 요약TanStack Query v5는 React Query의 후속 버전으로, GraphQL과 REST API를 하나의 통합된 인터페이스로 관리할 수 있는 강력한 서버 상태 관리 라이브러리입니다. 기존 버전 대비 개선된 TypeScript 지원, 더욱 직관적인 API, 그리고 프레임워크 독립적인 구조를 제공합니다. 특히 현재 Wisely 구조 상 BigCommerce Storefront GraphQL API와 자체 구축한 REST API를 동시에 사용하는 이커머스 환경에서, 일관된 캐싱 전략과 낙관적 업데이트를 통해 최적의 사용자 경험을 제공할 수 있습니다.핵심 기능/개념 정리TanStack Query v5 주요 변화점항목v4 (React Query)v5 (TanStack Query)패키지명react-qu.. Framework/React & RN 2025. 8. 24. 백엔드 개발자가 다시 프론트엔드로: 2024년 생태계 변화 총정리 요약2021-2022년과 비교했을 때, 2024년 프론트엔드 생태계는 서버 중심 사고로의 회귀, 타입 안전성 강화, 그리고 개발자 경험(DX) 개선을 중심으로 급격한 변화를 겪었습니다. React 18의 Concurrent Features, Next.js App Router의 Server Components, 그리고 TanStack Query의 서버 상태 관리 패러다임은 백엔드 개발자에게 친숙한 개념들로 프론트엔드와 백엔드의 경계를 모호하게 만들고 있습니다. 이러한 변화는 특히 풀스택 개발 경험이 있는 개발자들에게는 오히려 더 직관적이고 이해하기 쉬운 환경을 제공합니다.핵심 기능/개념 정리주요 기술 스택 변화 타임라인연도기술/패턴변화 내용백엔드 개발자 관점2021React 17, SWRCSR 중심, 클라.. Framework/Nextjs 2025. 8. 24. FSD 아키텍처로 대규모 Next.js 프로젝트 구조 설계하기: 실무 적용 가이드 요약Feature-Sliced Design(FSD)은 대규모 프론트엔드 애플리케이션의 구조를 체계적으로 관리하기 위한 아키텍처 방법론입니다. 전통적인 기능별 폴더 구조나 Atomic Design의 한계를 극복하고, 비즈니스 로직의 응집도를 높이면서 계층 간의 의존성을 명확히 관리할 수 있습니다. Next.js App Router와 결합했을 때, Server Components와 Client Components의 역할을 명확히 분리하고, 코드 재사용성과 유지보수성을 극대화할 수 있는 현대적인 프론트엔드 아키텍처 패턴입니다.핵심 기능/개념 정리FSD 계층 구조계층명역할의존성 방향Next.js 적용 예시app전역 설정, 프로바이더모든 계층 의존layout.tsx, providers.tsxpages라우팅, 페이.. Framework/Nextjs 2025. 8. 24. 파티셔닝의 정의와 예시, 고려해야 하는 시점 파티셔닝 예시파티셔닝은 하나의 도메인(카카오톡 발송 내역)을 여러 테이블에 나누어 저장하는 것을 말합니다.카카오톡 발송 내역 파티셔닝 예시1. 파티셔닝 전 (단일 테이블)-- 파티셔닝 전: 모든 발송 내역이 하나의 테이블에 저장CREATE TABLE kakao_messages ( id BIGINT PRIMARY KEY, user_id BIGINT, template_id VARCHAR(50), phone_number VARCHAR(20), content TEXT, status VARCHAR(20), sent_at TIMESTAMP, delivered_at TIMESTAMP, created_at TIMESTAMP);2. 파티셔닝 후 (여러 테이블로 분할)시간 .. DB 2025. 8. 2. 스플릿 브레인의 정의와 발생 시나리오 정리 스플릿 브레인(Split Brain)이란?스플릿 브레인은 분산 시스템에서 네트워크 분할이나 노드 장애로 인해 두 개 이상의 노드가 각각 자신이 리더라고 인식하는 상황을 말합니다.발생 시나리오1. 네트워크 분할(Network Partition) 시나리오[데이터센터 A] ←→ [데이터센터 B] ↑ ↑ 리더 A 팔로워 B시나리오 1: 네트워크 연결 끊김[데이터센터 A] X [데이터센터 B] ↑ ↑ 리더 A 팔로워 B발생 과정:초기 상태: A가 리더, B가 팔로워네트워크 분할: A와 B 간 통신 불가타임아웃 발생:A는 B의 응답을 받지 못해 B가 죽었다고 판단B는 A의 .. DB 2025. 8. 2. [데이터 중심 어플리케이션 설계하기] 2과. 데이터 모델과 질의 언어 2과. 데이터 모델과 질의 언어참고문서 : 데이터 중심 애플리케이션 설계(마틴 클레프만, 위키북스)1. 데이터 모델이란 무엇인가?데이터 모델은 우리가 어떤 문제를 어떻게 해결할지, 그리고 소프트웨어가 할 수 있는 일과 없는 일에까지 영향을 미친다.예를 들어, 어떤 연산은 빠르고, 어떤 연산은 느릴 수 있다.데이터 모델을 이해하는 것은 단순히 저장 구조를 아는 것 이상으로, 시스템의 한계와 가능성을 파악하는 데 중요하다.데이터 모델의 큰 범주관계형 모델문서 모델그래프 모델2. 관계형 모델과 문서 모델2-1. 관계형 모델데이터를 관계(relation, 테이블)로 구성각 관계는 순서 없는 튜플(tuple, 행)의 모음SQL을 통해 정규화된 구조로 데이터를 저장하고 질의정규화와 조인(join)을 통해 데이터 중.. DB 2025. 7. 13. [데이터 중심 어플리케이션 설계하기] 1과. 신뢰 할 수 있고 확장 가능 하며 유지 보수 하기 쉬운 애플리케이션 1과. 신뢰 할 수 있고 확장 가능 하며 유지 보수 하기 쉬운 애플리케이션1. 데이터 시스템어플리케이션은 계산 중심(compute-intensive)보다 데이터 중심(data-intensive)이 많다.계산에 쓰이는 CPU보다는 데이터 양, 데이터 복잡도 등이 더 문제다.데이터 중심 어플리케이션이 공통으로 필요로 할수 있는 기능들 : 데이터 시스템데이터베이스 : 영속성 스토리지캐시 : 읽기 속도 향상, 값 비싼 수행 결과 기억검색 색인 : 사용자가 키워드로 데이터를 검색하거나 다양한 방법으로 필터링할 수 있게 제공스트림 처리 : 비동기 처리를 위해 다른 프로세스로 메세지 보내기일괄(batch) 처리 : 대량의 누적된 데이터를 주기 분석1) 데이터 시스템의 범주들데이터베이스, 메세지큐, 캐시 등최근에는 이.. DB 2025. 7. 13. 코드 리뷰로 함께 성장하기: 개인과 팀의 성장을 이끄는 문화 구축 가이드 소프트웨어 개발에서 코드의 품질은 제품의 안정성과 직결되며, 이는 곧 비즈니스의 성공으로 이어집니다. 코드 품질을 유지하고 향상시키는 가장 효과적인 방법 중 하나는 바로 '코드 리뷰'입니다. 와이즐리 개발팀은 개인과 팀의 동반 성장을 이끌고, 장기적으로 높은 생산성을 유지하기 위해 체계적인 코드 리뷰 문화를 도입하고자 합니다. 이 글에서는 코드 리뷰의 다층적 가치를 살펴보고, 와이즐리에 최적화된 단계별 도입 전략과 구체적인 실행 방안을 소개합니다.1. 현재 우리에게 필요한 변화: 코드 리뷰 문화의 부재가 낳는 문제들현재 와이즐리 개발팀은 코드 리뷰 문화가 거의 정착되지 않은 상태로, 여러 잠재적 위험에 노출되어 있습니다. 동료의 작업 내용에 대한 이해가 부족하고, 개발 과정에서 발생하는 문제를 각자 고립.. 기타 2025. 7. 3. 토이 프로젝트에 적용하는 Lemon Squeezy API 활용 가이드 토이 프로젝트에 적용하는 Lemon Squeezy API 활용 가이드개요저는 현재 토이 프로젝트로 "핏픽(FitPick)"이라는 프로젝트를 진행 중입니다. 해당 프로젝트는 Next.js를 활용한 풀스택 프로젝트이며, Lemon Squeezy API를 활용하여 상품 관리, 장바구니, 결제 기능을 제공합니다. 오늘은 Lemon Squeezy를 활용하여, 어떻게 실제 적용 가능한지 살펴보겠습니다. 먼저, Lemon Squeezy는 디지털 제품 판매에 특화된 플랫폼으로, 백엔드 서버 없이도 완전한 이커머스 기능을 구현할 수 있습니다.1. 프로젝트 설정1.1 환경 변수 설정# .env.localLEMON_SQUEEZY_API_KEY=your_api_key_hereLEMON_SQUEEZY_STORE_ID=your_.. LLM/VibeCoding 2025. 6. 30. Lemon Squeezy 시작 가이드: 스토어 개설부터 첫 판매까지 Lemon Squeezy 시작 가이드: 스토어 개설부터 첫 판매까지*본 문서는 Lemon Squeezy 공식 가이드 및 문서를 기반으로 작성되었습니다.문서 개요Lemon Squeezy는 디지털 제품 및 SaaS 결제에 특화된 이커머스 플랫폼입니다. 이 가이드는 Lemon Squeezy 공식 문서를 기반으로, 처음 사용하는 사용자를 위해 계정 생성부터 스토어 개설, 상품 등록, 결제 연동, 실제 판매 시작까지의 전체 흐름을 단계별로 정리합니다. 개발자를 위한 API 연동, 테스트 모드 활용법 등 실무에 필요한 핵심 정보도 함께 제공합니다.1. 주요 기능 및 개념 정리기능설명계정 생성이메일, 구글, 트위터로 가입 가능. 이메일 인증 필요스토어 개설스토어명, 서브도메인 지정. 한 계정에서 여러 스토어 관리 가.. LLM/VibeCoding 2025. 6. 28. 6/26 DB Connection Pool 고갈 장애 분석 및 해결 방안 리포트 DB 장애 분석 및 해결 방안 리포트문제 인지 시기, 26일 9:14분 최초 보고서버 로그Knex: Timeout acquiring a connection. The pool is probably fullCommerce Web API 서버에서는 6월 26일 00시부터 27일 00시까지 하루 동안, Knex: Timeout acquiring a connection. The pool is probably full 오류가 발생했습니다. 이로 인해, 위 슬랙에 보고된 것처럼 플랫폼 내 멤버쉽 가입, 취소/교환/반품이 제대로 이뤄지지 않는 문제가 발생했습니다.발생 원인해당 글에서는 문제의 근본 원인을 짚어보고, 즉각적인 조치(단기)와 안정적인 시스템을 위한 장기적인 개선 방안을 제시합니다. 또한, Neon DB의 .. DB 2025. 6. 27. 이전 1 2 3 4 ··· 20 다음 반응형