본문 바로가기

정리14

단위 테스트(Unit Testing) 핵심 정리, 1부 Unit Testing 단위테스트 : 생산성과 품질을 위한 단위 테스트 원칙과 패턴1부 : 더 큰 그림2부 : 개발자에게 도움이 되는 테스트 만들기3부 : 통합 테스트4부 : 단위 테스트 안티 패턴 1장. 단위 테스트의 목표단위 테스트의 목표단위 테스트의 목표는 소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는 것이다.코드베이스에서 무언가를 변경할 때마다 무질서도는 증가한다. 지속적인 정리와 리팩터링 등과 같은 적절한 관리가 없다면 시스템은 점점 더 복잡해지고 무질서해진다. 하나의 버그를 수정하면 더 많은 버그를 양산하고, 소프트웨어의 한 부분을 수정하면 다른 부분들이 고장난다.테스트는 안전망 역할을 하며, 새로운 기능을 도입하거나 새로운 요구 사항에 더 맞게 리팩터링 한 후에도 기존 기능이 잘 동.. 2025. 1. 20.
분산 메시지 큐 이해하기: 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 최근 ‘가상 면접 사례로 배우는 대규모 시스템 설계 기초 2’의 '4장 분산 메시지 큐'를 읽으며 대규모 시스템 설계의 복잡성과 분산 메시지 큐의 개념들을 새롭게 이해하게 되었다. 분산 메시지 큐에 관한 이론을 배운 내용들을 정리하여 공유하고자 한다. * 이 도서는 면접 상황을 가정하여 요구 사항을 기반으로 문제 해결 방안과 과정을 설명하고 있지만, 이번 포스팅에서는 그 과정 속에서 다뤄지는 개념과 내용에 더 집중하여 정리하였습니다.  현대 소프트웨어 아키텍처를 따르는 시스템은잘 정의된 인터페이스를 경계로 나뉜 작고 독립적인 블록으로 구성한다.이때 메시지 큐는 블록 사이의 통신과 조율을 담당한다. 메시지 큐의 장점결합도 완화 : 컴포넌트 사이의 강한 결합이 사라지므로 각각을 독립적으로 갱신 가능하다.규모.. 2024. 11. 4.
[Redis] redis.conf 기준 Redis 백업 방법 정리 (RDB vs AOF) 레디스는 인메모리 데이터베이스로, 매우 빠른 성능을 제공하지만 서버가 재시작되거나 종료되면 데이터가 휘발된다는 단점이 있다.따라서 레디스는 데이터를 안전하게 보존하고 유지하려면 디스크에 데이터를 저장하여 백업하는 방법이 필요하다. 이를 위해 레디스는 두 가지 영속화 옵션으로 RDB 방식과 AOF 방식을 제공한다. RDBRDB은 Redis Database File 약자로, 특정 시점의 데이터를 덤프 파일로 저장하는 방식이다. 재시작 시 덤프 파일을 통해 데이터를 복구한다. RDB 방식은 장점으로는스냅샷한 데이터 외의 부가적인 데이터가 없기 때문에 작은 파일 사이즈로 백업 파일 관리가 용이하다.파일 사이즈가 작기 때문에 원격지 백업, 버전 관리가 가능하다.fork를 이용해 백업을 하기 때문에 서비스 중인 프.. 2024. 10. 28.
[Redis] Redis 캐싱 전략 패턴 정리 레디스는 인메모리 데이터 스토어로, 디스크 기반의 데이터베이스보다 빠르게 데이터를 응답할 수 있어 고객에게 빠르게 서비스를 제공할 수 있다. 하지만 메모리 용량은 16GB ~ 32GB 정도로 제한적이기 때문에 모든 데이터를 저장하기에는 용량 부족 현상이 일어날 수 있다.따라서 어떤 데이터를 저장할 것인지, 얼마나 데이터를 캐싱할 것인지, 어떤 데이터를 제거할 것인지에 대한 전략이 필요하다. 읽기 전략Look-Aside : 서버가 캐시를 먼저 조회하고, 캐시에 없을 경우 데이터베이스를 조회한다.Read-Through : 캐시를 통해서만 데이터를 읽어오는 전략이다. 쓰기 전략Write-Back : 모든 데이터를 캐시에 저장하고, 일정 시간 뒤에 데이터베이스에 저장한다.Write-Through : 데이터를 캐.. 2024. 10. 20.
[친절한 SQL 튜닝] NL 조인, 소트 머지 조인, 해시 조인 01. NL 조인조인의 기본은 NL 조인이다.중첩 루프문의 수행 구조를 사용한다.양쪽 테이블의 인덱스를 이용하는 조인이다. '인덱스를 이용한 조인 방식' NL 조인 메커니즘인덱스 사용 : NL 조인은 양쪽 테이블 모두 인덱스를 사용한다.Outer 테이블(Driving)을 순차적으로 읽어 조건을 만족하는 행을 Inner 테이블에 탐색한다.SELECT e.사원명, c.고객명, c.전화번호FROM 사원 e, 고객 cWHERE e.입사일자 >= '19960101'AND c.관리사원번호 = e.사원번호 (1) 사원 인덱스에서 조건에 맞는 첫 번째 레코드를 찾는다.(2) 인덱스에서 읽은 ROWID로 사원 테이블 레코드를 찾는다.(3) 사원 테이블에서 읽은 사원번호로 고객 인덱스를 탐색한다.(4) 고객 인덱스에서 읽.. 2024. 6. 16.
[친절한 SQL 튜닝] 인덱스 튜닝 (2) : 인덱스 스캔 효율화, 인덱스 설계 작년에 면접 준비를 하면서 DB 인덱스에 대해서 정리한 내용이 있다. https://minnseong.tistory.com/19 [DB] Index 정리Index 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스의 검색 속도를 향상하기 위한 자료구조 Index를 통해 검색 속도 향상과 조회 성능을 높일 수 있다. Index를 사용하지 않는 칼럼을 조minnseong.tistory.com 제 3장. 인덱스 튜닝은 내용이 많아 두 파트로 나눠 정리를 했다.인덱스 튜닝 (1) : 테이블 액세스 최소화, 부분범위 처리 활용인덱스 튜닝 (2) : 인덱스 스캔 효율화, 인덱스 설계 01. 액세스 조건과 필터 조건액세스 조건인덱스 스캔 범위를 결정하는 조건절인덱스 수적적 탐색을 통해 스캔 시작점을 결정하는 데 .. 2024. 6. 13.