아키텍처 4

CQRS (Command Query Read Segregation)

CQRS (Command Query Read Segregation)데이터를 업데이트하는 작업과 데이터를 읽는 작업을 분리를 하는 패턴이다.Microsoft에서 CQRS 내용을 정리한 글이다. 기존 시스템 (CRUD)의 문제점여러 작업자가 동일한 데이터 집합을 동시에 사용하는 공동 작업 도메인의 데이터 저장소에 레코드가 잠겨 있는 경우 데이터 경합을 초래할 위험이 있다낙관적 잠금을 사용하는 경우 동시 업데이트로 인해 업데이트 충돌이 발생할 수 있습니다.시스템의 복잡성과 처리량이 늘어날수록 증가합니다.기존의 접근 방식은 데이터 저장소와 데이터 액세스 계층에 가해지는 부하뿐 아니라 정보를 검색하는 데 필요한 쿼리의 복잡성으로 인해 성능에 좋지 않은 영향을 미칠 수 있습니다.작업의 일부로 필요하지 않더라도 정확..

아키텍처 2018.08.20

Index, Document를 분리하는 방법을 이용한 대용량 데이터 저장소 설계

Index, Document를 분리하는 방법을 이용한 대용량 데이터 저장소 설계데이터의 용량이 많아 지게되면 관계형 데이터베이스로는 한계가 있다.scale out(sharding) 관계형 데이터베이스로 구현할수 있지만 Application Logic이 복잡해진다index table or look-up table와 document table를 따로 구별하기 설계를 할수 있다.각각의 저장소에는 cache를 두는 방식으로 응답성을 좋게 할수 있다.각각의 cache는 데이터의 성격에따라 다르게 설정을 해야된다.실시간성 데이터, 중요성이 높은 데이터 (ex, 재고 데이터)는 TTL를 적게 두는 방식으로 취한다.잘 바뀌지 않는 데이터, 느리게 바뀌어도 문제가 없는 데이터 (ex, 상품의 타이틀)을 1분~10분 TT..

아키텍처 2018.08.18

Log 성격을 가진 데이터의 수집 / 분석 아키텍처

Log 성격을 가진 데이터의 수집 / 분석 아키텍처 서비스를 개발을 하다보면 Log 성의 데이터가 필요할수가 있다.예를 들면, 사용자의 click 정보, push 전송 정보 결과, 이메일 전송 결과실시간 성격이 가진 로그가 있을수도 있다.예를 들면, 중복 방지를 위해 userId와 push 전송 결과에 대한 데이터 처리이 경우에는 KEY (userId)을 통해 빠른 시간에 데이터를 가지고 올수가 있어야 된다.통계 성격이 가진 로그가 있을 수 있다.예를 들면, 하루에 전송된 Push Message의 양로그 저장소 Log File -> Log Stash -> S3File로 로그를 저장을한다.Log Stash 등을 이용하여 S3/HDFS 저장소로 저장이 된다.저장 기간이 상대적으로 많이 길다.압축을 하거나 o..

아키텍처 2018.07.27

람다 아키텍처

람다 아키텍처new data, batch layer와 speed layer로 데이터가 들어온다.batch layer, batch layer는 2가지가 존재를 한다. 데이터를 저장하는 저장소 (append-only, immutable)와 view를 위해 미리 처리된(pre-complete)로 구별이 된다.serving layer, low latency와 adhoc 쿼리에 대한 뷰를 제공을 한다.speed layer, 최근 데이터와 대한 high latency의 update를 제공을 한다.query, batch view, realtime view를 통해 결과를 얻을수가 있다. Speed ComponentsApache StormApache Spark StreammingApache SamazaApache S4S..

아키텍처 2018.07.22