한 때 쿠팡에서 위와 같은 에러로 전체 물품이 품절 처리 된 적이 있다. 원인 파악 결과 Redis DB 때문이라는 것이 드러났다. RedisRemote Dictionary ServerDB, Cache, Message BrokerIn-memory Data Structure Store (메모리 상에 데이터를 저장하는 서버)Supports rich Data Structure (다양한 자료구조 지원) Redis와 캐시의 이해Redis 는 Remote Dictionary Server라는 뜻. 말 그대로 외부에 있는 Dictionary자료구조를 쓰는 형태의 서버 라는 의미이다. Redis는 기본적으로 In-memory Data Structure Store로서, 데이터를 메모리에 저장하여 빠른 접근을 가능하게 하..
https://www.youtube.com/watch?v=x-Lp-h_pf9Q&t=0s프로세스와 스레드 개요 Process 는 단위이다. 어떤 관리의 단위이며, 관리의 주체는 OS이다. 프로세스 라고 하는것은 기본적으로 연산거리(명령어)의 집합 이다. 연산은 연속적이기 때문에 이어져서 하나의 흐름을 만든다.이 흐름은 프로세스 수준에서 기본적으로 하나 존재하며, 이를 컨텍스트(Context) 또는 플로우(flow)라고 부르기도 한다. 연산은 외부 자극에 의해 변경될 수도 있다. 기본적으로 하나의 프로세스에는 반드시 하나의 스레드가 존재한다. 그러나 이 흐름이 하나가 아닌 여러 개로 분리될 수 있다. 한 프로세스 내부에 두 개 이상의 독립적인 실행 흐름이 존재하여, 동시에 또는 각각 작동하는 경우를 멀..
이력서나 프로젝트 기술스택 등 적을 때 스프링/ 스프링부트/ 스프링 프레임워크 세 개의 선택지가 제시되곤 한다. 스프링과 스프링 부트는 새로운 기술이라기 보다는 스프링 프레임워크를 개선한 것이다. 대표적인 개선 사항은 다음과 같다. 스프링 부트1. 개발 환경 설정을 최소화스프링은 버전에 따라 동작하는 외부 라이브러리를 일일이 찾아 연동해야한다. 하지만 스프링 부트는 미리 설정된 스타터 프로젝트로 외부 라이브러리를 최적화해 제공하므로 사용자가 직접 연동할 필요가 없다. 2. 웹 애플리케이션 서버를 내장스프링 부트는 내부에 웹 어플리케이션 서버 (WAS, Web Application Server)인 톰캣을 가지고 있다. 따라서 웹 서비를 jar 파일로 간편하게 배포할 수 있다. 결론적으로 스프링부..
캐시에 저장된 데이터를 유효하지 않은 데이터로 마킹하는 작업. 다음 요청이 왔을 때, 유효하지 않은 데이터는 반드시 캐시-미스 로 다루고, 원본 저장소에서 값을 재생성 하도록 해야한다. 즉 캐시 무효화는 캐시에서 데이터를 제거하여 캐시를 무효화하는 프로세스이다. 캐시된 데이터는 실제 원본 데이터가 아니다. 원본 데이터는 DB 에 있거나, 서비스가 생성해야 한다. 문제는 DB 의 데이터가 변경되는 경우 발생하는데 이 경우 캐시된 데이터는 더 이상 유효하지 않다. 캐시 무효화 전략이 필요한 이유 : 웹 브라우저가 GET 요청을 받을 경우 캐시 헤더 없이도 최적화를 위해 임의로 캐싱을 합니다.리소스의 캐시 유효 기간을 장기간으로 설정해 오래된 정보가 표시되는 경우가 있을 것입니다. 이 경우 해당 캐시를 무효..
Cache캐시는 자주 사용되는 데이터나 연산 결과를 임시로 저장하는 고속의 저장 공간을 의미한다. CPU 캐시, 웹 브라우저 캐시, 메모리 캐시 등이 있다. 캐시가 사용되는 대표적인 예시로 DP 알고리즘이 있다. 이전의 값을 저장할 때 캐시의 역할을 사용하고 있다. * 캐싱 : 나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것. (행위) 또한 JPA 의 Entity Manager 또한 내부적으로 캐시를 통해 직접 데이터베이스에 접근하지 않고 1차 캐시에서 데이터를 가져와 성능적인 이점을 가져오고 있다. 그렇다면 이 결과는 어디에 미리 저장하는 것일까? 메모리 계층 구조 사진을 보면 이해할 수 있다. 조금 더 쉬운 예시로 맥북을 생각해보자. M2Pro CPU - 12MB Cache Memory..
1. Flyway란 무엇인가?Flyway는 데이터베이스 스키마의 버전 관리를 자동화하는 오픈 소스 도구이다. 소프트웨어 개발 과정에서 데이터베이스 구조는 자주 변경되며, 이러한 변경 사항을 체계적으로 관리하지 않으면 예기치 않은 문제가 발생할 수 있다. Flyway는 이러한 데이터베이스 변경 사항을 손쉽게 관리할 수 있도록 돕는다.2. Flyway의 주요 기능버전 관리 : Flyway는 데이터베이스 스키마의 변경 사항을 파일로 관리하며, 각 변경 사항에 대해 고유한 버전을 부여한다. 이로 인해 언제, 어떤 변경이 이루어졌는지 명확하게 추적할 수 있다.자동화된 마이그레이션 : Flyway는 애플리케이션이 시작될 때 자동으로 데이터베이스 마이그레이션을 수행한다. 이는 새로운 버전의 스키마로 자동 업그레이드를..