📕 book
-
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 4장. 처리율 제한 장치의 설계📕 book/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 12. 25. 13:23
네트워크 시스템에서 처리율 제한 장치(rate limiter) 는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치ex) 특정 기간 내에 전송되는 클라이언트 HTTP 요청 횟수를 제한ex) API 요청 횟수가 정의된 임계치를 넘어서면 추가 호출은 처리가 중단(block) 👍 좋은 점DoS(Denial of Service) 공격에 의한 자원 고갈(resource starvation)을 방지비용을 절감. 추가 요청에 대한 처리를 제한하면 서버를 많이 두지 않아도 됨서버 과부하를 막는다. 봇(bot)에서 오는 트래픽이나 사용자의 잘못된 이용패턴으로 유발된 트래픽을 걸러내는데 처리율 제한 장치를 활용 가능 🤔 처리율 제한 장치를 어디에 둘 것인가클라이언트 측에 둘 수도 서버 측에 둘 수 ..
-
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 3장. 시스템 설계 면접 공략법📕 book/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 12. 25. 13:07
🔍 시스템 설계 면접이 있는 이유??모호한 문제를 풀기 위해서 해결책을 찾아내는 과정에 대한 시뮬레이션정해진 결말도 정답도 없다!설계 기술을 시연하는 자리이고 설계 과정에서 내린 결정들에 대한 방어 능력을 보이는 자리이다.면접관의 피드백을 건설적인 방식으로 처리할 자질이 있음을 보이는 자리👨💼 면접관의 입장일차적 목표는 능력을 평가하는 것면접관이 시스템 설계 면접에서 찾고자 하는 것은 무엇일까?지원자가 협력에 적합한 사람인지압박이 심한 상황도 잘 헤쳐 나가는 자질이 있는지모호한 문제를 건설적으로 해결할 능력이 있는지설계의 순수성에 집착하여 트레이드 오프를 도외시하고 과도한 엔지니어링을 하는지🚶♂️ 효과적 면접을 위한 4단계 접근법1️⃣ 문제 이해 및 설계 범위 확정시스템 설계 면접 과정에서는 ..
-
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 2장. 개략적인 규모 추정📕 book/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 12. 25. 13:01
시스템 설계 면접에서 시스템 용량, 성능 요구사항을 개략적으로 추정하라는 요구를 받게됨.개략적인 규모 추정(back-of-the-envelope estimation)보편적으로 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위어떤 설계가 요구사항에 부합할 것인지 보기 위함. 2️⃣ 2의 제곱수데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지 알아야 한다.2의 x제곱근사치이름축약형101천1킬로바이트1KB201백만1메가바이트1MB3010억1기가바이트1GB401조1테라바이트1TB501000조1페타바이트1PB 🕓 응답지연 값구글의 제프 딘이 2010년에 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값을 공개한 바가 있다. 한 구글 엔지니어가 개발한 도구를 사용해 최근 기술 동향을 반영하여 20..
-
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 1장. 사용자 수에 따른 규모 확장성📕 book/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 12. 25. 12:57
이번 장에서는 한 명의 사용자를 지원하는 시스템에서 몇백만 사용자를 지원하는 시스템을 설계하는 과정에서 규모 확장성과 관계된 설계 문제를 푸는데 필요한 지식들을 학습을 해볼 수 있다. 📌 단일 서버웹, 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행 📦 데이터베이스사용자가 늘면 서버 하나로는 충분하지 않기 때문에 여러 서버를 두어야 한다.웹 / 모바일 트래픽 처리 용도데이터 베이스 용💡 웹 / 모바일 트래픽 처리 서버(웹 계층) 와 데이터베이스 서버(데이터 계층) 을 분리하면 각각을 독립적으로 확장해 나갈 수 있게 된다. ↗️ 수직적 규모 확장 vs 수평적 규모 확장🔼 수직적 규모 확장 (scale up)서버에 고사양 자원을 추가하는 행위🔀 수평적 규모 확장 (scale out)더 ..
-
🧑🏻💻 구글 엔지니어는 이렇게 일한다 (3) - 지식공유📕 book/🧑🏻💻 구글 엔지니어는 이렇게 일한다 2025. 9. 17. 00:30
🚀 3. 지식공유가장 중요한 사실은 조직에 배움의 문화가 자리 잡혀야 한다는 것이고 그러려면 사람들에게 모르는 걸 인정할 수 있도록 돕는 심리적 안전을 제공해야 합니다.📖 3.1 배움을 가로막는 장애물조직 전체에 전문성을 공유하기는 결코 쉬운 일이 아니라 배움의 문화가 견고하게 뒷받침하지 못하면 여러가지 문제에 부딪히게 됩니다. 1️⃣ 심리적 안전 부족불이익이 두려워서 스스로 위험을 감수하거나 실수를 드러내기 꺼리는 환경이 현상은 두려움이 팽배한 문화 혹은 꼭꼭 숨기려는 경향으로 나타나곤 함 2️⃣ 정보 섬조직의 각 부서가 서로 소통하거나 자원을 공유하지 않아서 지식이 파편화됩니다.이런 환경에서는 일하는 방식을 각각의 부서가 제각기 만들어나가서 여러 현상이 나타남정보 파편화정보 중복정보 왜곡 3️⃣ ..
-
🧑🏻💻 구글 엔지니어는 이렇게 일한다 (2) - 팀워크 이끌어내기📕 book/🧑🏻💻 구글 엔지니어는 이렇게 일한다 2025. 9. 2. 09:47
🚀 2. 팀워크 이끌어내기이 주제를 논하려면 여러분이 반드시 통제해야 하는 하나의 변수, 즉 ‘여러분 자신’ 을 조망하는 데서 시작해야 합니다.사람은 완벽하지 않습니다.그래서 인간을 ‘간헐적 버그들의 집합’에 가깝다고 이야기하곤 하죠.하지만 동료에 내재된 버그를 이해하려면 무엇보다 여러분 내면에 서식하는 버그를 먼저 이해해야 합니다. 이번 장의 핵심 주제는 소프트웨어 개발은 ‘팀의 단합된 노력’의 결실이라는 점입니다.그래서 엔지니어링팀이 (혹은 어떤 형태든 창의적 협업이) 성공하려면 겸손, 존중, 신뢰라는 핵심 원칙에 맞게 여러분 자신의 행동을 바로잡아야 합니다. 📖 2.1 내 코드를 숨기고 싶어요.사람들은 자신이 진행 중인 작업물을 다른 사람이 보고 판단하는걸 두려워합니다.이런 두려움은 인간의 본성..
-
🧑🏻💻 구글 엔지니어는 이렇게 일한다 (1) - 소프트웨어 엔지니어링📕 book/🧑🏻💻 구글 엔지니어는 이렇게 일한다 2025. 8. 31. 11:51
🚀 1. 소프트웨어 엔지니어링소프트웨어 엔지니어링은 흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한 것이다.-구글- 소프트웨어 엔지니어링에서 프로그래밍이 큰 비중을 차지하는 건 틀림없지만 프로그래밍은 결국 새로운 소프트웨어를 제작하는 수단입니다.이 차이를 받아들인다면 자연스럽게 프로그래밍 작업(개발, development)과소프트웨어 엔지니어링 작업(개발 / development + 수정 / modification + 유지보수 / maintenance)의 차이도 궁금할 것입니다. 시간이라는 요소가 더해지면서 프로그래밍에는 중요한 차원이 하나 늘어서 더 입체적으로 바뀝니다.시간이 프로그램에 미치는 영향을 알아보려면 “이 코드의 예상 수명은?” 이라는 질문을 던져보면 좋습니다.짧게 생을 마감하는 코..
-
4장. 카프카 상세 개념 - 토픽과 파티션📕 book/아파치 카프카 2023. 1. 17. 13:52
4장. 카프카 상세 개념 - 토픽과 파티션 ⭐ 토픽과 파티션 토픽은 카프카의 시작과 끝이다. 토픽을 만들면서 카프카를 사용하기 시작한다. 토픽에 대해 잘 이해하고 설정을 잘하는 것이 카프카를 통한 데이터 활용도를 높이는 것이다!! 📌 적정 파티션 개수 토픽의 파티션 개수는 카프카 성능과 관련있다. 토픽 생성 시 파티션 개수 고려사항 데이터 처리량 메시지 키 사용 여부 브로커, 컨슈머 영향도 데이터 처리량 파티션은 카프카 병렬처리의 핵심이다. 파티션의 개수가 많아질 수록 매핑되는 컨슈머 개수가 증가하기 때문 따라서, 파티션 개수를 정할 때 토픽에 필요한 데이터 처리량을 측정해 정하는 것이 중요 파티션 개수만큼 컨슈머 스레드를 운영하면 토픽의 병렬처리를 극대화 할 수 있다. 👀 컨슈머 전체 데이터 처리량이 ..