본문 바로가기

전체 글78

1장 사용자 수에 따른 규모 확장성 (5) - 메시지큐, 로그, 메트릭, 자동화, 데이터베이스의 규모 확장 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - System Design Interview 1장 사용자 수에 따른 규모 확장성 : 어떻게 수백만 사용자를 지원하는 시스템을 설계할 것인가. 1장 사용자 수에 따른 규모 확장성 (1) - 웹서버, 데이터베이스, 로드밸런스 1장 사용자 수에 따른 규모 확장성 (2) – 데이터베이스 다중화 1장 사용자 수에 따른 규모 확장성 (3) – 캐시, CDN 1장 사용자 수에 따른 규모 확장성 (4) - 무상태 웹 계층, 데이터 센터 에서 이어지는 글입니다. 메시지 큐 메시지 큐는 메시지의 무손실(durability, 즉 메시지 큐에 일단 보관된 메시지는 소비자가 꺼낼 때까지 안전히 보관된다는 특성)을 보장하는, 비동기 통신을 지원하는 컴포넌트이다. 메시지의 버퍼 .. 2023. 5. 4.
1장 사용자 수에 따른 규모 확장성 (4) - 무상태 웹 계층, 데이터 센터 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - System Design Interview 1장 사용자 수에 따른 규모 확장성 : 어떻게 수백만 사용자를 지원하는 시스템을 설계할 것인가. 1장 사용자 수에 따른 규모 확장성 (1) - 웹서버, 데이터베이스, 로드밸런스 1장 사용자 수에 따른 규모 확장성 (2) – 데이터베이스 다중화 1장 사용자 수에 따른 규모 확장성 (3) – 캐시, CDN 에서 이어지는 글입니다. 무상태(stateless) 웹 계층 Q : 어떻게 웹 계층을 수평적으로 확장할 것인가 A : 바람직한 전략 : 상태 정보를 관계형 데이터베이스나 NoSQL 같은 지속성 저장소에 보관하고, 필요할 때 가져오도록 한다. → 이렇게 구성된 웹 계층을 무상태 웹 계층 이라 부른다. 상태 의존적.. 2023. 5. 3.
1장 사용자 수에 따른 규모 확장성 (3) - 캐시, CDN 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - System Design Interview 1장 사용자 수에 따른 규모 확장성 : 어떻게 수백만 사용자를 지원하는 시스템을 설계할 것인가. 1장 사용자 수에 따른 규모 확장성 (1) - 웹서버, 데이터베이스, 로드밸런스 1장 사용자 수에 따른 규모 확장성 (2) – 데이터베이스 다중화 에서 이어지는 글입니다. 캐시 캐시는 값비싼 연산 결과 또는 자주 참조되는 데이터를 메모리 안에 두고, 뒤이은 요청이 보다 빨리 처리될 수 있도록 하는 저장소이다. 캐시 계층 캐시 계층은 데이터가 잠시 보관되는 곳으로 데이터베이스보다 훨씬 빠르다. 별도의 캐시 계층을 두면 성능이 개선될 뿐 아니라 데이터베이스의 부하를 줄일수도 있고, 캐시 계층의 규모를 독립적으로 확장시.. 2023. 5. 2.
1장 사용자 수에 따른 규모 확장성 (2) - 데이터베이스 다중화 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - System Design Interview 1장 사용자 수에 따른 규모 확장성 : 어떻게 수백만 사용자를 지원하는 시스템을 설계할 것인가. 1장 사용자 수에 따른 규모 확장성 (1) - 웹서버, 데이터베이스, 로드밸런스 에서 이어지는 글입니다. 수직적 규모 확장 vs 수평적 규모 확장 데이터베이스 많은 데이터베이스 관리 시스템이 다중화를 지원한다. 보통은 서버 사이에 주(master)-부(slave) 관계를 설정하고 데이터 원본은 주 서버에, 사본은 부 서버에 저장하는 방식을 사용한다. 쓰기 연산(write operation)은 마스터에서만 지원한다. 부 데이터베이스는 주 데이터베이스로부터 그 사본을 전달받으며, 읽기 연산(read operation).. 2023. 5. 2.
1장 사용자 수에 따른 규모 확장성 (1) - 웹서버, 데이터베이스, 로드밸런스 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - System Design Interview 1장 사용자 수에 따른 규모 확장성 : 어떻게 수백만 사용자를 지원하는 시스템을 설계할 것인가. 단일 서버 사용자는 도메인 이름을 이용하여 웹 사이트에 접속한다. 1. 이러한 접속을 위해서 DNS에 질의하여 IP 주소로 변환한다. (DNS는 제3 사업자(third party)를 통해 제공되므로 우리 시스템의 일부는 아님) 2. DNS 조회 결과로 IP 주소가 반환된다. 3. 해당 IP 주소로 HTTP 요청이 전달된다. 4. 요청을 받은 웹 서버는 HTML 페이지나 JSON과 같은 형태의 응답을 반환한다. 요청들은 두가지 종류의 단말로부터 오는데 하나는 웹 앱이고 다른 하나는 모바일 앱이다. (모바일 앱에서는 .. 2023. 5. 2.
좋은 테스트란 무엇인가 – 테스트를 평가하는 4가지 요소 * 출처: 단위테스트 (블라디미르 코리코프) 단위 테스트, 통합 테스트, 엔드 투 엔드 테스트 등 자동화 된 테스트를 분석하는 데 사용할 수 있는 네 가지 기본 특성이 있다. 회귀 방지 리팩터링 내성 빠른 피드백 유지 보수성 회귀 방지 회귀 : 코드를 수정한 후 기능이 의도한 대로 작동하지 않는 경우. (= 소프트웨어 버그) 회귀 방지는 테스트가 얼마나 버그(회귀)의 존재를 잘 나타내는지에 대한 척도이다. 테스트가 코드를 더 많이 실행할수록 (여러분의 코드와 프로젝트에서 사용한 라이브러리 및 프레임워크 코드 모두) 테스트에서 버그가 드러날 확률이 더 높아진다. 리팩터링 내성 리팩터링 내성은 테스트가 거짓 양성을 내지 않고 애플리케이션 코드 리팩터링을 유지할 수 있는 정도를 의미한다. 거짓 양성 : 테스트.. 2023. 5. 2.