1. Redis란?Redis는 Key:Value 구조의 비정형 데이터를 저장하고 관리하는 비관계형 데이터베이스이다. 데이터를 디스크가 아닌 메모리에 저장하므로 인메모리 DB(In-Memory DB)라고 부른다. 2. 데이터베이스가 있는데, 왜 Redis를 사용할까?데이터베이스가 있음에도 Redis를 사용하는 이유는 CPU가 계산에 필요한 데이터를 얻기 위한 속도 차이가 발생하기 때문이다. 데이터베이스는 물리 디스크에 직접 데이터를 쓰기 때문에 서버에 장애가 발생하더라도 데이터가 손실되지 않는다. 그러나 데이터가 필요할 때마다 매번 디스크에 접근하게 되면 사용자가 많아질수록 데이터베이스에 부하가 발생하게 된다. 따라서 사용자가 많을 때 데이터베이스의 과부하를 줄이기 위해서 Redis와 같은 캐시 서버를 도..
멀티 스레딩 환경에서 데이터의 일관성과 정확성을 보장하기 위한 개념이다. 여러 스레드가 동시에 같은 데이터에 접근할 때 발생할 수 있는 문제를 방지하기 위한 다양한 기법이 존재한다.Thread Safe멀티 스레드 프로그래밍 환경에서 함수나 변수, 객체에 여러 스레드가 동시에 접근이 발생해도 프로그램에 문제가 발생하지 않는 것을 의미한다.즉, 하나의 스레드로부터 실행 중인 함수가 있을 때, 다른 스레드가 해당 함수를 사용하더라도 각 스레드에서 호출한 함수의 결과가 올바르게 출력되는 것을 의미한다. Thread Safe를 위한 4가지 방법Mutual Exclustion (상호 배제)Atomic Operation (원자 연산)Thread-Local Stroage (스레드 지역 저장소)Re-Entrancy (재..
멀티 프로세스여러 개의 독립적인 프로세스가 동시에 실행되는 것을 말한다.프로세스는 독립적인 메모리 공간을 할당받기 때문에 각 프로세스는 서로 다른 메모리 영역에서 작업을 한다.이는 하나의 프로세스에서 발생하는 문제가 다른 프로세스에 영향을 미치지 않음을 의미한다.장점안정성: 하나의 프로세스에서 발생한 오류가 다른 프로세스에 영향을 미치지 않는다.단점Context-Swtiching 비용: 프로세스 간에 컨텍스트 스위칭은 많은 비용을 발생시킨다. 프로세스는 독립된 메모리 영역이기 때문에 주소 공간의 공유가 잦을 경우 오버헤드 발생에 따른 성능 저하가 발생한다.멀티 스레드하나의 프로세스가 여러 작업을 동시에 수행할 수 있도록 한다.하나의 프로세스에는 여러 개의 스레드가 존재하며, 프로세스가 할당된 메모리 영역..
프로세스: 운영체제로부터 자원을 할당받은 작업의 단위 스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위프로그램이란?프로그램이란 파일장치에 저장되어 있지만 메모리에는 저장되어 있지 않은 상태이다.즉, 프로그램이 실행되고 있지 않은 상태를 의미한다. 모든 프로그램은 실행되기 위해서는 메모리에 할당되어야 한다. 프로그램을 실행하게 되면 메모리에 공간을 할당받는다. 이 상태의 프로그램을 프로세스라고 한다.프로그램은 단순히 코드로 구성된 파일이며, 메모리에 공간을 할당받은 프로그램을 프로세스라고 한다.스레드 개념이 생긴 이유프로그램의 실행부터 끝까지 하나의 프로세스가 처리한다.그러나 점차 프로그램이 복잡해짐에 따라 프로세스 1개로 처리하는 것이란 실질적으로 불가능하게 되었다. 그렇다고 해서 다른 프로..