[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 6. 키-값 저장소 설계
📚 개발 도서2025. 7. 29. 15:19[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 6. 키-값 저장소 설계

개발에서 키-값은 굉장히 중요하다. 데이터를 저장할 때 이름표처럼 붙는 고유한 식별자인 키를 기준으로 원하는 값을 빠르게 찾아낼 수 있다. NoSQL에서도 저장된 값을 가져올 때 키(key)를 식별자로 값을 꺼내온다. 이러한 연결 관계를 "키-값" 쌍 이라고 한다. 키는 식별자이기 때문에 중복될 수 없다. name과 같이 일반 텍스트가 키가 될 수 있고, 리스트 혹은 해시 값이 키일 수도 있다. 성능상 키의 길이가 짧을수록 좋다. 6장에서는 이러한 키-값 쌍을 저장하고(put), 키에 달려있는 값을 꺼내는(get) 키-값 저장소를 설계해 볼 것이다. 문제 이해 및 설계 범위 확정완벽한 설계는 없지만, 우리는 최대한 균형잡힌 저장소를 설계해야 한다. 데이터 일관성과 가용성 사이에서 타협적 결정을 내린 설계..

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 5. 안정 해시 설계
📚 개발 도서2025. 7. 25. 01:27[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 5. 안정 해시 설계

대규모 시스템 설계를 하기 위해서는 기본적으로 스케일 업보다 스케일 아웃이 좋다고 배웠다. 스케일 아웃을 적용하면서 여러 대의 서버를 둘 때 주의할 점은 데이터를 각 서버에게 균등하게 나누어주는 것이다. 5장에서 배울 안정 해시가 서버에게 데이터를 균등하게 나누어줄 때 사용된다. 이어서 안정 해시에 대해서 알아보도록 하겠다. 해시 키 재배치 문제 (rehash)N개의 캐시 서버가 있다고 가정했을 때, 이 서버에게 균등하게 부하를 나누려면 해시 함수를 이용해야 한다. 해시 값을 서버의 개수 N개로 나눈 나머지를 인덱스로 삼고 해당 서버에 저장하면 된다.serverIndex = hash(key) % N // N은 서버의 개수 4대의 서버를 사용하는 예제로 해시가 어떻게 동작하는지 알아보겠다. 키해시해시 % ..

[Tistory] 다크모드 색상 충돌 오류
일반2025. 7. 25. 01:27[Tistory] 다크모드 색상 충돌 오류

문제최근 개발 도서를 읽고 정리한 내용을 블로그로 작성하고 있는데, 라이트모드에서는 깔끔하게만 보였던 내용이 다크모드에서는 원하는대로 보이지 않는 오류가 있었다. 라이트모드에서는 흰색 바탕에 검은색 글씨로 잘 보이는데, 다크모드에서는 검은색 바탕에 흰색 글씨를 기대한 것 과 달리 흰색 바탕에 흰색 글씨가 적용되는 오류가 있었다. 참고로 내가 사용하고 있는 티스토리 스킨은 Bluemiv님의 Berry 스킨이다. (깔끔하고 예뻐서 마음에 든다..!!)원인 원인은 바로 복사-붙여넣기한 콘텐츠에 포함된 인라인 스타일이 테마 색상보다 우선적으로 적용이 되어서 텍스트가 보이지 않았다.이를 해결하기 위해 다른 블로그도 참고해봤지만 별다른 소득을 얻을 수는 없었다. 해결방법jQuery의 기능들을 이용하여 DOM을 순..

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 4. 처리율 제한 장치의 설계
📚 개발 도서2025. 7. 24. 15:58[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 4. 처리율 제한 장치의 설계

3장까지는 사용자의 수에 따라 설계의 규모를 확장하고, 규모를 측정하는 방법과 면접에 대비하는 전략에 대해서 알아보았다. 4장은 처리율 제한 장치에 대한 개념과 구현하는 방법, 알고리즘에 대해 설명한다. 처리율 제한 장치(rate limiter)란 트래픽의 처리량을 제어하기 위한 장치이다. 만약 짧은 시간 안에 같은 클라이언트로부터 많은 HTTP 요청이 들어오거나, API 요청 횟수가 임계치를 넘어가면 처리율 제한 장치가 이를 제한할 수 있다. 다음과 같은 사례가 있다. ⦁ 사용자는 초당 2회 이상 새 글을 올릴 수 없다. ⦁ 같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다. ⦁ 같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없다. 또한 처리율 제한 장치를 도입함으로써 Do..

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 3. 개략적인 규모 측정
📚 개발 도서2025. 7. 21. 17:29[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 3. 개략적인 규모 측정

시스템 설계 면접을 보면 다음과 같은 질문을 받을 수 있다. "널리 알려진 페이스북 제품을 설계해 보세요."이러한 제품은 뛰어난 설계자와 개발자가 참여해서 개발한 제품이기 때문에 한 시간 안에 설계하는 것도 불가능할뿐더러, 면접관은 그정도의 요구를 하지 않는다. 시스템 설계 면접은 모호한 문제를 풀기 위해 해결책을 찾아내는 과정을 평가하기 위함이다. 그렇기 때문에 정답도 없고, 정해진 결말도 존재하지 않는다.이번 3장에서는 시스템 설계 면접에 대한 유용한 팁을 살펴보고 문제를 공략하는 접근법을 소개해보겠다. 효과적 면접을 위한 4단계 접근법1단계: 문제 이해 및 설계 범위 확정시스템 설계 면접에서는 빠르게 답을 내놓는 행위는 오히려 독이다. 학생 때 시험을 빨리 풀고 1등으로 나가는 학생은 그 때는 멋있..

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2. 개략적인 규모 측정
📚 개발 도서2025. 7. 20. 00:35[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2. 개략적인 규모 측정

2장에서는 시스템의 용량이나 성능 요구사항을 개략적으로 추정해 볼 수 있는 방법에 대해서 소개해보겠다. 개략적 규모 추정을 위해서는 2의 제곱수, latency 값, 가용성 과 관련되 수치들을 이해하고 있어야 한다.2의 제곱수분산 시스템이 다루는 데이터은 매우 크지만, 기본적으로 데이터 볼륨의 단위를 2의 제곱수로 표현한다. 최소단위인 1바이트(Byte)는 8비트로 구성된다. ASCII 문자 하나가 차지하는 메모리 크기가 바로 1바이트이다. 다음은 데이터 볼륨 단위를 2의 제곱수로 표현한 표이다. 2의 x제곱근사치이름축약형101천 (thousand)1킬로바이트 (Kilobyte)1KB201백만 (million)1메가바이트 (Megabyte)1MB3010억 (billion)1기가바이트 (Gigabyte)1..

[가상 면접 사례로 배우는 대규모 시스템 설계 기초]  1. 사용자 수에 따른 규모 확장성
📚 개발 도서2025. 7. 18. 16:02[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 1. 사용자 수에 따른 규모 확장성

오랜만에 스터디를 진행하게 되었다.이제껏 진행했던 스터디는 인프런에서 강의를 듣고 블로그에 정리해서 올리거나 / 알고리즘 문제를 풀고 발표하는 스터디였기에, 책을 읽고 정리하는 스터디는 처음이다. 그래서 그런지 더욱 기대되는 기분이 든다. 이 책은 가상 면접 사례로 배우는 대규모 시스템 설계 기초로, 쉽게 접해보지 못했던 대규모 시스템의 설계부터 면접 질문에 대한 접근법도 대화식으로 풀어나가 빠른 이해에 도움이 될 것 같다!1장은 사용자 수에 따른 규모 확장성에 대하여 이야기한다.단일 서버로 시작하는 작은 규모에서 시작하여 100만 사용자까지 수용 가능한 서비스를 위한 설계로 업그레이드 하면서, 그 과정에서 어떤 장비나 기술이 사용되는지 설명해준다. 단일 서버단일 서버는 말 그대로 한 대의 서버에서 웹 ..

CPU 스케줄러 & 스케줄링 평가
⚙️ Computer Science/OS2025. 4. 14. 20:17CPU 스케줄러 & 스케줄링 평가

스케줄링 인기 있는 식당에 가면 항상 웨이팅을 섰던 경험이 있을 것이다. 요즘은 번호표를 받기보다는 가게 외부에 이름과 인원수를 적었던 것 같다..우리의 차례가 오면 홀 직원이 우리팀을 안내해주고, 메뉴를 받아준다. 이 홀 직원은 우리 팀 뿐만 아니라 다른 팀의 식사도 관리해야 한다.테이블 별 식사 속도도 측정해서 주방장에게 먼저 제공되어야 할 요리도 관리해주는 역할을 수행한다.오늘 다룰 CPU 스케줄링은 마지 앞서 소개했던 홀 직원이랑 비슷하다. CPU 스케줄러 CPU는 프로세스 단위로 작업을 처리한다. 식당에서 식사하는 팀의 식사속도에 의하여 음식을 관리하는 것처럼, 작업 간 효율적으로 자원을 할당하고 공유를 하기 위하여 관리자가 필요하다.CPU 스케줄러가 이 역할을 수행하게 된다. CPU 스케줄러..

스레드란?
⚙️ Computer Science/OS2025. 4. 4. 20:30스레드란?

스레드란? 스레드(Thread)는 프로세스 내에서 실행되는 흐름의 단위를 의미한다.이 때, 작업 단위는 입장에 따라서 달라질 수 있다.운영체제의 입장에서의 작업단위는 프로세스이고, CPU의 입장에서의 작업단위는 스레드인 것이다. 코스요리를 생각해보자.샐러드 → 스테이크 → 디저트 순서가 있다고 치면 샐러드, 스테이크와 같은 개별 요리는 독립적이기 때문에 프로세스라고 볼 수 있다.다른 접시와 다른 조리도구 등으로 서로 약하게 연결되어있기 때문에, 샐러드 조리 순서는 스테이크에 영향이 없다. 하지만 개별 요리 안에서는 스레드가 존재한다. 해야하는 일을 스레드라고 할 때 스테이크 굽기 정도에 따라서 일의 순서가 달라질 수 있다.미디엄으로 굽는다면 채소를 먼저 굽고 고기를 구워야 한다. 하지만 웰던으로 주문이 ..

프로세스란?
⚙️ Computer Science/OS2025. 4. 1. 14:11프로세스란?

프로세스란?컴퓨터를 사용하다 보면 "프로그램"과 "프로세스"라는 용어를 자주 접하게 된다. 두 단어는 비슷하게 느껴지지만, 운영체제 관점에서는 명확히 구분되는 개념이다. 프로그램이란 저장장치에 저장되어 있는 정적인 소프트웨어를 의미한다. 즉, 실행되기 전의 코드 덩어리라고 볼 수 있다.그 예시로 레시피가 바로 프로그램에 해당한다. 레시피에는 요리를 만들기 위한 조리법이 적혀있지만, 레시피 자체로는 아무 일도 일어나지 않는다. 반면에 프로세스란 실행을 위해 메모리에 올라온 상태로, CPU에 의해 주기적으로 처리되는 소프트웨어이다.레시피를 보고 실제로 요리를 시작하는 것이 바로 프로세스다. 레시피를 따라서 재료를 손질하고, 불을 올리고, 조리를 하는 모든 과정이 프로세스에 해당된다. 프로그램이 실행되면 운영..

image