지표 데이터는 통상 시계열 데이터로 기록한다.예시또한, 통상적으로 행 프로토콜(line protocol)을 따른다.예시이러한 형태의 데이터를 관리하는데에서, 쓰기 부하가 주로 발생하며 그 양이 매우 많다.이에 비해 읽기 부하는 매우 적다고 볼 수 있다.필요한 경우에만
최근 현업에 Jest를 도입하고자 하는데요, 이를 위해 Jest와 같은 테스트 프레임워크를 좀 더 깊이있게 이해하고 싶어졌습니다.그래서 이번에는 Jest의 주요 기능들을 직접 구현해보면서, 테스트 프레임워크의 동작 원리를 공부해보려고 합니다.아래에도 작성해두겠지만, 작
인프라의 상태를 선제적으로 파악하고, 이를 통해 보다 높은 가용성과 안정성을 달성하는 것을 목표로 한다.모니터링 시스템의 예시Datadog(https://www.datadoghq.com/)InfluxDB(https://www.influxdata.com
메시지 필터링 대신 토픽을 사용할 수도 있다. 하지만 아래와 같은 이유로 메시지 필터링이 필요할 수 있다.그러나 매번 새로운 토픽을 만드는 것은 비효율적이다.또한 토픽을 만들 때마다 새로운 파티션을 만들어야 하므로, 파티션의 수가 급증할 수 있다.마지막으로 토픽을 만드
아래의 주요 컴포넌트들에 대한 규모 확장성을 고려해야 한다.생산자소비자브로커파티션생산자는 그룹 단위의 조정과 무관하므로, 상대적으로 어렵지 않게 확장/축소가 가능하다.소비자 그룹은 서로 독립적이므로 확장/축소가 쉽다.소비자 그룹 내의 소비자가 추가/삭제되면 재조정(re
장점: 지연시간이 짧다.단점소비자에게 큰 부하가 걸릴 수 있다.소비자는 생상자의 속도에 맞출수 있도록 컴퓨팅 자원을 더 많이 확보해두어야 한다.장점메시지 소비 속도를 소비자가 결정한다.소비자별 실시간/배치처리 등 다양한 방식으로 메시지를 처리할 수 있다.배치 처리에 적
주요 개념로테이션 디스크수정하지 않는 메시지 저장 방식일괄 처리 방식메시지 큐의 데이터 패턴은 아래와 같다.읽기와 쓰기가 빈번하게 발생한다.갱신/삭제 연산은 발생하지 않는다.전통적인 메시지 큐는 메시지가 적절히 소비되지 않는 경우를 제외하고 메시지를 지속 보관하지 않는
다양한 서비스에서 메시지 큐를 통해 아래와 같은 이점을 얻을 수 있다.결합도 완화(decoupling): 컴포넌트 사이의 강결합을 끊을 수 있다.규모 확장성: 생산자(Producer)와 소비자(Consumer)를 분리하여 규모를 확장할 수 있다.가용성 개선: 특정 컴포
경로 안내 서비스는 아래와 같은 주요 컴포넌트로 구성할 수 있다.지오코딩 서비스경로 계획 서비스최단 경로 서비스예상 도착 시간 서비스순위 결정 서비스중요 정보 갱신 서비스적응형 ETA와 경로 변경주소를 위경도로 변환하는 서비스가 필요하다.구글 지오코딩 API의 요청/응
주요 데이터경로 안내 타일 데이터사용자 위치 데이터지오코딩 데이터지도 타일 데이터외부 사업자나 기관이 제공한 데이터를 활용한다.매우 큰 데이터이고,끊임없이 개선되고 변경된다.그래프 구조로 가공되지 않은 외부 데이터이므로 별도의 가공이 필요하다.따라서 '경로 안내 타일
저장해야 할 데이터는 크게 세 종류로 구분 할 수 있다.세계지도(지도 타일)메타데이터(지오해싱 등)도로 정보(경로 타일)Q? 메타데이터를 굳이 따로 명시한 이유가 있을까?저자가 메타데이터를 강조하고 싶었던걸까?앞서 다루었듯, 지도 타일은 확대수준별로 한벌씩 준비해두어야
이번 과제에서 집중해야 할 포인트는 아래와 같다.사용자 수는 10억 DAU주요 기능은 위치 갱신, 경로안내, ETA, 지도 표시에 초점을 맞춘다.도로 데이터는 수 TB 수준교통 상황 고려다양한 교통수단 지원사용자 위치 갱신경로 안내 서비스(ETA 포함)지도 표시정확도:
이전의 통신 웹소켓을 통해, 친구 추가/삭제 이벤트도 핸들링 할 수 있다.이와 같은 방식의 콜백을 사용해서 위치정보 전송 허가/취소하는 경우도 처리 할 수 있다.이러한 구조에서, 친구가 많은 사용자로 인해 시스템 성능에 문제가 발생 할 수 있는지에 대한 고려가 필요하다
이전 단계에서 구상한 간단한 구성은 현재 요구사항과 같은 대규모 서비스에서는 문제가 생길 수 있다.RESTful API 서버는 무상태성이고, 확장 방법이 널리 알려져 있으므로 생략한다.웹소켓 서버는 상태를 가진다.따라서 클러스터를 축소하는 경우에는 각별한 주의가 필요하
제가 JavaScript로 개발을 시작하면서 가장 흥미(괴)로웠던 부분 중 하나는 비동기 처리 방식이었습니다. JS는 멀티패러다임 언어답게 특유의 이렇게 해도 되고 저렇게 해도 되는 문법들이 많은데, 특히 비동기 처리 방식은 정말 똑같은 처리를 이렇게까지 다르게 표현
어떻게 보면 1장의 근접성 서비스와 굉장히 유사해 보일 수 있음.그러나 큰 차이가 하나 있는데, 사업장의 위치 정보는 정적이지만 친구의 위치 정보는 동적이라는 것이다.'주변'의 정의 - 얼마나 가까워야 '주변'인가?: 5mile예상되는 사용자의 수: 1억명사용자의 이동
주요 관심사데이터베이스 규모 확장지리정보 색인의 규모 확장캐시지역 및 가용성 구현시간대, 사업장 유형에 따른 검색최종 아키텍처 다이어그램위치 기반 서비스를 이전 단계에서 LBS 서비스와 사업장 서비스, 두 개로 나누었다.LBS 서비스사업장 서비스즉, 각 위치정보(지오해
근접성 서비스(proximity service)는 네이버, 카카오, 구글 지도 등의 사용자의 위치를 기반으로 주변 정보를 제공하는 서비스를 말한다.특정 프로덕션 앱의 모든 기능을 주어진 시간 내에 설계하지 못하는 것은 당연하다.어느 수준까지, 어느 부분을 중점적으로 설
스터디명: 리트코드 스터디(leetcode-study)🛫 해외취업을 위한 오픈소스 기반 알고리즘 스터디기간: 2024.08.11 ~ 2024.11.17 / 15주인원: 50명 / 9명(시작 / 완료)목표: LeetCode Blind 75 문제 풀이 및 상호 피드백방식
안녕하세요!오늘은 Javascript에 대해 이야기를 해볼까 합니다. 그중에서도 지금의 제가 JS를 좋아하게 된 이유에 대해 이야기해보려고 하는데요, 재미있게 읽어주시면 좋겠습니다.제가 프로그래밍을 처음 시작할때 사용했던 언어는 Python이었습니다.단순하고 빠르게 무