서론우리 모두는 단일 책임 원칙 (Single Responsibility Principle, SRP) 에 대해 이미 알고 있습니다.하나의 모듈은 하나의 책임만 가져야한다는 객체 지향 프로그래밍의 설계 원칙입니다. 너무 명쾌한 내용이기에 이 원칙을 공감하지 못하는 분은 없을겁니다. 하지만 그럼에도 불구하고 우리는 비대한 모듈을 만들곤 합니다. 왜 일까요? 바로 "하나의 책임"이라는 말이 가지는 모호함때문입니다. 과연 어디까지 책임의 범위로 취급해야 할까요? 커피를 만드는 과정으로 예를 들어보겠습니다. 1. 물을 끊인다.2. 원두를 갈아 넣는다.3. 물을 커피에 붓는다.4. 커피를 컵에 따른다. 커피를 만드는 과정을 위 4가지 단계로 나눠보겠습니다. 그러면 각 단계가 각각 하나의 책임일까요? 한번 딴지를 걸..
싱글 스레드의 자바스크립트 실행환경에서 동시성(Concurrency)을 어떻게 제공할까요?동시성(Concurrency)여러 작업이 동시에 진행되는 것처럼 보이드록 하는 프로그래밍 기법입니다.하지만 이는 병렬성(Parallelism)과 구분되며 실제로는 동일 시점에 실행되는 것이 아닌 하나의 작업을 조금씩 진행하면서 다른 작업으로 전환하는 방식으로 이루어집니다. 예를 들어, 멀티태스킹 운영체제는 여러 프로그램을 동시에 실행하는 것처럼 보이게 하지만, 실제로는 CPU 시간을 분할하여 각 프로그램에 할당합니다. 자바스크립트는 싱글 스레드의 언어로 한 번에 하나의 작업만 처리할 수있습니다. 그러나 이벤트 루프와 큐를 통해 동시성을 구현합니다. 위 이미지에 표현된 구조에 대해 하나씩 살펴보도록 하겠습니다. 콜 스..