개발 (32) 썸네일형 리스트형 redis 1.0 분석 - 공유 메모리 풀 업데이트 내역 2023.12.16 현재도 공유 메모리 기술을 쓰는지에 대한 글 추가 들어가기 전에 Redis beta 1 버전을 기준으로 작성한 글입니다. 해당 버전의 코드는 다음 링크에서 확인하실 수 있습니다. http://redisgate.kr/redis/introduction/redis_release1.php Redis Release Notes 1 redisgate.kr 해당 기술고 관련된 포스트입니다. https://groups.google.com/g/redis-db/c/cHTu12jRr78/m/h-L0-EOn9WgJ Object sharing is fun! Hello, some hour ago I implemented a new feature in Redis, object sharing, in .. 초기 Redis 분석 - 이벤트 루프 들어가기 전에 Redis beta 1 버전을 기준으로 작성한 글입니다. 해당 버전의 코드는 다음 링크에서 확인하실 수 있습니다. http://redisgate.kr/redis/introduction/redis_release1.php Redis Release Notes 1 redisgate.kr 이벤트 종류 파일 이벤트: 클라이언트 생성, 커맨드 수행과 DB 백업 과정에서 발생하는 응답에 대한 이벤트 타임 이벤트: redis 내부에서 주기적으로 돌아가는 cron 작업. 초기에는 최소 사이즈를 만족하지 못하는 해시 테이블을 축소하는 작업만 한다. 작동방식 이벤트 루프를 통해 지속적으로 파일, 타임 이벤트를 확인하고 처리한다. 하나의 while 문으로 돌아가기 때문에 redis는 싱글 스레드로 처리된다. 다만.. 초기 Redis 분석 - 자료구조 업데이트 내역 2023.12.10 해시 생성 알고리즘, 해시 마스킹 설명 추가 2023.12.12 해시 테이블 resize 과정 추가 들어가기 전에 Redis beta 1 버전을 기준으로 작성한 글입니다. 해당 버전의 코드는 다음 링크에서 확인하실 수 있습니다. http://redisgate.kr/redis/introduction/redis_release1.php Redis Release Notes 1 redisgate.kr 데이터 관리 redis는 데이터를 문자열 형태로 관리한다. 하지만, 문자열 그대로 관리하지 않고, SDS(Simple Dynamic String) 란 객체에 문자열과 메타 데이터를 같이 관리한다. 여기서 len은 문자열의 길이, free는 현재 할당된 메모리에서 남은 공간을 의미한다.. 이펙티브 소프트웨어 테스팅 테스팅 책을 읽은 이유 프로젝트를 진행하는 과정에서 테스트 코드의 필요성을 절실히 느꼈다. 코드를 봐줄 상급자가 없거나, 같이 리뷰할 팀원들이 부족하다면 에러가 안 나도록 기도 메타로 가야 했다. 그러다 보니 프런트 개발자와 API를 맞추는 과정에서 에러가 자주 발생했고, 그때마다 새로 배포를 하는 불편함이 있었다. 이를 해결하기 위해 단위 테스트 등을 통해 개발한 기능에 대한 테스트를 작성해 발생할 수 있는 위험성을 줄이고자 했다. 하지만, 통합 테스트같이 복잡한 테스팅이 필요한 경우를 만나니 테스트 코드 작성도 막막해져 책의 도움을 받고자 했다. 이 책을 선정한 이유 난이도가 적당했다. 아직 현업 경험이 없는 학생이다 보니, 전문 테스팅 책을 보는데 이해하기가 무척 어려웠다. 시간을 두고 읽으면 이해.. 객체지향의 사실과 오해 책을 읽은 이유 토이 프로젝트를 하면서 고질적인 문제가 있었는데 어느 정도 구현이 끝나면 의미 없는 리팩토링 관련 커밋들만 계속 올라가는 것이었다. 어제는 이게 명쾌한 해답 같았지만, 다음 날 다시 보니 여전히 문제가 있는 코드였고, 이러다 보니 리팩토링만 하다 프로젝트에 흥미를 잃어 레포를 지우고 다른 프로젝트를 시작하는 일들이 빈번히 발생했다. 이렇듯 설계에서 계속 문제가 발생했기 때문에, 객체 설계 관련 책을 보면 어떨까 싶었다. 그래서 본 책이 객체지향의 사실과 오해란 책이었다. 책을 읽는 과정에서 어느 부분에서 설계가 꼬이게 됐는지 유추할 수 있었다. 모든 부분이 중요했지만, 그 중 나한테 있어 필요한 부분들에 대해 우선적으로 정리를 했다. 역할, 책임, 협력 이 책에서 가장 강조하는 3가지 단.. Uber H3 - 육각형 계층의 공간 인덱스 프로젝트에 Uber H3을 적용하면서 이게 무엇인지에 대해 정리한 글입니다. Uber H3이 유용한 상황 특정 공간에 대푯값 하나만 있으면 되는 경우(좌표계 정규화) 특정 구역을 채우고 싶은 경우 어떤 구역에 진입했을 때, 그 주변의 데이터를 얻고 싶은데 주변의 기준이 애매한 경우 ST_Intersects 같은 공간 쿼리의 비용이 무거운 경우 겹침, 누락에 대한 손실을 최소화 하고 싶을 때 2번의 경우 google S2가 유용할 수 있다. 배달의민족에서 이걸 사용해 문제를 해결한 글이 있다. (https://techblog.woowahan.com/2717/) Uber H3란? 지구를 식별 가능한 육각형 형태로 나눈 형태 각 육각형 셸마다 64-bit 정수 형태의 고유한 값이 있다. 육각형 크기는 15단계.. Uber H3을 적용해 좌표 데이터 용량 20배 줄이기 개선된 결과를 먼저 말하자면 42GB의 높이 데이터 -> 2GB 서울시 시군구 단위 도로 데이터 계산 시간 20초 -> 1.2초 수행 시간의 경우 i5, 8GB인 16년도 그램으로 진행했기 때문에 고사양 컴퓨터라면 더 높은 성능을 볼 수 있다. 프로젝트 상황 도로 주변의 높이 정보를 가지고 해당 도로에 생기는 음영도를 계산해야 했다. 사용된 데이터는 다음과 같다. 전국 도로 데이터 (130만 개, 1.3GB) 전국 DSM 데이터(높이 데이터) (3억 개, 42GB) 여기서 높이 데이터의 경우 중복되거나 비슷한 높이를 가지는 것들이 많았다. 반만 해결된 속도 문제 이전 글에서 Polygon 재구성을 통해 I/O 연산을 줄였다. 추가로 클러스터 인덱싱을 적용하고, 시도 단위로 테이블을 분리한 결과 30초 -.. HTTP/1.1 과 2.0의 차이 들어가기 전에HTTP/2 캡쳐 샘플은 아래 링크에서 받으실 수 있습니다.https://wiki.wireshark.org/HTTP2 HTTP2Hypertext Transfer Protocol version 2 (HTTP2) Protocol dependencies TCP: Typically, HTTP/2 uses TCP as its transport protocol. The well known TCP port for HTTP/2 traffic is 443 (and 80). Wireshark ChangeLog: Wireshark 1.12 - initial support Wireshark 2.0 -wiki.wireshark.org 문제 제기우리가 흔히 사용하는 대부분의 웹 사이트들은 HTTP/2를 사용한다.(구.. 이전 1 2 3 4 다음