여러 작업을 동시에 수행하는 개념은 다양한 방식으로 구현될 수 있습니다. 대표적인 방식으로는 멀티태스킹(Multitasking), 멀티프로세스(Multiprocessing), 멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)이 있습니다. 이 글에서는 각각의 개념을 명확히 구분하고 차이점을 살펴보겠습니다.1. 멀티태스킹(Multitasking)멀티태스킹은 하나의 CPU에서 여러 작업을 동시에 수행하는 것처럼 보이도록 만드는 기술입니다. 현대 운영체제에서는 프로세스 스케줄러가 매우 빠르게 여러 프로세스를 전환(Switching)하여 실행하는 방식으로 멀티태스킹을 구현합니다.특징하나의 CPU에서 여러 작업을 처리하는 것처럼 보임 (시간 분할 방식)실제로는 여러 작업을 매우 빠..
1. 컨텍스트 스위칭이란?컨텍스트 스위칭(Context Switching) 은 CPU가 하나의 작업(프로세스 또는 스레드)에서 다른 작업으로 전환될 때 발생하는 과정입니다.운영체제는 멀티태스킹을 위해 여러 프로세스를 빠르게 전환해야 하며, 이를 위해 현재 실행 중인 프로세스의 상태(Context)를 저장하고, 새롭게 실행할 프로세스의 상태를 불러오는 작업이 필요합니다.2. 프로세스와 스레드의 차이컨텍스트 스위칭을 이해하려면 프로세스(Process) 와 스레드(Thread) 의 개념을 먼저 살펴볼 필요가 있습니다.구분프로세스(Process)스레드(Thread)정의실행 중인 프로그램의 인스턴스프로세스 내에서 실행되는 경량 프로세스주소 공간독립적인 주소 공간 가짐같은 프로세스 내에서 주소 공간 공유자원독립적인..
1. API Gateway란?API Gateway는 클라이언트와 마이크로서비스 간의 중간 계층 역할을 하는 서버로, 모든 API 요청을 한 곳에서 받아서 적절한 마이크로서비스로 전달하는 기능을 수행합니다.즉, 클라이언트는 여러 개의 마이크로서비스에 직접 접근하는 대신, API Gateway를 통해 하나의 엔드포인트만 호출하면 됩니다.📌 API Gateway의 주요 역할클라이언트 요청을 받아 적절한 서비스로 라우팅서비스 디스커버리를 통해 동적으로 마이크로서비스 호출인증 및 권한 관리 적용로드 밸런싱을 통해 트래픽 분산캐싱 및 요청 최적화 수행모니터링 및 로깅 지원트래픽 제한(rate limiting) 및 보안 기능 제공2. API Gateway가 필요한 이유마이크로서비스 아키텍처에서는 서비스가 개별적으로..
소프트웨어 개발에서 테스트를 수행할 때, 실제 객체를 사용하면 여러 가지 문제가 발생할 수 있습니다. 예를 들어, 데이터베이스와 연동되거나 외부 API를 호출하는 코드가 포함된 경우, 테스트 실행 속도가 느려지고, 외부 서비스의 상태에 따라 테스트 결과가 달라질 수도 있습니다. 이러한 문제를 해결하기 위해 사용하는 기법이 Mocking(목킹) 입니다. Mock의 개념Mock은 실제 객체를 대신하는 가짜 객체(fake object)로, 특정한 동작을 미리 정의하여 테스트를 쉽게 수행할 수 있도록 도와줍니다. Mock 객체는 다음과 같은 상황에서 유용합니다.외부 API 호출을 테스트해야 할 때: 실제 API를 호출하면 네트워크 지연이 발생하거나 응답이 예측할 수 없기 때문에, API 호출을 Mock으로 대체..
멀티스레드(Multi-threading)는 하나의 프로세스 내에서 여러 개의 스레드를 실행하는 기술을 의미합니다. 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위로, 멀티스레드를 활용하면 하나의 프로그램이 동시에 여러 작업을 수행할 수 있습니다.1. 멀티스레드의 개념1.1 스레드(Thread)란?스레드는 운영체제에서 프로세스의 실행 단위를 의미하며, 하나의 프로세스는 여러 개의 스레드를 가질 수 있습니다. 모든 스레드는 같은 프로세스 내에서 메모리를 공유하며 독립적인 실행 흐름을 가집니다.1.2 멀티스레드의 동작 방식멀티스레드는 하나의 프로세스 내에서 여러 개의 작업을 동시에 수행하는 방식입니다. 운영체제는 스케줄러를 통해 CPU 시간을 각 스레드에 분배하며, 이를 통해 병렬 실행이 가능합니다.2..
해시 테이블(Hash Table)은 데이터를 저장하는 자료 구조 중 하나로, 데이터 검색, 삽입, 삭제의 속도가 매우 빠릅니다. 이는 "해시 함수"라는 특별한 함수를 사용하여 데이터를 인덱스로 변환하고, 이를 통해 빠르게 데이터를 찾을 수 있도록 하는 방식입니다. 해시 테이블은 주로 키-값 쌍으로 데이터를 저장합니다.해시 테이블의 동작 원리해시 함수(Hash Function):데이터를 저장하기 전에, 키를 해시 함수에 전달하여 배열의 인덱스를 계산합니다.이 함수는 입력값(키)을 고유한 숫자(해시 값)로 변환하는 역할을 합니다.예를 들어, 문자열 "apple"이 주어지면, 해시 함수는 이 문자열을 특정 숫자로 변환하고, 이를 배열의 인덱스로 사용합니다.배열(Array):해시 테이블은 내부적으로 배열을 사용..