전체 글132 6장. 키-값 저장소 설계 키-값 저장소는 키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스이다. 이 저장소에 저장되는 값은 고유 식별자를 키로 가져와야 한다. 키와 값 사이의 이런 연결 관계를 "키-값" 쌍이라고 지칭한다. 키-값 쌍에서의 키는 유일해야 하며 해당 키에 매달린 값은 키를 통해서만 접근할 수 있다. 키는 일반 텍스트일 수 있고 해시 값일 수도 있다. 성능상의 이유로, 키는 짧을수록 좋다. 일반 텍스트 키 : "last_logged_in_at" 해시 키 : 253DDEC4 키-값 쌍에서의 값은 문자열일 수도 있고 리스트일 수도 있고 객체일 수도 있다. 키 값 저장소는 보통 값으로 무엇이 오든 상관하지 않는다. 키 값 저장소로 널리 알려진 것으로는 아마존 다이나모, memcached, 레디스 같은 것들이 있다. .. 2023. 12. 6. 5장. 안정 해시 설계 수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. 안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다. 해시 키 재배치(rehash) 문제 N개의 캐시 서버가 가정할 때, 이 서버들에 부하를 균등하게 나누는 보편적 방법은 아래의 해시 함수를 사용하는 것이다. serverIndex = hash(key) % N(N은 서버의 개수) 총 4개의 서버를 사용한다고 해보자. 키 해시 해시 % 4 (서버 인덱스) key0 18358617 1 key1 26143584 0 key2 181311146 2 key3 35863496 0 key4 34085809 1 key5 27581703 3 key6 38164978 2 key7 22530351 3 특정한 키가 보.. 2023. 12. 6. 4장. 처리율 제한 장치의 설계 처리율 제한장치 : 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치 HTTP를 예로 들면 이 장치는 특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다. API 요청 횟수가 제한 장치에 정의된 임계치를 넘어서면 추가로 도달한 모든 호출은 중단된다. API에 처리율 제한 장치를 두면 좋은 점추가 요청에 대해서 처리를 중단함으로 써 DoS 공격에 의한 자원 고갈을 방지할 수 있다.추가 요청에 대한 처리를 제한하면 서버를 많이 두지 않아도 되고, 우선순위가 높은 API에 더 많은 자원을 할당할 수 있어 비용을 절감할 수 있다.봇(bot)에서 오는 트래픽이나 사용자의 잘못된 이용 패턴으로 유발된 트래픽을 걸러내서 서버 과부하를 막을 수 있다. 1단계. 문제 이해 및 설계 .. 2023. 11. 30. 1장. 사용자 수에 따른 규모 확장성 단일서버 웹 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행된다. 사용자의 요청 처리 흐름 사용자는 도메인 이름(api.mysite.com)을 이용하여 웹 사이트에 접속한다. 이 접속을 위해서는 도메인 이름을 도메인 이름서비스(DNS)에 질의하여 IP 주소로 변환하는 과정이 필요하다. DNS 조회 결과로 IP 주소가 반환된다. 해당 IP 주소로 웹서버에 HTTP 요청이 전달된다. 요청 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답을 반환한다. 실제 요청들은 2가지 단말로부터 전달된다 웹 어플리케이션 : 비즈니스 로직, 데이터 저장 등을 처리하기 위해서 서버 구현용 언어(java, python)를 사용하고, 프레젠테이션용으로sms 클라이언트 구현용 언어(HTML, JS)를 사용한다. 모바.. 2023. 11. 29. [Redis] 데이터 타입 Redis에는 많은 데이터 타입이 존재하며 각각의 데이터 타입마다 명령어가 다르다. Strings Lists Sets Hashes Sorted Sets Streams Geospatial Bitmaps HyperLogLog BloomFilter Strings Strings 문자열, 숫자, serialized object(JSON String)등 저장 명령어 $ SET lecture tistroy → lecture라는 키로 String 타입의 값을 저장 $ MSET price 100 language ko → 멀티셋의 약자로 다수의 String 값을 한번에 저장 $ MGET lecture price language → 멀티겟은 다수의 키를 한번에 반환 $ INCR price → increase의 약자로 숫자형.. 2023. 11. 6. [Redis] Redis 설치 & 실행 MAC OS 기준 설치방법으로 사전에 HomeBrew가 설치되어있어야 합니다. 1. Redis 설치 brew install redis 2. Redis 실행 brew services start redis 4. Redis 종료 brew services stop redis 실행 레디스를 실행 CLI환경으로 접속 레디스 서버에 명령어를 전달하기 위해서 레디스 CLI라는 프로그램을 이용하며 6379번 포트로 레디스가 실행된 것을 확인할 수 있다. ping이라는 명령어를 입력 후 pong이 리턴 된다면 레디스가 정상적으로 실행되고 있고 레디스 CLI를 통해서 명령어를 전달하고 있다는 의미이다. 등록 set 명령어로 [lecture]라는 키에 [tistory] 벨류를 저장한다. 정상적으로 저장되어 OK가 반환된 것을.. 2023. 11. 5. 이전 1 ··· 5 6 7 8 9 10 11 ··· 22 다음