👩🏻‍💻TIL (Today I Learn)/Algorithm
[알고리즘] 다익스트라(Dijstra) 그리고 에이스타(A*)
2025.09.24
🧪휴리스틱(heuristic)불충분한 시간이나 정보 또는 합리적 판단이 필요하지 않은 상황에서 신속하게 사용하는 어림직작의 기술현재 위치에서 목표까지 남은 거리(또는 비용)을 빠르게 추정해주는 함수아직 실제로 가보진 않았지만, 아마 이정도 거리(비용)이 남았을거야. 라고 직관적으로 추측.조건낙관적 추정 : 실제 비용보다 크지 않아야 함. 실제보다 작거나 같도록.(목적지까지 남은 거리를 과대평가 하지 않음. 최단경로를 찾아야하니까)노드간 이동할 때, 일관적으로 삼각 부등식 만족1. 다익스트라(Dijkstra) 알고리즘시작점에서 모든 노드까지의 최단 거리를 찾는 알고리즘탐색 기준 : 지금까지의 실제 비용(`g(n)`)만 사용 (휴리스틱 없음)`f(n) = g(n)`목표가 어디에 있는지 전혀 모르고, 그냥 ..
👩🏻‍💻TIL (Today I Learn)/Architecture
🔑 Kafka에서 메시지 순서를 보장하는 방법
2025.09.17
Kafka는 여러 메시지를 비동기적으로 동시에 전송하기 때문에 처리량과 성능이 좋음이 때, Kafka에서의 메시지 순서 보장은 전역적으로 이루어지는 것이 아니라, 파티션 단위로만 이루어짐!반대로 말하자면, 파티션 단위 이외에는 메시지 순서를 보장하지 않음1. 파티션 단위의 순서 보장Kafka 토픽은 여러 개의 파티션으로 나눠서 저장됨같은 파티션 안에서는 Producer가 보낸 순서대로 메시지가 저장되고, Consumer도 그 순서대로 따라 읽음하나의 파티션에 들어간 메시지는 append-only(뒤에만 추가) 로그 형태로 쌓임메시지의 offset이 메시지 순서가 되는 것즉, 파티션 내부에서만 순서가 보장됨2. 🔑 파티셔닝 전략Producer가 메시지를 보낼 때, 메시지 키(Key)를 지정할 수 있음같은..
👩🏻‍💻TIL (Today I Learn)/Docker
Valhalla API 연동 성공...
2025.09.15
Valhalla는 OSM(Open Street Map) 데이터를 활용하는 오픈소스 라우팅 엔진.Valhalla API를 연동할 때는 일반적으로 Docker를 이용해서 서버를 띄우는 방식을 사용함📜발할라 공식 문서 https://github.com/valhalla/valhalla GitHub - valhalla/valhalla: Open Source Routing Engine for OpenStreetMapOpen Source Routing Engine for OpenStreetMap. Contribute to valhalla/valhalla development by creating an account on GitHub.github.com 25.09.12 기준,깃허브를 보면, 최근 버전은 Valhall..
👩🏻‍💻TIL (Today I Learn)/HTML, JS
🚀 CORS 보안 정책 : 쿠키 차단 문제의 원인과 해결 방법
2025.09.03
1. CORS란?교차 출처 리소스 공유 Cross-Origin Resource Sharing의 약자웹 브라우저는 동일 출처 정책(Same-Origin Policy)이라는 보안 규칙을 따름프로토콜, 도메인, 포트가 모두 같을 때만 자유롭게 요청이 가능한 것.예를 들면, `http://example.com:80`은`http://example.com:80`과는 동일 출처이지만,` http://example.com:8080`과는 포트가 다르기 때문에 다른 출처이고,` http://api.example.com:80`과는 도메인이 다르기 때문에 다른 출처임이처럼 브라우저는 다른 출처로부터의 요청을 막고 있는데,브라우저의 보안 정책을 완화하는 방법이 CORS 정책.2. CORS가 왜 필요할까?프론트엔드와 백엔드를 서..
👩🏻‍💻Project
🚝열차 좌석 예매에서의 동시성 제어 : Redis 기반 분산락 활용
2025.08.08
1. 동시성 제어가 필요한 이유문제 상황열차 예매 서비스에서는 여러 사용자가 동시에 같은 좌석을 예약하려는 상황이 발생할 수 있음예: 명절에 KTX 1호차 3A에 좌석에 동시에 3명이 예약을 요청한 경우이 때 동시성이 제어되지 않으면중복 예약되어 한 좌석에 여러 명이 예약됨데이터의 정합성이 깨짐해결 방법먼저 예약한 사람만 성공하고, 나머지는 실패하도록 락(Lock)을 걸어야 함락을 구현하는 방식은 DB 수준의 네임드 락(Named Lock), Zookeeper와 Redis 기반의 분산락이 있음2. Lock을 구현하기 위해 Redis를 선택한 이유In-memory 기반의 빠른 처리 속도동시성 이슈를 해결하기 위한 방법으로는 MySQL의 네임드 락, Zookeeper도 존재하지만,이들은 디스크 기반 DB이기..