
문제상황 사내 백오피스 애플리케이션에서 거래내역을 조회하는 페이지에 첫 진입할 때 5.48초가 걸리는 문제를 발견하였습니다 원인 분석 현재 거래내역 페이지는 offset 기반의 페이지네이션을 사용하고 있었고 리스트의 전체 행 수를 구하는 부분(이하 totalCount)에서 시간이 많이 소요되고 있음을 발견하였습니다. 페이지 첫 진입 시 데이터 조회 범위가 정해져있지 않았기 때문에 서비스 오픈부터 쌓여온 10만여건의 데이터를 전부 조회하고 있었습니다. 또한 실행계획을 조회해보니 거래 테이블에서 테이블 풀 스캔이 발생하고 있었습니다. 페이지 첫 진입 시 최근 한달 간의 거래내역만 조회하고 옵션에서 범위를 늘릴 수 있게 변경하고자 하였으나 운영팀에서는 조금 느리더라도 전체 범위 검색을 디폴트값으로 해달라는 요..

CQRS 패턴이란? Command Query Responsibility Segregation : 명령(Command)과 질의(Query)의 책임을 분리하는 패턴 Command 명령 시스템 데이터 변경 (ex. 주문 취소, 배송 완료) create, update, delete Query 질의 시스템 데이터 조회 (ex. 주문 목록, 상품 상세) read Responsibility 책임 구성요소의 역할 구성 요소 (모델) 클래스, 함수 모듈/패키지 웹서버/DB 분리 Segregation 역할에 따라 구성요소 나누기 명령과 질의에 단일 모델을 사용할 경우 코드 역할/책임 모호 요구사항이 늘어가면서 Member객체에 주문테이블, 로그인 히스토리 테이블 등과의 결합도가 증가 의미/가독성 등 나빠짐 유지보수성 떨어..
- Total
- Today
- Yesterday
- Infra
- 라라벨
- laravel 테스트
- 샤딩
- laravel 테스트코드
- 리눅스 컨테이너
- 쿠버네티스
- mongoDB
- 분산처리
- pods
- 대규모 데이터 처리
- NoSQL
- kubernetes
- database
- Container
- 몽고디비
- java
- 주니어개발자
- springboot
- devops
- laravel
- php
- MySQL
- 백엔드
- index
- k8s
- docker
- mockery
- sre
- phpUnit
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |