분류 전체보기 (104) 썸네일형 리스트형 [개발자를 위한 레디스] 5장 레디스를 캐시로 사용하기 레디스와 캐시캐시란?캐시란 데이터의 원본보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소를 의미한다.사용자가 동일한 정보를 반복적으로 액세스할 때 원본이 아니라 캐시에서 데이터를 가지고 옴으로써 리소스를 줄일 수 있다.애플리케이션이 다음 조건을 만족시킨다면, 캐시를 도입했을 때 성능을 효과적으로 개선할 수 있다.원본 데이터 저장소에서 원하는 데이터를 찾기 위해 검색하는 시간이 오래 걸리거나, 매번 계산을 통해 데이터를 가져와야 한다.캐시에서 데이터를 가져오는 것이 원본 데이터 저장소 데이터를 요청하는 것보다 빨라야 한다.캐시에 저장된 데이터는 잘 변하지 않는 데이터다.캐시에 저장된 데이터는 자주 검색되는 데이터다. 캐시로서의 레디스레디스는 단순하게 키-값 형태로 저장하므로, 데이터를 저장하.. [개발자를 위한 레디스] 4장 레디스 자료 구조 활용 사례 레디스가 제공하는 다양한 자료 구조를 적절히 활용한다면 애플리케이션에서는 매우 짧은 대기 시간으로 엄청난 양의 작업을 처리할 수 있다. sorted set을 이용한 실시간 리더보드사용자의 증가에 따라 가공해야 할 데이터가 몇 배로 증가한다.데이터가 실시간으로 반영되어야 한다. 여러 가지 수학적 계산이 빠르게 수행되어야 한다. sorted set에서 데이터는 저장될 때부터 정렬되어 들어간다. 데이터 저장 및 조회ZADD 커맨드를 활용해서 데이터(스코어, 플레이어 번호)를 저장한다. ZRANGE를 활용해서 스코어 낮은 순서로 데이터를 조회할 수 있다.ZREVRANGE를 활용해서 상위 스코어 N개 데이터를 조회할 수 있다. ZADD를 활용해서 기존 플레이어의 점수 데이터 업데이트가 가능하다.set 자료구조는 .. [개발자를 위한 레디스] 3장 레디스 기본 개념 레디스의 자료 구조string최대 512MB의 문자열 데이터를 저장할 수 있다.키와 실제 저장되는 아이템이 일대일로 연결되는 유일한 자료 구조이다. NX 옵션을 사용하면 지정한 키가 없을 때에만 새로운 키를 저장한다. XX 옵션을 사용하면 반대로 키가 이미 있을 때에만 새로운 값으로 덮어 쓰며 새로운 키를 생성하진 않도록 동작한다. 숫자 형태로도 저장할 수 있다.INCR, INCRBY와 같은 커맨드 데이터를 원자적으로 처리한다. (동시성 이슈X)INCR: 저장한 데이터를 1씩 증가시킨다.INCRBY: 입력한 값만큼 데이터를 증가시킨다. MSET, MGET 커맨드를 이용하여 한 번에 여러 키를 조작할 수 있다.위 커맨드를 적절하게 사용해 네트워크 통신 시간을 줄일 수 있다. list순서를 가지는 문자열의.. [Redis] 레디스를 활용한 Spring Boot 환경에서 캐싱 적용하기 [개발자를 위한 레디스] 1장 마이크로서비스 아키텍처와 레디스NoSQL의 등장 배경소프트웨어 아키텍처의 변화와, 이로 인해 현대의 데이터 저장소가 어떤 요구 사항에 직면했는지 알아본다. 모놀리틱 아키텍처전통적인 소프트웨어 개발 모델전체 애플리케이soso-hyeon.tistory.com [개발자를 위한 레디스] 5장 레디스를 캐시로 사용하기레디스와 캐시캐시란?캐시란 데이터의 원본보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소를 의미한다.사용자가 동일한 정보를 반복적으로 액세스할 때 원본이 아니라 캐시soso-hyeon.tistory.com 안녕하세요. 요즘은 레디스를 조금씩 공부하고 있는데, 최근 진행 중인 프로젝트에서 캐싱 작업을 추가할 일이 생겼어요.그래서 추가하고 그 과정을 기록으로.. [Docker] 도커 활용해서 Spring Boot 환경에서 CI/CD 파이프라인 구축하기 [Docker] jar 파일 도커(docker) 이미지로 배포하기 (with. Java, SpringBoot)Docker로 서버 배포하기진행하던 사이드 프로젝트에서 헥사고날 아키텍처를 도입하게 되었다. 그에 따라 멀티모듈로 싹 바꾸고 리팩토링 작업을 진행했다. 약 일주일 간의 작업 후 수정된 서버를soso-hyeon.tistory.com 안녕하세요!약 2달 전에 도커 이미지를 서버에 수동 배포하는 글을 작성했었는데요, 이번엔 배포를 자동화하는 CI/CD 파이프라인을 구축해보아서 그 과정을 기록하려고 해요. 해당 작업을 진행한 환경은 다음과 같아요.Java, Spring Boot (jar 파일 활용)Docker HubGithub ActionAWS EC2 Ubuntu 기존에 진행하던 프로젝트에 CI/CD 파.. [개발자를 위한 레디스] 2장 레디스 시작하기 레디스 설치하기소스 파일을 이용해 레디스 설치하기-- 버전 지정$ wget http://download.redis.io/releases/redis-7.0.8.tar.gz-- 최신 버전 다운로드$ wget http://download.redis.io/redis-stable.tar.gz해당 실습에서는 버전7을 활용한다. -- gcc 설치$ brew install gcc-- 압축 파일 해제 후 빌드$ tar -zxvf redis-7.0.8.tar.gz$ mv redis-7.0.8 redis$ cd redis$ make실습 환경은 macOS이다. $ make PREFIX=${redis 디렉터리 경로} install기본 디렉터리 내의 bin 디렉터리에 실행 파일을 복사하기 위해 make install 커맨드를.. [개발자를 위한 레디스] 1장 마이크로서비스 아키텍처와 레디스 NoSQL의 등장 배경소프트웨어 아키텍처의 변화와, 이로 인해 현대의 데이터 저장소가 어떤 요구 사항에 직면했는지 알아본다. 모놀리틱 아키텍처전통적인 소프트웨어 개발 모델전체 애플리케이션을 하나의 통합된 패키지로 개발, 배포하는 방식작은 규모의 프로젝트나 애플리케이션에서 용이함 마이크로서비스 아키텍처독립된 각각의 모듈을 조립해 하나의 서비스를 만드는 아키텍처기능별로 작게 나뉘어진 서비스가 독립적으로 동작하는 서비스업데이트, 테스트, 배포, 확장은 각 서비스별로 독립적으로 수행 가능함빠르게 성장하는 프로젝트에 용이함 데이터 저장소 요구 사항의 변화모놀리틱 서비스에서 가장 많이 사용되어 왔던 데이터베이스는 RDBMS최근 비정형 데이터가 증가하는 추세 (시계열 데이터, JSON 데이터 등)NoSQL을 사용하면.. [Docker] jar 파일 도커(docker) 이미지로 배포하기 (with. Java, SpringBoot) Docker로 서버 배포하기진행하던 사이드 프로젝트에서 헥사고날 아키텍처를 도입하게 되었다. 그에 따라 멀티모듈로 싹 바꾸고 리팩토링 작업을 진행했다. 약 일주일 간의 작업 후 수정된 서버를 재배포하려고 하니 배포에 실패하고 말았다..! EC2 용량 부족의 문제였다. 당황해서 EC2 불륨을 늘려보고 캐시를 지워보고 용량을 확보하기 위해 이것저것 해보았지만, 결국 안그래도 적은 용량을 늘려도 커진 jar 파일을 감당하기엔 무리였던 것 같다.. 하루 정도 텀을 두고 곰곰히 생각해보니 기존의 배포 방식은 jar 파일을 압축해서 AWS를 통해 올려 zip 파일을 ec2 서버 내에서 다시 풀고, 빌드된 jar 파일을 실행시키는 구조였다. 배포 파일 크기를 줄일 수 있는 방식이 없을까 고민하다가 도커 이미지를 떠올.. 이전 1 2 3 4 5 ··· 13 다음