Garbage Collection Python의 GC는 기본적으로 암묵적으로 진행된다. 어떻게 암묵적으로 진행되는지는, PEP 556에 따르면 기회주의적으로 따른다고 한다. 새로운 allocation이 진행될 때, allocation을 통계적으로 연산하여 휴리스틱하게 진행된다고 한다. 이를 보고 implicitly opportunistic 이라고 한다. GC를 명시적으로 collect 하기 위해선 다음 코드를 수행해야한다. gc.collect() 자, 그럼 어떻게 암묵적으로 또는 명시적으로, 어떤 GC를 진행하고 있는 것일까? Reference Counting Python GC는 기본적으로 reference count로 수행된다. reference count 란 C++ 의 shared ptr과 동작방식이..
이번에는 grafana cloud 에서 alert를 설정하는 것을 알아보겠습니다. prometheus 에서 alert rule을 설정하는데 두 가지 방법이 있는데 하나는 alertmanager 이고, 하나는 grafana에서 설정하는 방법입니다. grafana 4.0 이전 버전에서는 alert rule을 사용할 수 없어, prometheus/alertmanager https://github.com/prometheus/alertmanager 을 추가적으로 설정해줘야합니다. 다행히도 현재 grafana 또는 grafana cloud 에서는 사용할 수 있습니다. Alert Rule에 새로운 rule을 추가해봅시다. node-exporter 에서 지원하며 추적할 metric을 추가하고(A), 그리고 B, C에 ..
이번 포스팅에서는 프로메테우스와 그라파나 클라우드를 설정하는 방법이 가능하다는 것을 포스팅 해보려고 합니다. 현재는 무급으로 작은 사이드 프로젝트(스트리머 우왁굳)에 참여하고 있습니다. 팬이라서.. 프로메테우스 를 설치하는 것은 k8s 또는 머신에 설치하는 방법 두 가지가 있으나, 저희 팀은 k8s를 사용하지 않기 때문에 머신에 설치할 예정이었습니다. 설치하는 방법은 prometheus의 GETTING STARTED 를 참고하면됩니다 만 .. https://prometheus.io/docs/prometheus/latest/getting_started/ Getting started | Prometheus An open-source monitoring system with a dimensional data ..
항상 주변을 단정히 정돈하는 사람은 단지 찾기를 너무 귀찮아하는 사람이다. - 독일 속담 가장 기본적인 수준에서 데이터베이스는 두 가지 작업을 수행한다. 어떤 데이터를 받으면 데이터를 저장하고 나중에 그 데이터를 요청하면 다시 데이터를 제공한다. 2장에서 애플리케이션 개발자가 데이터베이스에 데이터를 제공하는 형식을 설명했다. 그리고 나중에 다시 요청할 수 있는 메커니즘인 데이터 모델과 질의 언어도 살펴봤다. 이번 장에서는 같은 내용을 데이터베이스 관점에서 살펴본다. 즉, 데이터베이스가 데이터를 저장하는 방법과 데이터를 요청했을 때 다시 찾을 수 있는 방법을 설명하겠다. 데이터베이스가 저장과 검색을 내부적으로 처리하는 방법을 애플리케이션 개발자가 주의해야 하는 이유는 무엇일까? 대개 애플리케이션 개발자가 ..
맵리듀스 질의 맵리듀스(MapReduce)는 많은 컴퓨터에서 대량의 데이터를 처리하기 위한 프로그래밍 모델로, 구글에 의해 널리 알려졌다. 몽고DB와 카우치DB를 포함한 일부 NoSQL 데이터 저장소는 제한 된 형태의 맵리듀스를 지원한다. 이 메커니즘은 많은 문서를 대상으로 읽기 전용(read-only) 질의를 수행할 때 사용한다. 전반적인 맵리듀스는 10장에서 자세히 설명하고 지금은 몽고DB의 모델사용에 대해 간단히 살펴본다. 맵리듀스는 선언형 질의 언어도 완전한 명령형 질의 API도 아닌 그 중간 정도에 있다. 질의 로직 처리 프레임워크가 반복적으로 호출하는 조각 코드로 표현한다. 맵리듀스는 여러 함수형 프로그래밍 언어에 있는 map(collect라고도 함)과 reduce(fold나 inject라고도..
내 언어의 한계는 내 세계의 한계를 의미한다. - 루트비히 비트겐슈타인 데이터 모델은 아마도 소프트웨어 개발에서 제일 중요한 부분일 것이다. 왜냐하면 데이터 모델은 소프트웨어가 어떻게 작성됐는지 뿐만 아니라 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 지대한 영향을 미치기 때문이다. 대부분의 애플리케이션은 하나의 데이터 모델을 다른 데이터 모델 위에 계층을 둬서 만든다. 각 계층의 핵심적인 문제는 다음 하위 계층 관점에서 데이터 모델을 표현하는 방법이다. 예를 들어보자. - 애플리케이션 개발자는 현실(사람, 조직, 상품, 행동, 자금 흐름, 센서 등)을 보고 객체나 데이터 구조, 그리고 이러한 데이터 구조를 다루는 API를 모델링한다. 이런 구조는 보통 애플리케이션에 특화돼 있다. - 데이터 구조..
오늘날 많은 애플리케이션은 계산 중심(compute-intensive)과는 다르게 데이터 중심(data-intensive)적이다. 이러한 애플리케이션의 경우 CPU 성능은 애플리케이션을 제한하는 요소가 아니며, 더 큰 문제는 보통 데이터의 양, 데이터의 복잡도, 데이터의 변화속도다. 일반적으로 데이터 중심 애플리케이션은 공통으로 필요로 하는 기능을 제공하는 표준 구성 요소(standard building block)으로 만든다. 예를 들어, 많은 애플리케이션은 다음을 필요로 한다. - 구동 애플리케이션이나 다른 애플리케이션에서 나중에 다시 데이터를 찾을 수 있게 데이터를 저장(데이터베이스) - 읽기 속도 향상을 위해 값비싼 수행 결과를 기억(캐시) - 사용자가 키워드로 데이터를 검색하거나 다양한 방법으로..
구글 드라이브, 드롭박스, 마이크로소프트 원드라이브, 애플 아이클라우드 등의 클라우드 저장소 서비스는 최근 높은 인기를 누리게 된 대표적 클라우드 서비스다. 이번 장에서는 그 가운데 구글 드라이브 서비스를 설계해 보도록 할 것이다. 설계에 들어가기 앞서 일단 구글 드라이브 서비스가 어떤 서비스 인지 알아보자. 구글 드라이브는 파일 저장 및 동기화 서비스로, 문서, 사진, 비디오, 기타 파일을 클라우드에 보관할 수 있도록 한다. 이 파일은 컴퓨터, 스마트폰, 태블릿 등 어떤 단말에서도 이용 가능해야 한다. 아울러 보관된 파일은 친구, 가족, 동료 들과 손쉽게 공유할 수 있어야 한다. 1 문제 이해 및 설계 범위 확정 구글 드라이브를 설계하는 것은 큰 프로젝트다. 그러니 질문을 통해 설계 범위를 좁혀야 한다..
이번 장에서는 유튜브 시스템을 설계하는 면접 문제를 풀어볼 것이다. 이 문제에 대한 답은 넷플릭스나 훌루 같은 비디오 플랫폼을 설계하는 문제에도 적용 가능하다. 유튜브 시스템은 언뜻 보기에는 간단하다. 콘텐츠 창작자가 비디오를 올리고, 시청자는 재생 버튼을 누른다. 그런데 정말 그렇게 간단한가? 실제로는 그렇지 않다. 이 단순성 이면에는 엄청나게 복잡한 수많은 기술이 숨어 있다. 유튜브에 대한 놀라운 통계자료 몇 가지를 살펴보자. 20202년에 조사된 결과다. - 월간 능동 사용자 수: 2십억 - 매일 재생되는 비디오 수: 5십억 - 미국 성인 가운데 73%가 유튜브 이용 - 5천만 명의 창작자 - 유튜브의 광고 수입은 2019년 기준으로 150억 달러이며 이는 2018년도 대비 36% 증가한 수치 - ..
구글 검색 또는 아마존 웹 사이트 검색창에 단어를 입력하다 보면 입력 중인 글자에 맞는 검색어가 자동으로 완서오디어 표시되는 것을 볼 수 있다. 이런 기능은 보통 검색어 자동완성(autocomplete, typeahead, search-as-you-type, incremental search)이라 부른다. 검색어 자동완성은 많은 제품에 중요하게 사용되는 기능이다. 이번 장에서는 이와 관련하여, 가장 많이 이용된 검색어 k개를 자동완성하여 출력하는 시스템을 설계해보도록 하자. 1 문제 이해 및 설계 범위 확정 시스템 설계 면접의 첫 단계는 적절한 질문을 통해 요구사항을 분명히 하는 것이다. 아래는 본 설계 면접 문제와 관련한 질문과 답변 예제다. 지원자: 사용자가 입력하는 단어는 자동완성될 검색어의 첫 부..
- Total
- Today
- Yesterday
- 대규모 시스템 설계 기초
- Discrete Mathematics
- 그라파나
- flutter
- beginning javascript
- 아레나시뮬레이션
- Arena
- 로젠
- javascript
- 이산수학
- 이산 수학
- 조합 코딩
- arena simulation
- 명제논리
- 최단경로 알고리즘
- 아레나 시뮬레이션
- rosen
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 아레나
- 자바스크립트
- 백준
- grafana cloud
- 데이터 중심 애플리케이션 설계
- 자바스크립트 예제
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- Trie
- 시뮬레이션
- Simulation
- paul wilton
- Propositional and Predicate Logic
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |