분류 전체보기
-
[MySQL] #2 ProxySQL를 통한 DB Read/Write 분리 및 캐싱Database 2026. 4. 11. 21:01
들어가며이전 글에서 MySQL Replication(Source / Replica)을 구성하여 데이터가 복제되는 구조를 확인했습니다.하지만 실제 서비스에서는 Replication를 구성하는 것만으로는 부족합니다.애플리케이션이 직접 다음과 같은 사항을 판단해야 한다면 관리가 어려워집니다.어떤 쿼리를 Source로 보낼지어떤 쿼리를 Replica로 보낼지장애 서버를 어떻게 제외할지DB 연결 수를 어떻게 제어할지이 문제를 해결하는 대표적인 솔루션이 ProxySQL 입니다.ProxySQL은 DB 앞단에 위치하여 SQL을 분석하고, 상황에 따라 적절한 DB 서버로 전달하는 Layer 7 DB Proxy 입니다.ProxySQL 역할ProxySQL은 MySQL 앞단에 위치하는 DB Proxy로서 다음 역할을 수행합니..
-
[MySQL] #1 Replication(Source/Replica) 구축과 동작 원리 이해Database 2026. 4. 11. 21:00
들어가며서비스 규모가 커질수록 데이터베이스는 단일 인스턴스로 감당하기 어려운 한계에 직면하게 됩니다.트래픽 증가로 인한 성능 저하장애 발생 시 서비스 중단백업 및 복구의 어려움이러한 문제를 해결하기 위한 가장 기본적인 접근 방식이 바로 Replication(Source/Replica) 구조입니다.이번 글에서는 MySQL의 Replication을 직접 구성하고, 데이터가 어떤 방식으로 복제되는지 그 동작 원리를 함께 확인해보겠습니다.구조 (Topology)Source / Replica: MySQL Replication은 서비스의 원천 데이터를 보유한 하나의 Source와 이를 실시간으로 복제하는 하나 이상의 Replica로 구성됩니다. 주요 역할Source (Write & Logging)데이터의 변경 작..
-
[MySQL] #0 MySQL HA + ProxySQL + 모니터링 + 자동화 구축기Database 2026. 4. 11. 21:00
시작하며데이터베이스를 다루는 업무에 종사하며, 성능에 대해 자주 고민하게 됩니다.하나의 SELECT 쿼리가 수행되는데 10분이 소요된다고 가정했을 때, 과연 그 10분이 해당 쿼리의 최소 수행 시간인지, 아니면 튜닝을 통해 더 단축할 수 있는지, 혹은 데이터베이스 엔진의 문제(버그)인지 고민하게 됩니다.수많은 트래픽이 몰리는 대규모 서비스에서 쿼리 하나가 1분 늦어지는 차이는 결코 1분으로 끝나지 않습니다.동시다발적인 요청이 서로 얽히기 시작하면 전체 처리 시간이 10분, 나아가 1시간 이상으로 확장되는 이른바 ‘스노우볼 현상’이 발생할 수 있기 때문입니다. 이처럼 데이터베이스 성능은 곧 서비스 품질과 직결되는 핵심 요소이며, 문제를 빠르게 식별하고 정확하게 분석하는 능력이 매우 중요합니다. "측정할 ..
-
[Navigation] #4 route API 분석 (옵션별 결과 비교)Navigation 2026. 3. 22. 00:09
이번 글에서는 Route API 옵션과 OSRM이 제공하는 주요 서비스 API들을 확인해보겠다.1. OSRM Route API 파라미터 살펴보기OSRM Route API는 다양한 파라미터를 통해 응답 결과의 형태와 상세 수준을 조정할 수 있다.파라미터를 활용하여 반환되는 경로 정보의 구조, 상세 정보, geometry 형식 등을 필요에 맞게 제어할 수 있다.예를 들어, 응답 크기 최적화, 디버깅, 지도 렌더링, 네비게이션 기능 구현 등의 목적에 따라 여러 파라미터를 조합하여 사용할 수 있다.파라미터 설정없이 기본 요청 결과는 아래와 같다. [요청 예시]http://localhost:5000/route/v1/driving/126.9780,37.5665;127.0276,37.4979?overview=simp..
-
[Navigation] #3 OSRM 라우팅 서버 구축 실습 (Docker, 지도 데이터 전처리, Route API)Navigation 2026. 3. 9. 22:47
이번 글에서는 직접 OSRM 서버를 실행해 보면서지도 데이터 전처리 과정과 라우팅 서버 구동 과정을 실습해 보겠다. 1. OSRM Docker 이미지 받기이번 실습에서는 OSRM 공식 Docker 이미지를 이용해 라우팅 환경을 구성해보겠다. 공식 이미지 Pulldocker pull ghcr.io/project-osrm/osrm-backend 이미지 확인docker images | findstr osrm 이제 OSRM 실행에 필요한 Docker 이미지를 준비했으므로, 다음 단계에서는 라우팅에 사용할 지도 데이터를 준비해보자.2. 지도 데이터 준비OSRM은 경로 탐색을 위해 .osm.pbf 형식 OpenStreetMap(OSM) 기반의 지도 데이터를 사용한다.이번 실습에서는 Geofabrik에서 제공하는 ..
-
[Navigation] #2 OSRM을 알아보자Navigation 2026. 2. 23. 23:57
이번 글에서는 직접 경로 탐색을 실습해보기 위해 오픈소스 경로 탐색 엔진을 살펴보고자 한다.대표적인 오픈소스 경로 탐색 엔진으로는 OSRM, GraphHopper, Valhalla 가 있다.이 중 OSRM (Open Source Routing Machine) 을 알아보자 OSRM 이란?지도 데이터를 바탕으로 출발지와 목적지 사이의 최적 경로를 빠르게 계산해주는 오픈소스 라우팅 엔진이다.지도 데이터는 주로 OpenStreetMap을사용한다.C++ 로 구현되어 있으며, 다양한 교통 프로파일 지원 (car, bike, foot 등) 한다.OSRM의 기본 알고리즘은 MLD (Multi-Level Dijkstra)이며 CH(Contraction Hierarchies)도 사용가능하다. https://project-..
-
[Navigation] #1 경로탐색은 어떻게 하는 것일까?Navigation 2026. 2. 19. 00:03
1. 네비게이션 엔진에 관심을 갖게 된 계기서울역에서 부산역까지 길을 검색하면 결과는 거의 즉시 나온다.이처럼 우리는 거리에 관계없이 쉽고 빠르게 길찾기 결과를 얻을 수 있다.하지만 대한민국 전체 도로망은 방대한 수의 도로와 교차로로 이루어져있다.도로를 edge, 교차로를 node라고 생각하면 도로망을 거대한 그래프라고 생각 할 수 있다.그렇다면 질문이 생긴다.이 거대한 그래프에서 최적의 경로를 몇 ms 만에 어떻게 찾는 것일까? 2. 경로 탐색은 어떻게 하는 것일까?2-1. 도로망은 그래프다네비게이션에서 도로는 아래와 같이 모델링된다.교차로 → Node도로 → Edge이동 비용 → Weight즉, 경로 탐색은 결국 그래프 최단 경로 문제다. 2-2. 경로 탐색 알고리즘은 어떤 것들이 있을까?다익스트라(..
-
[mongodb] MongoDB Docker 설치 및 실습Database 2025. 5. 4. 17:44
docker pull mongodb/mongodb-community-server:latestdocker run --name mongodb -p 27017:27017 -d mongodb/mongodb-community-server:latestdocker exec -it mongodb mongoshtest> show dbsadmin 40.00 KiBconfig 60.00 KiBlocal 40.00 KiBtest> use myappswitched to db myappmyapp> db.user.insertMany([... {name:"Tom",age:15},... {name:"Sara",age:28}... ]){ acknowledged: true, insertedIds: { '0': Objec..