본문 바로가기 메뉴 바로가기

welcome!

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

welcome!

검색하기 폼
  • 전체보기 (230)
    • IT 저서 (20)
      • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (12)
      • 데이터 중심 애플리케이션 설계 (8)
    • Discrete mathmatics and Pro.. (41)
      • 1 논리 (14)
      • 2 기초적인 구조들 : 집합, 함수, 순열, 시그.. (3)
      • 3 알고리즘 (2)
      • 5 재귀와 귀납 (2)
      • 6, 8 경우의 수와 그 응용(dp) (7)
      • 9 관계 Relations (4)
      • 10 그래프 (1)
      • 11 트리 (6)
      • etc radom, samplings (1)
    • 알고리즘 문제 (7)
      • math (8)
      • implementation (17)
      • sort, search (5)
      • data structure (5)
      • Brute Force (4)
      • BFS (0)
      • DFS and Simillar (4)
      • DP (11)
      • graph (7)
      • Flow (1)
      • string (0)
      • 입사문제 (2)
    • 운영체제 (5)
      • 1 overview (0)
    • 네트워크 (12)
    • 데이터베이스 (3)
    • 컴퓨터구조 (0)
    • 개발이야기 (19)
      • 포트폴리오 (1)
      • Flutter (2)
      • Wpf (1)
    • 자유공간 (12)
    • Calculus (0)
    • IoT 과정 (39)
  • 방명록

항해99 (4)
항해플러스 수료 기념 깃헙 뱃지 등록

개발이야기 2024. 5. 25. 17:45
항해99) 트랜잭션 관심 분리와 애플리케이션 이벤트 활용 - 문서

이번에는 트랜잭션 관심 분리와 애플리케이션 이벤트 활용에 대해 설계문서를 작성해볼 것입니다.시나리오는, 좌석 예약 시나리오로 플로우는 다음과 같다.1 예약정보 저장 2 계좌 정보에 고객정보 있는지 확인2.1 계좌 정보에 고객 정보가 없다면 계좌 정보에 고객 정보 생성3 결제 내역 생성4 결제 히스토리에 결제 5 해당 고객 계좌 정보에 차감금액 입력위 플로우는 하나의 트랜잭션으로 묶인다.코드는 다음과 같다. @DistributedLock(key="#userId") public boolean payForPreReservedSeat(int amount, Long userId) throws Exception { Reservation reservation = jpaReservationCor..

개발이야기 2024. 5. 15. 22:19
항해 99) 대기열 이야기

사용자가 임의로 서비스에 접근할 때 서버의 처리비용 그리고 DB의 처리비용을 완화하려고 대기열 구현을 하는 것은 흔할 수 있다. 선착순 문제라고 생각하면 쉽다.대기열 순번을 구현할 때, 순번은 어딘가에 영속적으로 저장되어야하는데 DB와 Redis 두 개를 선택사항을 두고 고민했고, 나는 대기열을 이용할 때 Redis를 활용했다. 왜냐하면 다음과 같은 이유가 있다.1. 대기표 순번은 아주 단기간에 몰리는 트래픽을 처리하는데 사용할 필요가 있다. Read, Write 비용이 높다.2. 피크 타임에 단기간에 몰린 뒤 서비스가 완료된 뒤 그 이후에는 필요가 없다. 즉, DB에 쌓는다면 필요없는 레코드가 수백만건이 쌓일 것이다. 무언가가 배치로 DB Table로 부터 레코드를 지워야한다. 그러나 Redis를 활용..

개발이야기 2024. 5. 10. 18:02
항해99) 인덱스 관련 이야기

항해 99 과정서 콘서트 좌석 관련 테이블 형태는 다음과 같다.제약조건: 좌석수: 1~50콘서트수: 1~200좌석상태: EMPTY, RESERVEDseat_number: 좌석 정보 show_id: 콘서트 아이디occupied_status: EMPTY, RESERVED 이다.1번 콘서트에서 잔여좌석 확인때 다음과 같이 수행한다.select * from seat_info where occupied_status = "EMPTY" and show_id = 1;Explain view로 보면 Full Table Scan을 수행한다.  여기서 풀테이블 스캔을 피해가려면 Index를 걸 수 있다.Index는 Cardinality가 큰 녀석을 걸면된다. 직감적으로 show_id에 걸면 될 것이다.(1~50)이므로.Ind..

개발이야기 2024. 5. 10. 17:39
이전 1 다음
이전 다음
공지사항
  • 소스코드 중 링크가 존재하지 않다고 뜨는 것은⋯
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • 이산수학
  • flutter
  • Arena
  • 가상 면접 사례로 배우는 대규모 시스템 설계 기초
  • 항해99
  • Discrete Mathematics
  • 아레나 시뮬레이션
  • grafana cloud
  • Simulation
  • 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
  • arena simulation
  • javascript
  • 아레나시뮬레이션
  • 명제논리
  • 대규모 시스템 설계 기초
  • 로젠
  • paul wilton
  • 자바스크립트 예제
  • Propositional and Predicate Logic
  • 자바스크립트
  • 백준
  • 최단경로 알고리즘
  • 이산 수학
  • rosen
  • 시뮬레이션
  • 그라파나
  • beginning javascript
  • 데이터 중심 애플리케이션 설계
  • Grafana
  • 아레나
more
«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바