본문 바로가기

분류 전체보기48

Readable Code: 읽기 좋은 코드를 작성하는 사고법 정리 약 3달 전에 "Readable Code: 읽기 좋은 코드를 작성하는 사고법" 강의를 들으며 정리한 내용을 미루다 미루다 드디어 포스팅하였다.이 강의를 듣고 공부한 내용은 실제 업무에서 리팩터링과 코드를 작성을 하는 데에 많은 도움이 되었다고 느꼈다. 기회가 된다면, 실제 업무에 적용한 사례도 정리하면 좋을 것 같다. 아무쪼록 지금까지 들었던 강의 중에 많이 와닿고 유익한 강의라, 적극 추천합니다.  우리가 클린 코드를 추구해야 하는 이유는 아래와 같이 이유가 있겠지만 결국, 우리의 시간과 자원 절약하기 위해서이다. 가독성을 위해서코드를 잘 읽고, 읽히게 하기 위해서코드를 쉽게 이해를 하기 위해서유지보수 하기를 수월하게 하기 위해읽기 좋은 코드와 추상화는 매우 밀접한 관계가 있다. 적절한 추상화는 복잡한.. 2024. 11. 27.
분산 메시지 큐 이해하기: 가상 면접 사례로 배우는 대규모 시스템 설계 기초 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.