목록전체 글 (51)
CPU-Scheduling 이란? 모든 프로세스는 CPU를 필요로 하고 모든 프로세스는 먼저 CPU를 사용하고 싶어 하기에, 여러 프로세스들에게 합리적으로 CPU 자원을 할당하기 위해 운영체제는 어떤 프로세스에 어떤 CPU를 할당할지를 결정한다. 이렇게 운영체제가 프로세스들에게 합리적으로 CPU 자원을 배분하는 것을 CPU-Scheduling 이라고 한다. CPU-Scheduling 이 제대로 동작하지 않는다면, 반드시 실행되어야 할 프로세스들이 실행되지 못하거나, 중요하지 않은 프로세스들만 주로 실행되는 등 컴퓨터 성능에 직결되는 문제라고 볼 수 있다. 프로세스 우선순위 각 프로세스마다 우선순위가 다른데, 우선순위가 높은 프로세스일수록 빨리 처리해야 하는 프로세스들을 의미한다. 우선순위가 높은 프로세스..

RabbitMQ와 STOMP를 사용하는 채팅 서버를 만들던 중 RabbitMQ에 대한 이해가 부족했다는 것을 깨닫고 공부하기 위해 작성한 포스팅이다. RabbitMQ란? AMQP를 구현한 오픈소스 메세지 브로커 Producers 에서 Consumers 로 메세지를 전달할 때 그 중간에서 브로커 역할을 한다. AMQP란? Advanced Message Queueing Protocol의 줄임말로 MQ의 오픈소스에 기반한 표준 프로토콜을 의미한다. AMQP의 가장 대표적인 구현체가 바로 RabbitMQ라고 볼 수 있다. RabbitMQ 구조 RabbitMQ는 Producer가 발행한 메세지를 Consumer가 소비하기 전까지 Queue에 저장하여 보관하는 일련의 과정을 중개한다. Queue는 이름으로 구분되며..

분산락의 필요성 단 하나의 서버만 존재한다면, 앞서 소개했던 synchronized 만으로도 충분한 동시성 제어가 가능하지만 실제 서비스가 운영되고 있는 운영 서버는 하나만으로는 안정적으로 서비스 운영이 힘들기 때문에 보통 여러 개의 운영 서버를 둔다. synchronized 는 단 하나의 프로세스에서만 적용되기 때문에 여러 개의 프로세스가 존재하는 상황에서는 원활한 동시성 제어가 불가능하기 때문에 이를 위해 분산락이라는 것이 등장하게 되었다. Redis를 사용하는 이유 Redis 는 싱글 스레드로 동작하기 때문에, 단일 레디스 노드를 구축해 사용해도 동시성 문제가 발생하지 않는다. MySQL과 Zookeeper를 활용하는 방법을 사용해도 분산락을 구현할 수 있지만 이번 포스팅에서는 우선 Redis를 사..