3장. 시스템 설계 면접 공략법
·
📝 끄적끄적/📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 시스템 설계 면접은 많은 사람이 단순히 지원자의 설계 능력만 평가하는 자리라고 생각하지만, 사실 그 이상이다.이 자리에서 면접관은 다음과 같은 부분까지 살펴본다.지원자가 협업에 적합한지압박감 있는 상황에서 문제 해결 자질을 보이는지모호한 문제를 건설적으로 풀어낼 수 있는지좋은 질문을 던질 능력이 있는지또한 훌륭한 면접관은 부정적 신호도 놓치지 않는다.예를 들어, 시스템 비용을 고려하지 않고 순수한 설계 원칙에만 집착하거나, 과도한 엔지니어링을 하여 tradeoff(절충)를 무시하는 모습은 감점 요인이 될 수 있다. 효과적 면접을 위한 4단계 접근법1. 문제 이해 및 설계 범위 확정바로 답부터 내지 말고, 속도를 늦추고 질문하라..
2장. 개략적인 규모 추정
·
📝 끄적끄적/📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 시스템 설계 면접을 볼 때, 때로는 시스템 용량이나 성능 요구사항을 개략적으로 추정해 보라는 요구를 받게 된다. 이건 단순히 계산 문제라기보다,주어진 문제를 구조적으로 풀어가며 합리적으로 추정할 수 있는지,시스템의 확장성과 실제성을 고려한 설계를 할 수 있는지를 보여주기 위한 것이다.💡 개략적인 규모 추정(back-of-the-envelope estimation): 보편적으로 통용되는 성능 수치상에서 사고 실행을 행하여 추정치를 계산하는 행위로써, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것이다. 개략적 규모 추정을 효과적으로 해내려면 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 하며,특히 2의 제곱수나 응답지연..
1장. 사용자 수에 따른 규모 확장성 - (3) 샤딩, 메시지 큐, 자동화
·
📝 끄적끄적/📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 무상태(stateless) 웹 계층이제 웹 계층을 수평적으로 확장하는 방법을 고민해 볼 순서다. 먼저 상태 정보(예: 사용자 세션 데이터)를 웹 서버 안에서 제거해야 한다.왜냐하면 서버마다 상태를 따로 가지고 있으면, 로드밸런서가 클라이언트 요청을 특정 서버로만 보낼 수밖에 없기 때문이다. 바람직한 전략은 이 상태 정보를 관계형 데이터베이스나 NoSQL 같은 지속성 저장소에 보관하고, 필요할 때 가져오는 방식이다. 1. 상태 정보 의존적인 아키텍처상태 정보를 보관하는 서버는 클라이언트 정보, 즉 상태를 유지하여 요청들 사이에 공유되도록 한다.사용자 A의 세션 정보나 프로파일 이미지 같은 상태 정보는 서버 1에 저장된다.사용자 A를..
1장. 사용자 수에 따른 규모 확장성 - (2) 캐시, CDN
·
📝 끄적끄적/📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 캐시웹 계층과 데이터 계층을 넘어, 시스템의 응답 시간(latency)을 개선하려면 캐시를 도입하는 것이 중요하다.응답 시간은 캐시(cache)를 붙이고 정적 컨텐츠를 콘텐츠 전송 네트워크(CDN)로 옮기면 개선할 수 있다. 캐시는 값비싼 연산 결과 또는 자주 참조되는 데이터를 메모리 보관해, 뒤이은 요청을 더 빠르게 처리할 수 있도록 돕는 저장소이다.위 설계에서는, 사용자가 웹 페이지를 새로고침할 때마다 데이터를 가져오기 위해 데이터베이스를 계속 호출한다.애플리케이션의 성능은 데이터베이스를 얼마나 자주 호출하느냐에 크게 좌우되는데, 캐시는 그런 문제를 완화할 수 있다. 캐시 계층(cache tier)캐시 계층은 데이터가 잠시 보..
1장. 사용자 수에 따른 규모 확장성 - (1) 규모 확장성의 기초
·
📝 끄적끄적/📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 단일 서버처음에는 단 한 대의 서버에서 실행되는 간단한 시스템부터 설계해 본다.웹, 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행되는 구조이다.이 구조에서 사용자 요청 처리 흐름을 살펴보자사용자는 api.mysite.com 같은 도메인 이름으로 접속한다.접속을 위해 도메인 이름 서비스(DNS)를 통해 IP 주소로 변환해야 한다. DNS는 보통 제3 사업자(third party)가 제공하는 유료 서비스를 이용하며, 시스템 내부 요소는 아니다.DNS 조회 결과로 웹 서버의 IP 주소가 반환된다.해당 IP 주소로 HTTP 요청이 전달된다.웹 서버는 요청을 처리하여 HTML 페이지나 JSON 응답을 반환한다. 데이터베이스 분..
99클럽 코테 스터디를 수료하며
·
📝 끄적끄적/항해99 코테 스터디
시작 계기 개발자 오픈채팅방에서 정보를 얻어 시작하게 된 코테 스터디를 드디어 수료하게 되어 후기를 남긴다.이직 준비로 인해 코딩 테스트를 계속 준비해야 했기에, 스스로에게 강제성을 부여하고자 시작하게 되었다. 조금 더 심화된 알고리즘 공부를 하고 싶어 자바/미들러 반을 선택했다.조금 어렵긴 했지만, 결과적으로 좋은 선택이었다고 생각한다. 확실히 뒤로 갈수록 난이도가 높아져 힘들기도 했지만 😵‍💫 그래도 만족스럽다. 강제성 부여 굿 매일 코테를 풀었는지, TIL을 작성했는지 카톡 알림이 오기 때문에 누워 있다가도 "아 맞다!" 하고 일어나서 하게 된다.최근에 면접 최탈하면서 살짝 번아웃이 와서 공부를 좀 놨는데, 이거라도 있어서 그나마 다시 책상에 앉을 수 있었다.중간에 제주도 여행을 다녀왔는데 이거..
99클럽 코테 스터디 13일차 TIL + JadenCase 문자열 만들기
·
📝 끄적끄적/항해99 코테 스터디
- 오늘의 학습 키워드JadenCase 문자열 만들기- 풀이class Solution { public String solution(String s) { StringBuilder sb = new StringBuilder(); boolean isStart = true; for (char c : s.toCharArray()) { if (c == ' ') { sb.append(c); isStart = true; } else { if (isStart) { sb.append(Character.toUpperCase(c));..