프로세스의 5가지 상태1. 생성 (New)프로세스가 생성된 상태지만, 운영체제에 의해 수행 가능한 프로세스 풀로 진입이 아직 허용되지 않은 프로세스메모리 공간 할당, 프로세스 제어 블록(PCB) 생성 등 다양한 초기화 작업이 이루어짐2. 준비 (Ready)CPU 를 사용할 수 있는 기회가 주어지면 수행할 준비가 되어있는 프로세스준비 상태의 프로세스는 준비 큐(Ready Queue)에서 대기하며, 스케줄러가 프로세스를 선택하여 CPU 를 할당할 때까지 기다림3. 실행 (Running)현재 CPU를 사용하여 실행 중인 프로세스프로세스의 명령어가 순차적으로 실행되며, 운영체제는 프로세스의 수행 상태를 지속적로 모니터링 함4. 대기 (Blocked)특정 이벤트(I/O 작업 완료 등)가 발생할 때까지 수행될 수 ..
한 때 쿠팡에서 위와 같은 에러로 전체 물품이 품절 처리 된 적이 있다. 원인 파악 결과 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로서, 데이터를 메모리에 저장하여 빠른 접근을 가능하게 하..
이력서나 프로젝트 기술스택 등 적을 때 스프링/ 스프링부트/ 스프링 프레임워크 세 개의 선택지가 제시되곤 한다. 스프링과 스프링 부트는 새로운 기술이라기 보다는 스프링 프레임워크를 개선한 것이다. 대표적인 개선 사항은 다음과 같다. 스프링 부트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는 애플리케이션이 시작될 때 자동으로 데이터베이스 마이그레이션을 수행한다. 이는 새로운 버전의 스키마로 자동 업그레이드를..