본문 바로가기

728x90

분류 전체보기

(132)
🚦 대규모 시스템 설계 기초 1권 – 6장: 키-값 저장소 설계 이번 포스팅은 『가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권』 6장을 공부하며 배웠던 개념들에 대하여 정리하였습니다.해당 장에서는 데이터 관리를 여러 노드에 복제한 분산 시스템으로 설계하고 있는데요, 이때 자연스럽게 발생하는 문제들이 있습니다. 바로 데이터 불일치, 정합성 문제, 동기화 지연 등압나다.『가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권』의 6장은 이런 상황에서 어떤 기술들이 실제로 사용되는지를 설명해주고 있어 공부하면서 궁금했던 개념들을 정리해 보았습니다.🧠 분산 시스템을 이해하기 위한 핵심 개념— 머클 트리, Anti-entropy, 벡터 버저닝까지 우선 머클 트리와 Anti-entropy는 분산 환경에서 특정 노드에 장애가 발생했을 때 일관성이 깨진 데이터에 대하여 ..
🚦 대규모 시스템 설계 기초 1권 – 4장: 처리율 제한 (Rate Limiting) 1. 처리율 제한(Rate Limiting)이란?일정 시간 동안 처리할 수 있는 요청 수를 제한하는 기법입니다.과도한 요청(정상적이든 공격이든)으로부터 시스템 자원을 보호, 안정성 보장API 또는 서비스에 대한 공정한 사용량 배분 가능API abuse, DDoS, 과도한 트래픽 등으로부터 시스템을 보호하는 데 필수적2. 왜 Rate Limiting이 중요한가?✅ 서버 과부하 방지✅ 악의적 사용자/버그로 인한 폭주 대응✅ 비용 관리 (클라우드 API 호출 등 과금 최소화)✅ 서비스 품질(QoS) 유지 및 SLA 보장✅ 공정성 (특정 사용자 독점 방지)3. 처리율 제한 알고리즘1️⃣ Token Bucket (🌟실무 인기)일정 속도로 토큰을 생성하여 버킷에 채우고, 요청 시 토큰을 하나 씩 소모토큰이 있으면..
LocalDateTime와 Instant (+ ZonedDateTime) 현업에서 LocalDateTime과 Instant를 사용하다가 문제를 봉착하게 되어서 해당 블로그를 쓰게 되었습니다. Java에서는 LocalDateTime, Instant, ZonedDateTime과 같은 날짜와 시간을 다루기 위한 클래스들을 제공합니다. 하지만 각 클래스는 다른 용도와 특성을 가지고 있습니다. 이들을 잘 활용하는 것이 중요합니다.  1. LocalDateTimeLocalDateTime은 시간대 정보를 포함하지 않는 날짜와 시간을 다룰 때 사용합니다. 즉, 시간대가 중요하지 않고 단순히 날짜와 시간만 필요한 경우에 적합합니다.주요 특징:시간대 정보 없음: LocalDateTime은 시간대 정보 없이 로컬 날짜와 시간만을 표현합니다.불변 객체: LocalDateTime은 불변 객체이므로 ..
API와 SDK 기술 면접에서도 가끔 등장하고, 개발자라면 알아야 하는 필수 개념입니다. API와 SDK 가 무엇인지 알아보고, 차이점이 무엇인지 정리하였습니다.API와 SDK는 뭘까?우선 API와 SDK를 풀어쓰면 아래와 같아요.Application Programming Interface응용 프로그램 인터페이스Software Development Kit소프트웨어 개발 키트이제 각 기능을 설명하기 위해 시스템 A가 있다고 가정을 해 보고 각 개념을 정리해 보겠습니다.API다른 시스템들이 시스템 A의 특정 기능을 사용하고 싶어 합니다. 이를 위해 시스템 A에서 인터페이스를 정의해 두면, 다른 시스템들은 해당 인터페이스를 사용하여 A에서 제공하는 기능을 사용할 수 있게 됩니다. 여기서 인터페이스가 바로 API를 의미합니다...
Lower_bound & Upper_bound 알고리즘 최근 leet code의 Longest Increasing Sequence (최장 부분 수열) 알고리즘 문제를 풀다가, 예전에 공부했던 lower_bound, upper_bound 개념과 구현이 기억이 나질 않아... 이번 기회에 정리해 보았습니다 ㅎㅎ 항상 두 개념이 헷갈렸었는데 이번 포스팅을 통해 개념을 계속 기억하길 바라는 마음으로 두 개념 비교 위주로 정리하였습니다.Lower_bound와 Upper_bound 비교 개념알고리즘 구현Lower_bound특정 k값의 시작 위치(k값보다 크거나 같은 위치)를 찾는 알고리즘[1, 2, 3, 3, 5, 6, 8]         ^(lower bound of 3)1. 배열의 중간값 (mid) 를 가져옵니다.2. 중간 값과 검색 값(k)를 비교합니다. - 중간..
대규모 시스템 설계 기초 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)를 낮춤)모니터링할 지표:..

728x90
반응형