본문 바로가기

분류 전체보기78

4장 처리율 제한 장치의 설계 (3) 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 4장 처리율 제한 장치의 설계 4장 처리율 제한 장치의 설계 (1) 4장 처리율 제한 장치의 설계 (2) – 알고리즘 정리 에서 이어지는 글입니다. 3단계 상세 설계 더 생각 해봐야 할 부분들 - 처리율 제한 규칙은 어떻게 만들어지고 어디에 저장되는가? - 처리가 된 요청들은 어떻게 처리되는가? - 분산 환경에서는 어떻게 처리할 것인가? 처리율 제한 규칙 처리율 제한 규칙은 보통 설정 파일 형태로 디스크에 저장된다. 리프트(Lyft, 미국의 승차 공유 서비스기업이다.)는 처리율 제한에 오픈 소스를 사용하고 있다. https://github.com/envoyproxy/ratelimit (Lyft 의 reposi.. 2023. 5. 18.
4장 처리율 제한 장치의 설계 (2) - 알고리즘 정리 처리율 제한 알고리즘 널리 알려진 인기 알고리즘은 다음과 같은 것들이 있다. - 토큰 버킷 (token bucket) - 누출 버킷 (leaky bucket) - 고정 윈도 카운터 (fixed window counter) - 이동 윈도 로그 (sliding window log) - 이동 윈도 카운터 (sliding window counter) 토큰 버킷 알고리즘 보편적으로 사용되는 알고리즘 아마존과 스트라이프가 API 요청을 통제(throttle)하기 위해 사용 동작 원리 토큰 버킷은 지정된 용량을 갖는 컨테이너이다. 이 버킷에는 사전 설정된 양의 토큰이 주기적으로 채워진다. 토큰이 꽉 찬 버킷에는 더 이상의 토큰은 추가되지 않는다. 버킷이 가득 차면 추가로 공급된 토큰은 버려진다. 각 요청은 처리될 때.. 2023. 5. 18.
4장 처리율 제한 장치의 설계 (1) 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 4장 처리율 제한 장치의 설계 처리율 제한 장치 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치다. 특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다. 임계치를 넘어서면 추가로 도달한 모든 호출은 처리가 중단된다. 영어로는 Rate Limit. 처리율 제한 장치를 두면 좋은 점 - DOS 공격에 의한 자원 고갈을 방지할 수 있다. - 비용을 절감한다. 서버를 많이 두지 않아도 되고, 우선순위가 높은 다른 API에 더 많은 자원을 할당할 수 있다. - 서버 과부하를 막는다. 봇이나 사용자의 잘못된 이용 패턴으로 유발된 트래픽을 걸러낼 수도 있다. 1단계 문제 이해 및 설계 범위 확.. 2023. 5. 17.
6장 동기화 도구들 연습문제 공룡책 (Operating System Concepts) 10th 개인적인 생각이므로 틀린 답변일 수 있습니다. 6.1 6.4절(동기화를 위한 하드웨어 지원 - Hardware support for synchronization)에서 인터럽트를 자주 비활성화하면 시스템 클록에 영향을 줄 수 있다고 언급했다. 왜 이런 일이 발생할 수 있고 그러한 영향을 최소화할 수 있는 방법에 대해 설명하라. 일단 6.4절이 아니다. 6.2절이다. 이거 찾느라 한참 걸렸다. (번역 오류가 아니다 원본에서 잘못 적은 것이다.) 문제에서 가리키는 부분은 다음과 같은 내용이다. 다중 처리기에서 인터럽트를 비활성화하면 시간이 많이 걸릴 수 있다. 이 메시지 전달은 각 임계구역으로의 진입을 지연시키고 시스템 효율성을 떨어뜨린다. 또.. 2023. 5. 16.
5장 CPU 스케줄링 연습문제 공룡책 (Operating System Concepts) 10th 개인적인 생각이므로 틀린 답변일 수 있습니다. 5.1 CPU 스케줄링 알고리즘은 스케줄 된 프로세스의 실행 순서를 결정한다. 하나의 프로세서에게 n개의 프로세스를 스케줄 하면 몇 개의 다른 스케줄이 가능한가? n에 대한 공식을 제시하라. n! = n x (n-1) x (n-2) x ... x 2 x 1 첫 프로세스를 선택하는 경우의 수 : n 두번째 프로세스를 선택하는 경우의 수 : n - 1 세번째 프로세스를 선택하는 경우의 수 : n - 2 … 이런식으로 쭉 이어나가면 위에 공식에 적은 것 처럼 n 팩토리얼 이 된다. 5.2 선점 스케줄링과 비선점 스케줄링의 차의점을 설명하라. 선점 스케줄링 : 현재 실행 중인 프로세스를 상황에 따라 .. 2023. 5. 16.
5장 목과 테스트 취약성 (3) 단위테스트 (블라디미르 코리코프) 5장 목과 테스트 취약성 (1) 5장 목과 테스트 취약성 (2) 에서 이어지는 글입니다. 2. 식별할 수 있는 동작과 구현 세부 사항 테스트에 거짓 양성이 있는 (리팩터링 내성에 실패하는) 주요 이유는 코드의 구현 세부 사항과 결합돼 있기 때문이다. 이러한 강 결합을 피하기 위해서는 최종 결과(식별할 수 있는 동작)를 검증하고 구현 세부 사항과 테스트를 가능한 한 떨어뜨려야 한다. 테스트는 “어떻게”가 아니라 “무엇”에 중점을 둬야한다. 2.1 식별할 수 있는 동작은 공개 API와 다르다 모든 제품 코드는 2차원으로 분류할 수 있다. - 공개 API 또는 비공개 API - 식별할 수 있는 동작 또는 구현 세부 사항 코드의 공개성은 private, public, inter.. 2023. 5. 12.