본문 바로가기

728x90

분류 전체보기

(127)
대규모 시스템 설계 기초 2 - 6장. 광고 클릭 이벤트 집계 다양한 미디어 생태계에서 디지털 광고가 전체 광고 매출에서 차지하는 비중이 커지고 있습니다. 이로 인해, 광고 클릭 이벤트에 대한 추적 작업도 매우 중요해지고 있죠. 이번 장은 이런 추적 작업을 위한 광고 클릭 이벤트를 집계하는 기능을 개발하는 것에 대해서 설명하고 있습니다. 광고 클릭 이벤트 집계는 아래와 같은 영향을 끼칩니다.온라인 광고가 얼마나 효율적이었는지 측정함으로써, 광고주가 얼마나 많은 돈을 지불할지 결정광고 예산 조정 및 타겟 그룹이나 키워드 변경하는 광고 전략 수정따라서, 광고 클릭 이벤트 집계 결과 데이터의 정확성은 매우 중요합니다. 기능 요구사항이전 M분 동안의 ad_id 클릭 수 집계매분 가장 많이 클릭된 상위 N개 ad_id 반환다양한 속성에 따른 집계 질의 결과 필터링 지원데이터..
Docker compose로 MongoDB 사용하기 (Mac) 현재 진행 중인 프로젝트에서 MongoDB를 사용하려고 했는데, 직접 설치하기보다는 docker compose를 사용해서 설치 없이 손쉽게 MongoDB 를 사용하려고 했습니다. 이를 위해 거쳤던 과정들을 정리하였습니다. 1. Mongo DB 사용을 위한 docker 설치 (2가지 방법)- 아래 명령어 실행하거나 docker desktop 에서 직접 설치brew install cask docker # docker 설치docker -v # docker 설치 확인 2. docker - compose 설치brew install cask docker-compose # docker compose 설치docker-compose -v # docker compose 버전 3. MongoDB docker compose ..
대규모 시스템 설계 기초 2 - 5장. 지표 모니터링 및 경보 시스템 잘 설계된 지표 모니터링과 경보 시스템은 인프라의 상태를 상세하게 보여줌으로써 높은 가용성과 안정성을 달성하는 중추적인 역할을 수행합니다. 이번 장은 DATADOG나 Grafana처럼 유명한 대시보드 서비스와 유사한 서비스를 설계하고 있습니다. 기능/비기능 요구사항기능 요구사항인프라 규모는?DAU 1억명, 서버 풀 1,1000개, 풀당 서버 수 100개, 서버당 100개의 운영지표 수집 => 모니터링이 필요한 지표 수는 1,000만 개데이터 보관 기간: 1년수집한 그대로 데이터 보관하는 기간은 1주일, 그 후에는 1분 단위데이터로 변환 후 30일간 보관, 그 후에는 1시간 단위 데이터로 변환 후 1년간 보관 (데이터를 압축해서 저장한다는 뜻으로 지표의 해상도(resolution)를 낮춤)모니터링할 지표:..
대규모 시스템 설계 기초 2 - 4장. 분산 메시지 큐 이번 장은 분산 메시지 큐 설계에 대해서 다루고 있습니다. 메시지 큐를 사용하면 아래와 같은 이득을 얻을 수 있습니다.결합도 완화 (decoupling): 컴포넌트 간 강한 결합이 사라져 독립적으로 갱신 가능합니다.규모 확장성 개선: Producer와 Consumer 구조를 통해 시스템 규모를 트래픽 부하에 맞게 독립적으로 늘릴 수 있습니다.가용성 개선: 시스템의 특정 컴포넌트에 장애가 발생해도 다른 컴포넌트는 큐와 계속 상호작용을 이어갈 수 있습니다.성능 개선: 비동기 통신이 가능하여 데이터가 프로세싱될 때까지 기다릴 필요가 없습니다.그럼 이 책에서 소개하는 분산 메시지 큐 설계를 위한 기능 요구사항과 비기능 요구사항을 확인해 보겠습니다.기능 요구사항Producer는 메시지 큐에 메시지를 보낼 수 있어..
대규모 시스템 설계 기초 2 - 3장. 구글맵 해당 포스팅은, 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 스터디를 하며 정리한 포스팅입니다.이번 포스팅은 구글 맵과 관련된 서비스를 제공하기 위한 시스템 설계 부분입니다. 기능과 비기능 요구사항은 아래와 같습니다.기능 요구사항과 비기능 요구사항 분리기능사용자 위치 갱신경로 안내 서비스 (ETA(Estimated Time of Arrival) 서비스 포함)지도 표시비기능정확도: 사용자에게 정확한 경로를 안내해야 합니다.부드러운 경로 표시: 경로 안내 지도는 부드럽게 표시되고 갱신되어야 합니다/최소한의 데이터 및 배터리 사용량: 이 요구사항은 모바일 단말에 아주 중요합니다.가용성 및 규모 확장성도 고려해야 합니다.이와 같은 지리적 기반 서비스를 제공하기 전에 필요한 개념들이 아래와 같이 소개되어..
기본 HTML 문법 - 1 (p, span, a, li, img, 시맨틱 태그) 현재 Back-end를 주로 개발하고 있지만, 프로젝트 개발에 Front-end도 필수라 생각하여 간단한 웹을 제작하며 배운 HTML 태그들을 정리하였습니다. ㅎㅎHTML은 기본적으로 아래와 같은 구조를 갖습니다. (html, head, body) Content  :문서에 대한 메타데이터를 포함합니다. 요소를 비롯하여, 웹 브라우저가 웹 페이지를 표시하는 데 도움이 되는 정보(예: charset 및 viewport 설정)를 포함합니다. :웹 페이지의 제목을 정의합니다.이 제목은 브라우저의 탭에 표시되며, 북마크 또는 검색 엔진 결과에도 사용됩니다. :실제 화면에 표시되는 콘텐츠를 포함하는 요소입니다.텍스트, 이미지, 링크, 스크립트, 스타일 등 웹 페이지의 모든 요소를 여기에 포함할 수 있습니..
bootJar vs Jar (feat. 멀티모듈) 멀티모듈 프로젝트를 진행하다가 ./gradlew build 로 프로젝트를 build 하려고 하니 build에 실패하면서 아래와 같은 에러가 발생했습니다.Starting a Gradle Daemon (subsequent builds will be faster)> Task :bootJar FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':bootJar'.> Error while evaluating property 'mainClass' of task ':bootJar' > Failed to calculate the value of task ':bootJar' property 'mainClass..
Context Context란?일반적으로 문맥이라고도 알려져 있는 Context는 어떤 상황에서 그 상황을 처리하기 위해 필요한 정보를 의미합니다.Reactor에서의 ContextOperator 체인에 전파되는 키와 값 형태의 저장소입니다. ThreadLocal에서 스레드마다 생성 저장소가 생성되듯이, Context는 구독이 발생할 때마다 생성됩니다. 즉, Context는 Subscriber 와 매핑되어, 해당 Subscribe(구독)과 연결된 하나의 Context가 생깁니다. 아래 예시 코드로 Reactor의 Context를 자세히 알아보겠습니다.예시public class Main { public static void main(String[] args) throws InterruptedException { ..

728x90
반응형