들어가기에 앞서이전부터 관심 있던 부하 분산이라는 주제로 RDS 읽기 전용 복제본을 생성해 트래픽을 분산시키는 작업을 진행했다. 하지만 RDS Aurora가 아니라 MySQL Engine을 이미 선택해 마이그레이션 하기에는 비용 걱정과 운영 걱정이 이만저만이 아니기 때문에.. 애플리케이션 단에서 스케쥴링을 하는 방법을 찾았다.먼저 아키텍쳐는 아래 그림과 같이 설계했다. 여기서 마스터 RDS를 1개 더 추가하여 구성할 수 있지만, 그렇게 하려면 단일 DB 인스턴스가 아닌 다중 AZ DB 인스턴스로 구성해야 한다. (*다중 AZ DB란 쉽게 고가용성을 위해 예비 DB 인스턴스를 자동 구성해 주며, fail-over기능도 제공한다.)다중 AZ DB 인스턴스로 구성한다면 직접 fail-over를 구현하지 않아도..
데이터베이스의 탐색 성능을 좌우하는 인덱스. 인덱스를 사용하는 이유? 대부분의 속도 저하는 바로 Select문 특히 조건 검색 Where절에서 발생하는데 가장 먼저 생각해 볼 수 있는 대안으로 Index가 존재 그렇다면 왜 B-Tree자료구조를 사용할까? 먼저 자료구조에서 트리란 무엇인가에 대하여 알아보자. Tree는 평균적으로 시간 복잡도 O(logN)을 가진다. 하지만 최악의 경우 한 쪽으로 쏠려버린 트리다 최악의 탐색 시간 O(N)을 가지게 되어버린다. 이걸 방지하기 위해 밸런스 트리(Balanced Tree)를 이용하기도 한다. 밸런스 트리(Balanced Tree)란? 트리의 노드가 한 방향으로 쏠리지 않도록, 노드 삽입 및 삭제 시 특정 규칙에 맞게 재정렬되어 왼쪽과 오른쪽 자식 양쪽 수의 밸..