대규모 스트림처리

대규모 시스템 - 데이터 일관성 유지
대규모 시스템에서는 데이터 일관성을 유지하는 게 중요함이를 위해 분산 트랜잭션, 이벤트 소싱, CQRS등의기법을 사용할 수 있음 분산 트랜잭션(Distributed Transaction)- 여러 개의 독립된 시스템이나 데이터베이스에서동시에 일어나는 트랜잭션을 일관되게 관리하는 방법 - 단일 트랜잭션이 여러 시스템에 걸쳐 발생할 때,모든 시스템이 해당 트랜잭션을 성공적으로 완료하거나,모든 시스템이 트랜잭션을 실패로 처리하도록 보장이를 통해 데이터의 일관성을 유지할 수 있음 - 분산 트랜잭션이 필요한 이유는 마이크로서비스 아키텍처에서 여러 서비스가독립적으로 운영되기 때문 트랜잭션(Transaction)- 데이터베이스의 상태를 변환하는 작업의 단위로 ACID 속성을 보장 원자성(Atomicity): 트랜잭션은..

대규모 시스템 - 데이터베이스 최적화
데이터베이스 사용 최적화- 데이터베이스 인덱싱: 데이터베이스 인덱싱은 조회 성능을 크게 향상할 수 있는 방법 인덱스를 사용하면 데이터베이스는 데이터를 빠르게 검색할 수 있음 올바르게 설계된 인덱스는 읽기 성능을 적화 하고 쿼리 응답시간을 줄임 인덱스가 너무 많으면 쓰기 성능이 저하됨 - 데이터베이스 샤딩: 데이터베이스 샤딩은 데이터베이스를 여러 샤드로 분할하여각각의 샤드가 독립적으로 쿼리를 처리하도록 하는 방법 이를 통해 단일 데이터베이스에 대한 부하를 분산시킬 수 있으며,읽기 요청에 대한 응답 속도를 향상 시킬 수 있음 ex) 사용자 데이터를 여러 샤드에 분산 저장하여 읽기 성능 최적화 - 읽기전용 데이터베이스: 데이터를 주기적으로 동기화하여 최신 상태를 유지하면서 요청을 처리 이 방법은 주 데이터베이..

대규모 시스템 - TPS(Transaction Per Second)
TPS(Transactions Per Second) - 초당 처리되는 트랜잭션의 수를 나타내는 지표- 시스템의 성능을 평가하는 중요한 지표 중 하나- 시스템이 얼마나 많은 요청을 동시에 처리할 수 있는지를 나타내며,시스템의 처리 능력을 가늠할 수 있게 해 줌 시스템이 초당 요청량을 견딜 수 있어야 함 - 일간 접속량이 아닌, 특정 시간대에초당 접속자 요청량이 가장 많은 시간을 파악해야 함 예상치 못한 이벤트로 인해 설계 예상 이상의 요청이 몰려 시스템이 중단되는 걸 대비하는 법 - 애플리케이션의 수 늘리기- 대기열을 설정- 자동 스케일링을 통해 시스템의 자원을동적으로 할당하여 부하를 분산시킴