안녕하세요! 시스템 개발 및 설계 과정에서 '대규모 시스템', '분산 환경', '분산 데이터 모델링'과 같은 개념들을 본격적으로 고려하고 도입해야 하는 시점은 언제일까요? 실무에서 경험해보지 못해서 '대규모' 라는 말이 막연해서 실무에서 어떤 것을 기준으로 고려하는지 혹은 지표 같은 것을 측정하는 방법이 있는지 궁금해서 질문 드립니다!
예시로 들었던 '게시판 별 게시글' 같은 인덱스 테이블에서 B Tree 인덱스를 사용하면 된다는 식으로 말씀하셨습니다. 근데 전통적인 RDBMS에는 샤딩 기능조차 존재하지 않는데, 분산된 데이터베이스에서도 테이블 수준의 B Tree 인덱스처럼 동작하는 것처럼 말씀하신 것 같아, 이것이 맞는지 문의 드립니다.
안녕하세요. 채팅시스템 1:1 메시지 플로우에서 질문드립니다 chat server i chat server j ... chat server n 존재할때 각 클라이언트는 서로다른 서버에 websocket 프로토콜로 연결이 되어있을꺼 같은데요 이때 i 서버에 있는 sender 가 j 서버에 있는 receiver 에서 메시지를 전송한다고 했을때 온라인시점에서 i 서버에서 메시지를 전송했다는 이벤트(혹은 시점)를 j 서버가 인지해야 각 서버의 websocket 에 연결되어있는 클라이언트들에게 메시지를 push 를 해줄수 있을꺼같은데요 키 벨류 스토어 외에 메시징 관련 시스템이 별도로 있어야 할꺼같은데 강의에서 해당 내용을 어떻게 설명해주신지 (큐를 통해 설명해주신건지) 명확하게 이해를 못한부분이 있어 질문드리게 됐습니다 감사합니다
AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
Redis에 랜덤한 값을 키에 저장할 시 해당 키 탐색을 위해 FULL SCAN O(1) 대신 메타데이터를 통해서 탐색한다고 말씀하셨는데 이 메타데이터 자체도 Redis에 저장하는건가요? 아니면 programmatically하게 Map이나 딕셔너리에 저장한다는 의미인가요?
같은 요청이 여러 번 들어와도 한 번만 처리하는 것. 여러 번의 요청이 들어왔을 때 이 요청이 '같은 요청' 이라는 것을 정확하게 판단할 수가 있을까요? 예를 들어 똑같은 점포의 똑같은 POS에서 똑같은 액수의 포인트 적립/사용이 두 번 들어왔을 때, 이 두 요청이 각자 다른 요청인지? 클라이언트 단의 문제로 인해 같은 요청을 두 번 보낸 것인지? 정확하게 판단할 수 있는 걸까요? 두 요청의 도착 시간 간격이 매우 짧을 때 -> 일반적인 상황에서 같은 동작이라고 판단할 수야 있겠지만.. 매우 빠르게 요청을 계속해서 받아야 하는 상황이라면? 도메인 특성에 따라 같은 요청임을 판단할 수 있는 기준이나 상황이 달라지기야 하겠지만 정확하게 보장 받을 수 있는 기준은 존재하기 어렵지 않나 하는 생각이 듭니다. 실제 사례를 통해 예시를 들어주실 수 있는 게 있을까요?
AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
URL 생성 write 시나리오에서, short url을 생성하고 redis counter를 증가시키고 db에 저장하고 캐시를 업데이트 하는 부분이 있는데요. 이때 redis counter를 어떤 용도로 사용하는 것인지 이해가 잘 가지 않습니다. 추측으로는, redis counter를 통해 발생한 새로운 값으로 인코딩해 shortUrl을 생성하는 케이스였다면 redis counter를 증가시키고, short url을 생성해주었을 것 같습니다. non functional 요구사항인 100억개의 url limit을 체크하기 위함이 제일 합리적일 것 같은데, 그렇다면 db에 저장하는 부분이 이해가 안돼서요. 이부분 추가 설명 부탁드려도 될까요?
AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
시스템 디자인 관련 질문 강의 말미에 서비스 fail 시에 use backup clusters로 언급만하고 넘어가셨는데 좀 더 자세하게 설명 부탁드리겠습니다 fail 되는 특정 시점을 기준으로 내부의 시스템들이 어떻게 동작하는지 궁금합니다 fail에서 정상으로 복구하게 되면 어떤 절차에 따라서 다시 원래의 서비스로 전환되는지도 궁금합니다
AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
안녕하세요! 강의 마지막 부분의 scaling - partitioning 관련해서 이해가 안가는 부분이 있어서 질문 드립니다. partitioning key를 userId로 했을 때, 장단점에서 장점의 '트래픽을 줄일 수 있다'에서 어떤 트래픽을 의미하는지 잘 모르겠습니다. 단점에서도 모든 방문객을 scan해야 한다고 말씀해주셨는데 이 부분도 더 자세한 설명을 해주실 수 있을까요? partition key를 userId로 할 때는 url을 생성하고 관리하는 User의 성능을 높일 때 사용하는걸까요?