Distributed Systems
·
2026. 2. 10. 02:05
목차Paxos Made Simple1. https://pdos.csail.mit.edu/6.824/papers/paxos-simple.pdfPaxos Lecture2. https://pdos.csail.mit.edu/6.824/notes/l-paxos.txtPaxos Pseudo Code3. https://pdos.csail.mit.edu/6.824/notes/paxos-code.htmlPaxos Agreement - Computerphile (시각화를 잘 한 것 같음)4. https://www.youtube.com/watch?v=s8JqcZtvnsMPaxos Made SimpleLeslie Lamport01 Nov 2001초록Paxos 알고리즘은 영어로 볼 때 간단합니다. (원문은 그리스어로 써있다고 ..
Distributed Systems
·
2026. 2. 3. 02:11
GFS는 구글 파일 시스템으로 Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung 이 발표한 기술이다.GFS는 분산파일 시스템으로 스케일이 가능한 데이터 중심의 큰 어플리케이션을 위해 설계되었다. 저렴한 상업용 하드웨어를 많이 사용하여 높은 성능과 fault tolerance, 내결함성을 제공한다. 여타 기존의 분산 파일 시스템과 목적은 비슷하지만, 근본적으로 다르게 설계되었다. 서비스에 운영되는 데이터의 생성과 처리뿐만 아니라 대규모 데이터 세트를 필요로 하는 연구 및 개발 작업을 위한 저장 플랫폼으로 활용되며 천 대가 넘는 머신에 연결된 수천 개의 디스크에 걸쳐 수백 테라바이트의 저장공간을 제공한다. 동시에 수백 개의 클라이언트가 이 시스템에 접근한다.GFS의 아키텍..
Distributed Systems
·
2026. 1. 21. 04:47
맵리듀스는 2004년 Google의 Jeffrey Dean이 발표한 기술이다.GFS와 같은 분산 파일시스템에서, 사용자가 작성한 맵 함수와 리듀스 함수를 실행하여 결과를 생산해낸다.디스크에 있는 파일을 읽어 사용자 함수 Map을 실행한다. 중간 결과(인메모리)에서 셔플링을 통해 사용자 함수 Reducer는 매퍼의 결과를 복사한다.맵리듀스는 다음과 같은 그림으로 도식화 할 수 있다. 사용자 프로그램 워커는 Map Phase와 Reduce Phase가 있고 Master 프로그램이 워커에게 알맞은 작업을 부여한다.여러 스레드나 프로세스에서 동일한 워커에 접근하여 작업을 지시하면 안되므로 Master 프로그램은 강한 격리성을 유지해야하한다. 즉, 병렬 등의 동시성 처리에 취약하면 안된다.워커들은 일반적으로 2-..
카테고리 없음
·
2025. 12. 13. 02:57
다시, 맨처음 이야기를 시작한 원래 코드로 돌아가자.최초 작성한 코드는 다음과 같다. @Transactional(propagation=Propagation.REQUIRES_NEW)public void sendRegistered(Long scheduleId){ // 스케쥴된 아이템을 찾는다 Schedule sending = scheduleRepository.findById(alimtalkScheduleId). orElseThrow(() -> new GeneralException(Type.NO_STORED_SCHEDULED_BY_ID)); List items = sending.getItems(); boolean hasError = false; // 해당 아이템의 하위 아이템..
데이터베이스
·
2025. 11. 19. 05:08
목차 - 트랜잭션 격리- 스냅샷 격리- 직렬성 - 진짜 순서대로 실행하기 - 2PL - 직렬성 스냅숏 격리 - 오래된 MVCC 읽기 감지하기 - 과거의 읽기에 영향을 미치는 쓰기 감지하기- 참고문헌 트랜잭션 격리이제까지 트랜잭션 격리와 그 수준에 대해서 충분히 이야기한 듯 하다. 하지만 격리는 어떻게 구현되는 걸까? read committed, repeatable read는 다른 트랜잭션이 변화를 주어도 본 트랜잭션에 영향이 없다. read committed인 경우 상대 트랜잭션이 커밋한 순간 값이 업데이트 되며 repeatable read는 본인의 트랜잭션이 커밋 또는 롤백되기 전까지 다른 트랜잭션이 변경하거나 커밋한 사항을 확인할 수 없다. 트랜잭션은 undo log에 위치한 ..
데이터베이스
·
2025. 11. 11. 04:09
목차 - ACID- 동시성 문제 - Dirty Read, Non-Repeatable Read, Phantom Read - 더티 쓰기 (dirty write) - 갱신 손실 (lost update) - 쓰기 스큐 (write skew)- 참고문헌 ACID동시성의 이야기를 진행하기 전에 먼저 ACID를 다루고자 한다. Atomicity 원자성, Consistency 일관성, Isolation 격리성, Durability 지속성이 있다. 원자성과 격리성은 동시성을 다루기전에 한번 짚고 넘어갈 만한 이야기다.원자성은 쪼갤 수 없는 어떤 것을 말한다. 데이터베이스는 어떤 작업들의 절차들을 하나의 쪼갤 수 없는, 트랜잭션을 정의할 수 있다. 그리고 일련의 작업 중 어떤 것이 실패하였을 때 전부 되돌릴 수 있..
데이터베이스
·
2025. 10. 26. 07:17
목차 - 문제 정의- 트랜잭션 격리레벨 - SERIALIZABLE - READ UNCOMMITTED - READ COMMITTED - REPEATABLE READ- 참고문헌 문제 정의이 글은 Spring Boot 및 JPA기준으로 작성되어 있습니다.send 함수의 수행 시간은 1회마다 1.x초 정도 소요된다. 목표치는 2600회 정도 이고 소요시간은 40분으로 측정된다.안타깝게도, 해당 함수 호출을 하는 snedRegistered 함수가 여러 쓰레드에서 호출이 되었다. (sendRegistered 는 send함수를 여러회 호출한다. 목표치가 2600회이므로 2600번 호출된다.)함수는 다음과 같이 작성되어있다.@Transactional(propagation=Propagation.REQUIRES_..
개발이야기
·
2025. 10. 22. 01:59
유난히 스트레스 받는 하루.하나를 마무리 하면 하나가 오고, 또 끝내면 또 하나가 오고.쉽지 않네. 케이스별로 테스트도 해야하는데, 업무는 몰리고삽들고 삽질 중.근데 뭔가... 받는거에 비해 많이 일하는데 많이 받고 작게 받는거고 자시고,가치는 뒤따라 오는 거니까무엇보다 이게 의미가 있는 일인가도움이 되는 방향으로 성장하고 있나 생각하면그렇지 않다라고 생각이 든다Implementation의 향연이미 머릿속엔 red flag가 떴는데, 이걸 팀의 방향을 설정해야하는데 적어도 팀이 다른 조직에 가서도 의미가 있는 일을 하려면 힘과 방법을 길러놔야하는데이 걸 업무와 같이 갈 수 있게끔 어떻게 해야할까 팀원들이 두려운 것 처럼 나도 두려운 것이 많다.그렇다고 회피할 순 없다.무서워서 도망치면 죽는다무서울수록 더..