본문 바로가기

전체 글27

gradle dependency Version Conflicts 정리 (의존성 충돌) gradle dependency의 버전 충돌 관리 dependency들이 의존하고 있는 dependency가 여러 버전일 경우 어떤 버전이 적용될 것인가? gradle document에 따르면 gradle은 dependency graph에 나타나는 모든 버전을 고려하며 가장 높은 버전을 선택한다. 즉, 직접 의존(direct implementation)이든 간접 의존(transitive dependency)의 버전 우선순위가 존재하지 않으며 어떤 의존성 버전이 높은지에 따라 결정한다는 뜻. 다만 풍부한 버전 선언 을 지원(추가 예시 아래에 있음)하며 해당 설정이 지정되었을 경우 이 설정이 우선순위를 갖는다. 이 문서가 사실인지 테스트를 해보자. 테스트: 직접 의존 버전이 낮고 간접 의존 버전이 높은 경우.. 2023. 12. 31.
Spark에서 kafka message compression 적용기 kafka message compreesion이란? Producer가 메세지를 전송하기 전에 특정 압축 알고리즘을 적용하여 messege를 전송하는 방식, 압축 알고리즘의 종류에 따라 다르겠지만 Cloudflare의 사례에 따르면 zstd 방식을 적용했을 때 압축률이 4.5배에 달한다고 한다. (broker에서 압축을 적용하는 방식이 있지만 권장하지 않는 방식이라고 한다) trade-off가 있을까? Producer, Consumer가 메세지 압축, 압축해제를 함에 따라 CPU 사용률이 증가할 수 있다. 하지만 Cloudflare 사례에 따르면 Snappy 알고리즘을 적용해보았을 때 single-core cpu의 2.4%를 사용했다고 한다. (gzip 알고리즘은 snappy의 9배 정도의 cpu 사용률을.. 2023. 12. 27.
데이터 웨어하우스(DW)와 ELT 데이터 웨어하우스(DW) 사용자가 원하는 질문에 대답할 수 있는 데이터 분석 활동을 지원하기 위해 서로 다른 시스템의 데이터가 모델링되어 저장되는 데이터베이스. DW의 데이터는 리포팅 및 분석 쿼리를 위해 정형화되고 최적화 됨 데이터 레이크 데이터가 저장되지만 데이터 웨어하우스(DW)처럼 데이터 구조나 쿼리 최적화가 필요 없는 곳. ELT(Extract-Load-Transform) 오늘날의 대부분의 데이터 웨어하우스(DW)는 비용 효율적인 방식, 대규모 데이터세트에 대한 대량 변환을 저장하고 실행할 수 있는 확장성이 뛰어난 열 기반 DB를 기반으로 함 분석에서는 기존의 행 기반 RDBMS의 활용과 달리 많은 양의 데이터를 드물게 읽고 쓰는 경우가 많으며 행 전체에 대한 접근 보다는 단일 열을 필요로 하는.. 2023. 10. 22.
Unbounded Vs Bounded Data Unbounded streams 시작을 가지지만 정의된 끝이 없으며, 종료하지않고 데이터를 생성되는대로 제공한다. 지속적으로 처리되어야하며, 즉 events는 즉시 수집되는대로 즉시 hadle되어야 한다 입력이 한정되지 않고 어떤 특정 지점에서 제 시간에 완료되지 않기 때문에 모든 입력 데이터가 도달하는 것을 기다리는 것은 불가능하다. unbounded data 처리는 결과의 완전성을 추론하기위해 자주 event들이 특정 순서로 수집되는 것을 요구한다. 예를 들면 이벤트가 발생된 순서 등이다. Bounded streams Bounded streams는 시작과 끝이 정의되어있다. 이것은 어떠한 계산이 수행되기 전에 모든 데이터를 섭취함으로써 처리될 수 있다. bounded data set은 항상 정렬될 .. 2023. 10. 18.
단위테스트, 통합 테스트 작성하기 보호되어 있는 글 입니다. 2023. 9. 3.
PEEK time 시나리오 기반 성능 개선 진행 우테캠 파일럿 프로젝트를 진행하며 동작하는 서비스를 만들었습니다. 이 파일럿 서비스가 성장했다는 가정하에 발생하는 문제를 파악해보겠습니다. 가상 시나리오 설정 누적 주문 100만 건과 팀원들과 벌고싶은 매출 월 매출 100억을 기준으로 계산해보았습니다. 210일 째 운영중인 든든킷... (가정) 누적 주문량 100만건 현재 유저 가입 수는 266000명 DAU 38000 예상 Peek time (5시~8시) 조회 TPS 100: 주문 TPS 2.5 실제로 저희가 만든 프로덕트의 문제를 위 시나리오를 기반으로 파악해보겠습니다. 모의 유저 파악 유저는 든든킷에 들어오면 어떤 행동을 할까? 실제 인터넷 기사의 지표와 팀원들의 모의 유저 데이터를 활용햐여 요청 데이터를 계산해보았습니다. 유저가 특정 요청을 할 .. 2023. 9. 3.