TypeORM Gzip을 활용한 데이터 압축 및 최적화
·
Backend
사내 프로젝트에서 구글 빅쿼리 데이터를 조회하고 특정 시점의 스냅샷을 저장해야 하는 요구사항이 있었습니다. 처음엔 MySQL을 선택했지만 향후 S3 연동도 고려하고 있습니다.배경 및 문제점기존 방식MySQL의 JSON 타입 컬럼으로 데이터를 저장했습니다.다수의 부동소수점(float) 값이 포함된 JSON 데이터에서 부동소수점 오차로 인한 데이터 불일치가 발생했습니다.이 문제는 TDD를 통해 조기에 발견되었습니다.해결 방안데이터 일관성을 위해 JSON 데이터를 문자열로 변환하고, MySQL 컬럼 타입을 longtext로 변경했습니다.새로운 문제점빅쿼리에서 조회한 테이블 중 하나가 약 66MB 크기로, MySQL의 max_allowed_packet(64MB) 한계를 초과하여 에러가 발생했습니다.단순한 설정 ..
사내에서 새로운 아키텍처 제안하기 (NestJS) – 순환 참조 문제 해결 & UseCase 패턴 적용 (2)
·
Backend
📌 3. 제안된 신규 아키텍처1️⃣ 개선된 아키텍처 개요기존 Layered Architecture의 문제점을 해결하기 위해 UseCase 패턴을 적용하여 Application Layer를 추가한 구조를 제안합니다.✅ 핵심 개선점:서비스 간 직접 호출을 제거하고, UseCase 단위로 비즈니스 로직을 모듈화Application Layer를 추가하여 비즈니스 로직을 분리하고, 서비스 간 결합도를 낮춤순환 참조 문제를 방지하고, 테스트 가능성을 높임🔹 기존 아키텍처 vs. 개선된 아키텍처 비교항목 기존 Layered Architecture 개선된 아키텍처 (UseCase 패턴 적용)비즈니스 로직 위치Service Layer에 집중됨UseCase 단위로 분리의존성 관리서비스 간 직접 참조 많음Applicat..
사내에서 새로운 아키텍처 제안하기 (NestJS) – 기존 아키텍처 문제점 분석 (1)
·
Backend
📌 1. 서론 – 왜 아키텍처 개선이 필요할까?🔹 오랜만에 글을 씁니다!마지막 글을 작성한 지 벌써 3개월이 지났네요. 정신없이 업무를 하다 보니 블로그를 잠시 쉬었는데, 최근 실무에서 아키텍처 개선을 고민하면서 공유하고 싶은 내용이 많아졌어요.사실 이 내용은 사내 기술 세미나에서 2주에 한 번씩 공유했던 내용인데, 내부 환경에 맞춰 다듬다 보니 블로그에 바로 올리지는 못했어요. 이번 기회에 정리해서 공유해보려고 합니다.🔹 이번 글에서 다룰 내용이번 글에서는 사내에서 신규 아키텍처를 제안하는 과정을 다뤄보려고 합니다.단순히 "새로운 기술이 좋아 보이니까 도입하자"가 아니라,✔ 기존 아키텍처의 문제점을 분석하고,✔ 팀원들을 설득하며,✔ 실제 도입을 추진하는 전략까지 정리했습니다.즉, "어떻게 하면 새..