[DB] 트랜잭션과 동시성 제어
·
Computer Science/Database
Introduce결제 시스템을 구축하면서 동시성 문제를 경험한 적이 있다. 여러 사용자가 동시에 결제를 시도할 때, 예상하지 못한 데이터 불일치와 정합성 문제가 발생했으며, 이를 해결하기 위해 다양한 접근 방식을 고민해야 했다. 이러한 동시성 문제는 단순히 결제 시스템에서만 발생하는 것이 아니다. 데이터베이스에서 트랜잭션이 동시에 실행될 때, 공유 자원의 일관성과 무결성이 깨지는 문제는 모든 시스템에서 중요한 고려 사항일 것이다. 동시성이란 여러 주체가 하나의 공유 자원에 동시에 접근하여 의도하지 않은 결과를 발생시키는 것을 의미하며, 식사하는 철학자 문제가 유명한 예시이다. 즉, 데이터베이스에서 동시성 문제란 여러개의 트랜잭션이 동시에 실행되어, 공유 자원의 일관성과 무결성을 깨뜨리는 문제를 말한다. ..
[DB] Lock을 사용하여 동시성 제어하기 (+ 2PL Protocol)
·
Computer Science/Database
Introduce 결제 시스템을 구축하면서 동시성 문제를 해결하기 위해 비관적 락, 낙관적 락, 분산락과 같은 다양한 락킹 기법들을 검토하게 되었다. 하지만 이를 효과적으로 적용하기 위해서는 데이터베이스에서 제공하는 기본적인 락킹 기법을 먼저 이해하는것이 우선이라는 생각이다. 따라서 이번 글에서는 데이터베이스의 Lock의 종류, 발생할 수 있는 이상 현상, 해결 기법 들을 다루고자 한다. Concurrency📌 동시성 Concurrency(동시성) 이란 여러개의 작업(트랜잭션, 요청, 스레드 등)이 동시에 실행되는 상태를 의미한다. 즉, 하나의 시스템에서 여러 개의 프로세스 또는 스레드가 동일한 자원을 공유하며 실행되는 모든 상황을 의미한다. 즉, 데이터베이스에서 동시성 제어란 여러 개의 트랜잭션이 동..
브라우저는 google.com을 입력하면 어떤 일을 처리하지?
·
Computer Science/Network
Introduce 최근에 네트워크나 운영체제 쪽으로 CS 지식이 부실하다는 생각이 든다. 전공 수업에서 다 배웠던 내용이긴 하지만 시간이 좀 지나기도 했고, 그때는 단지 시험에서 점수를 잘 받기 위해서 공부했었던 것 같아서 이번에 짬짬이 정리해보고 CS 지식들을 리마인드 해보고자 한다. 그래서 어떻게 리마인드 할까? 무작정 다시 외워야 할까? 그냥 무작정 다시 외우기만 하면 금방 까먹을 것 같다는 생각이 든다. 그래서 내가 선택한 방법은 특정 주제를 던지고 그 주제에 대해서 최대한 스토리를 그려보며 공부해보고자 한다. 이번 게시글의 주제는 www.google.com 을 브라우저에 입력했을때 어떤일이 일어날까? 이다.  1. 사용자가 브라우저에 www.google.com 을 입력한다. 2. 브라우저는 캐싱..
스프링 모니터링 시스템 구축하기 (Actuator, Prometheus, Grafana)
·
DevOps/Monitoring
Introduce  PLG Stack(Promtail, Loki, Grafana)으로 효과적인 로그 모니터링 시스템 구축하기Introduce📌 개요2025.01.25 - [DevOps/Monitoring] - 로그 시스템이 필요한가요? (ELK Stack과 PLG Stack) 로그 시스템이 필요한가요? (ELK Stack과 PLG Stack)개요 로그는 어떻게 수집해야할까? 나는 최근까지 로그woojjam.tistory.com 이전 게시글에서는 PLG Stack으로 로그 모니터링 시스템을 구축해보았다. 이번 시간에는 SpringBoot Actuator, Prometheus, Grafana 를 활용하여 스프링 애플리케이션 모니터링 시스템을 구축해보고자 한다. 작전에 실패한 군인은 용서할 수 있지만 경계에..
PLG Stack(Promtail, Loki, Grafana)으로 효과적인 로그 모니터링 시스템 구축하기
·
DevOps/Monitoring
Introduce📌 개요2025.01.25 - [DevOps/Monitoring] - 로그 시스템이 필요한가요? (ELK Stack과 PLG Stack) 로그 시스템이 필요한가요? (ELK Stack과 PLG Stack)개요 로그는 어떻게 수집해야할까? 나는 최근까지 로그 수집에 대한 지식도, 관심도 가져 본적이 없었다. 그 이유는 개발만 하면서 로그 대한 필요성도 크게 느끼지 못했고, 익숙하지 않은것도woojjam.tistory.com 이전 시간에는 로그 시스템의 필요성과 ELK Stack / PLG Stack에 대해서 정말 간략히 알아보았다.이번 시간에는 실제로 PLG Stack을 구축해 보고, 실 서버에 적용해보고자 한다.Definition📌 목표 구축을 하기전에 내가 하고자 하는 것이 무엇인지..
로그 시스템이 필요한가요? (ELK Stack과 PLG Stack)
·
DevOps/Monitoring
개요 로그는 어떻게 수집해야할까? 나는 최근까지 로그 수집에 대한 지식도, 관심도 가져 본적이 없었다. 그 이유는 개발만 하면서 로그 대한 필요성도 크게 느끼지 못했고, 익숙하지 않은것도 있지만 실제로 로그를 효과적으로 관리하여 얻는 큰 장점을 경험해본적이 없기에 표면으로 다가오는 이점을 깨닫지 못했다. 개발 과정이야 소수의 팀원들끼리 지지고 볶고, 그러다보면 해결이 되었다. 그러다 최근에 정식 출시전 알파 테스트를 진행하였는데, 그 과정에서 무수히 많은 이슈가 발생하였다. 현재 우리 서비스는 로깅 정책이나 수집에 대한 시스템을 전혀 고려하지 않았기에 이슈가 발생한 원인이나 트리거, 요청이 제대로 들어왔는지, 어떤 메소드에서 오류가 발생하였는지 등을 찾는데 많은 어려움이 있었다. 물론 정식 출시전 큰 이..
🚀 무중단 배포가 뭐지? 무중단 배포 전략을 알아보자.
·
DevOps/Deployment
1. 개요본 게시글은 무중단 배포에 대한 내용을 담고 있으며 배포 전략에 대한 애니메이션은 [HUDI님의 게시글] 을 인용한것임을 밝힙니다.맨 처음 배포를 해본것은 약 2년전이었다. 그때는 배포에 대해서 아는것도 없었기에 어떤건지도 잘 모르고, 여기저기를 찾아서 어찌저찌 했던 것 같다. 당시에는 내가 직접 수동 배포를 했었다.대충 수동 배포 플로우를 정리해보면1. 작성된 코드를 Github에 Push 한다.2. AWS EC2에 SSH로 접속한다.3. EC2에서 작성한 코드들을 Git clone | Git pull 한다.4. 서버를 빌드하고 실행한다.이렇게 된다. 당장 코드를 작성하고, 구현하는데에도 시간이 많이 쓰인다. 하지만 거기다 직접 빌드하고, 테스트도 해보고, 최종 배포까지 일련의 과정들을 수동으..
공간 인덱스로 조회 속도 58배 향상시키기
·
Backend/MySQL
1. 들어가기전현재 좌표를 기준으로 주변 데이터들을 조회하는 기능을 개발하고자 한다.다음 그림처럼 원의 중간점을 현재 좌표로 설정하였다면 줌 레벨에 따라 반경 (X) Km의 원 내에 존재하는 데이터들을 조회하는 기능을 구현하고자 한다. 어렴풋이 공간 데이터, 공간 함수에 대해서 들어본적이 있었기에 현재 사용중인 데이터베이스인 MySQL의 공간 데이터, 공간 함수, 그리고 공간 인덱스를 통한 성능 개선을 해보고자 한다.2. 공간 데이터공간 데이터란 말 그대로 공간 정보를 저장할 수 있는 데이터베이스를 의미한다.다음 그림은 MySQL에서 제공하는 공간 데이터 타입이다.Point좌표 공간의 한 지점POINT(10 10)LineString다수의 Point를 연결해주는 선분LINESTRING(10 10, 20 2..
Velog에서 Tistory로
·
끄적끄적
원래 개발 블로그로 Velog를 사용하고 있었다. 요즘에 작업이 워낙 많다보니 블로깅에 소홀해졌고, 올해에는 최소 일주일에 1개씩 포스팅을 유지해보고자 한다. 기존 Velog는 글을 쉽고 간편하게 작성할 수 있다는 큰 장점이 있었지만, 카테고리 별로 글을 모아보는게 불가능 했고, 커스텀의 자유가 없기에 모든 Velog가 비슷해 보인다는 생각이 강했다. 그러므로 올해는 새마음 새뜻으로 Tistory에서 블로깅을 이어가보고자 한다!