DB 락데이터베이스에서 여러 트랜잭션이 동시에 같은 데이터에 접근할 때, 데이터의 무결성(일관성)을 보장하기 위해 사용되는 메커니즘 필요성 Dirty Read 트랜잭션 A가 데이터를 수정 중일 때 트랜잭션 B가 그 데이터를 읽는다. 하지만 트랜잭션 A가 롤백된다면 트랜잭션 B는 잘못된 데이터를 읽은 것이 된다. 초기 값: balance = 100트랜잭션 A 시작수정: balance = 100 → 80 (아직 커밋되지 않음)트랜잭션 B 시작읽기: balance = 80 ← Dirty Read 발생작업 진행...트랜잭션 A 롤백 → balance = 100으로 복원트랜잭션 B는 잘못된 balance(80)를 바탕으로 로직을 수행하게 됨 Non-repeatable Read 트랜잭션 A가 데이터를 읽은 후..
MSA는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처이다. 모놀리틱 아키텍처는 하나의 애플리케이션이 모든 비즈니스 로직을 담당하고 있었다면, MSA에서는 특정 비즈니스 기능을 수행하는 각 서비스가 독립적으로 배포되고 확장될 수 있다. 하나의 애플리케이션에는 여러 비즈니스가 얽혀있다. 예를 들어, 사용자가 상품을 주문한다고 하면 User, Product, Order 도메인과 관련된 비즈니스 로직들이 정확하게 연결되어 동작해야 한다. 그렇기 때문에 MSA에서는 각 마이크로 서비스 간 통신을 구현할 필요가 있으며 이는 주로 HTTP/HTTPS 혹은 메시지 큐 등을 통해 이루어진다. Spring Cloud를 활용해 서비스 디스커버리, 로드..
어떤 사람에겐 굉장히 쉽고 어떤 사람에겐 도저히 안 풀리는 문제 .. 알고리즘에 치중해 문제를 풀다보니 기본적인 것을 놓치고 있었다. 산으로 갔다가 겨우 푼 뒤 반성한다는 의미에서 포스팅한다. https://www.acmicpc.net/problem/1072 문제N과 L이 주어질 때, 합이 N이면서, 길이가 적어도 L인 가장 짧은 연속된 음이 아닌 정수 리스트를 구하는 프로그램을 작성하시오. 입력첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다.출력만약 리스트의 길이가 100보다 작거나 같으면, 연속된 수를 첫째 줄에 공백으로 구분하여 출력한다. 만약 길이가 100보다 크거나 그러한 수열이 없을 때는 -..
1. 질문프로듀서로부터 1000개의 메시지가 메시지 큐에 들어왔다고 하자. 큐에 들어온 메시지는 순차적으로 컨슈머에게 전달되며, 큐 내부에서는 순서가 보장된다. 컨슈머가 1개인 경우 컨슈머에서 메시지의 순서가 보장되겠지만, 컨슈머가 여러 개인 경우 컨슈머에서도 그 순서가 보장된다고 확신할 수 없다. 선착순으로 1000개의 좌석 티켓을 판매하는 시스템을 개발하는 상황이다. 10000명 정도의 트래픽이 예상되며, 안정적으로 1000개를 판매하기 위해서는 어떤 식으로 시스템을 설계하고 구현해야 할까? 2. 고려사항 대용량 트래픽 티켓은 1000장인데, 10배에 달하는 동시 접속자 트래픽이 예상된다. 티켓 좌석에 대한 읽기/쓰기 요청을 모두 데이터베이스로 보낼 시 부하 문제가 발생할 수 있다. 적절한 캐싱 전략..
1. 캐싱(Caching)이란?캐싱은 데이터를 빠르게 제공하기 위해 자주 사용하는 데이터를 메모리에 저장하는 기술이다. 하지만 캐시를 잘못 사용하면 성능 개선이 아니라 오히려 성능 저하를 초래할 수도 있다. 데이터베이스에 접근하기 전, 캐시를 확인하는 것 또한 결국 응답 시간 지연으로 이어지기 때문에, 적절한 캐싱 전략을 세우는 것이 중요하다. 2. Caching 용어 정리Cache Hit캐시에 접근했을 때 원하는 데이터가 있는 경우Cache Miss캐시에 원하는 데이터가 없는 경우Eviction Policy캐시 공간이 부족할 때 어떤 데이터를 제거할지 결정하는 정책Caching Strategy데이터를 언제 캐시에 저장하고, 언제 캐시를 확인할지에 대한 전략 캐싱은 Cache Hit 비율을 높이고, Ca..