대규모 스트림 처리

0

TIL

목록 보기
140/183

인터넷의 많은 사용자들에 의한 동시다발적인 요청을 수용할 수 있는 시스템은 중요하다 라고 볼 수 있는데, 그 방법들 중 큐를 이용한 스트림 처리방법은 데이터를 순차적으로 처리하고 시스템 간의 비동기 통신을 가능하게 하여 확장성과 유연성을 크게 늘려줄 수 있다.

TPS(Transactions Per Second) :

초당 처리되는 트랜잭션의 수를 나타내는 지표로, 시스템의 성능과 처리 능력을 평가하는 데 중요한 역할을 한다.

요청 종류에 따른 개발 방법 :

읽기 요청 - DB에 접근하는 요청은 시간을 많이 소모하므로 개인화 데이터가 아니라면 캐시를 사용해 데이터의 로드 시간을 최소화한다.
하지만, Paging 읽기 요청 등 과한 요청이 들어오게되면 Redis의 용량을 초과하여 Redis Connection Timeout이 발생하게되고, 그 접속량을 DB로 보내게돼 DB에 문제가 생길 수 있다.
-> 문제가 생겼을 시 요청한 데이터를 반환하지 않거나, 사전에 모니터링으로 Redis의 용량이 일정 수준을 넘어가게되면 알람을 보내도록 하여 수동으로 문제를 막아내는 방법이 있다.
쓰기 요청 - DB에 데이터를 생성하는 부분에서 가장 많은 시간을 소요하므로 비동기 처리, 배치 처리, 분산 DB 방법을 사용하여 데이터의 일관성을 유지하면서 부하를 분산시킬 수 있다.


이렇게 과한 요청으로 인해 동시다발적으로 데이터가 들어오게될 때 데이터의 일관성을 유지시키는 방법이 매우 중요하다.

분산 트랜잭션 (Distributed Transactions)
여러 독립적인 시스템이나 데이터베이스에서 트랜잭션을 수행하면서 데이터의 일관성을 유지하기 위한 기술로, 트랜잭션은 원자성을 보장해야 하며 모든 연산이 성공적으로 완료되거나 모두 실패해야 한다.

이벤트 소싱 (Event Sourcing)
상태의 변경을 이벤트로 저장하고, 현재 상태를 재생하므로써 이벤트 로그를 생성하는 패턴이다.
시스템의 상태를 추적하고 복구하는데 용이하다.

CQRS (Command Query Responsibility Segregation)
CQRS는 명령(Command)과 조회(Query)를 분리하여 시스템을 설계하는 패턴이다.
읽기와 쓰기의 책임을 분리함으로써 성능, 확장성, 보안 등을 개선할 수 있다.

모니터링 (Monitoring)
시스템의 성능, 상태, 가용성을 실시간으로 관찰하고 측정하는 활동으로, 시스템이 정상적으로 작동하는지나 문제가 발생했는지, 성능이 저하되었는지를 지속적으로 확인하는 데 사용된다.

로깅 (Logging)
시스템의 운영 중 발생한 모든 이벤트를 기록하는 활동으로, 문제가 발생했을 때 그 원인을 분석하는 데 중요한 정보를 제공한다.

테스트 (Testing)
소프트웨어가 요구사항을 충족하고, 결함이 없으며, 예상대로 작동하는지 확인하는 과정으로, 품질보증과 신뢰성 확보에 목적을 둔다.

배포 (Deployment)
개발된 소프트웨어를 실제 운영 환경에 배포하여 사용자가 사용할 수 있도록 하는 과정으로, 안정성, 확장성, 자동화에 목표를 둔다.

0개의 댓글

관련 채용 정보