백엔드/프로그래밍 기법7 Python GIL (Global Interpreter Lock)에 대해 알아보자 저번에 학습한 이론대로라면 Thread 2개를 만들어서 실행하면 아래와 같은 그림으로 동작된다고 생각할 수 밖에 없다. (참조 : https://yscho03.tistory.com/293) 하지만 파이썬은 아래와 같이 동작하지 않는다. 파이썬에는 GIL(Global Interpreter Lock) 이 있기때문에 스레드에서 한 번에 하나의 스레드만 Python 바이트코드를 실행한다. GIL(Global Interpreter Lock) GIL(Global Interpreter Lock)은 CPython 인터프리터(파이썬의 표준 구현체)에서 사용되는 개념이다. GIL은 파이썬 스레드에서 한 번에 하나의 스레드만 Python 바이트코드를 실행하도록 제한하는 메커니즘이다. GIL은 파이썬이 C 언어로 작성된 확장.. 2023. 7. 11. 스레드 풀 (Thread Pool) Thread Per Request 모델 Thread Per Request 모델은 웹 서버에서 요청이 들어올 때마다 새로운 스레드를 생성하여 해당 요청을 처리하는 방식이다. 각 요청은 독립적으로 실행되기 때문에 동시에 여러 요청을 처리할 수 있다. 간단한 구현 각 요청에 대해 새로운 스레드를 생성하기 때문에 구현이 비교적 간단하다. 스레드는 일반적으로 운영체제에서 제공하는 기능을 사용하여 생성 및 관리할 수 있다. 동시성 Thread Per Request 모델은 여러 스레드를 통해 동시에 요청을 처리할 수 있으므로 동시성을 지원한다. 이는 대규모 트래픽을 처리하는 데 유용할 수 있다. 이렇게 계속 요청 들어올때마다 스레드를 생성하게 된다면? 컨텍스트 스위칭 오버헤드 스레드는 자원을 공유하면서 실행되기 때문.. 2023. 7. 11. 멀티 스레드 vs 멀티 프로세스 단일 프로세스 vs 멀티 프로그래밍 vs 멀티 태스킹 단일 프로세스 CPU에 한번에 하나의 프로그램만 실행되는 것을 말한다. 단일 프로세스의 큰 단점은 프로세스→ IO → 프로세스→ IO 이런 순으로 반복이 될때 IO 처리시간시 CPU가 유휴 상태가 되고마는 큰 단점이 있다. 멀티 프로그래밍 위에서 언급한 단일 프로세스를 극복하기 위한 처리 방법으로 나온 것이 멀티 프로그래밍 기법이다. 프로세스가 2개 존재한다고 가정했을때, 각 프로세스들은 CPU 시간을 일정한 시간 단위로 번갈아가며 할당받는다. 이렇게 함으로써, 프로세스들은 동시에 실행되는 것처럼 느껴지지만 실제로는 CPU 시간을 번갈아가며 사용하게 된다. 그러면 예를 들어서 프로세스-1이 시간이 길다면 어떻게 될까? 프로세스-2가 굉장히 많은 시간을.. 2023. 7. 10. 스핀락(Spinlock) vs 뮤텍스(Mutex) vs 세마포어(Semaphore) Overview 데이터의 일관성과 정합성을 유지하기 위하여 동시성 제어를 위해 사용되는 동기화 기법을 알아보고 각각의 차이점을 알아본다. 용어 정리 동기화(Synchronization)란? 여러 개의 스레드 또는 프로세스가 공유된 자원에 접근할 때 발생하는 문제를 해결하기 위해 사용되는 개념이다. 동기화를 통해 스레드 또는 프로세스들 간의 상호 작용을 조절하고, 데이터의 일관성과 정확성을 보장할 수 있다. 임계 영역(Critical Section)이란? 임계 영역은 여러 스레드나 프로세스에서 동시에 접근 가능한 영역을 말한다. 이 임계 영역에 동시에 접근하면 데이터의 일관성을 유지할 수 없거나, 예상치 못한 결과가 발생할 수 있어 임계 영역에 대한 동시 접근을 효율적으로 제어하기 위해 동기화 기법이 사용.. 2023. 7. 7. Django vs Flask vs FastAPI 어떤 걸 사용해야 할까? 프레임워크 동향 아직까지는 github stars, Google Trends를 봐도 Django, Flask가 압도적인 추세이다. Django (장고) Django 프레임워크란? Django는 무료 오픈 소스인 python 웹 프레임워크이다. Adrian Holovaty와 Simon Willison이 2003년에 만들어졌다. Django 주요 목표 중 하나가 복잡한 데이터베이스 기반의 웹 사이트를 개발할 수 있도록 하는 것 적은 코드, 낮은 결합 및 재사용성, 연결 가능성 등 빠른 개발에 도움이 됨 Django 구축 사례 Instagram, Mozilla, Nextdoor 및 clubhouse와 같은 일부 대형 웹사이트에서 사용됨 Django 장점 MVC (모델-뷰-컨트롤러) 아키텍처를 활용한 데이터 베.. 2022. 4. 11. Rest API란? REST란? REST (Representational State Transfer)는 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처이다. 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스이다. 기본적으로 개발자는 HTTP 메소드와 URI 만으로 인터넷에 자료를 CRUD 할 수 있다. REST 구성요소 메소드 리소스 모든 리소스를 명사로 표현한다. 다음과 같은 예제로 정의할 수 있다. 생성 유저를 생성한다. HTTP POST, http://sample.com/user { "name" : "yscho", "job" : "developer" } 조회 유저를 조회한다. HTTP PO.. 2022. 4. 11. 모노리틱 아키텍처 vs 마이크로 서비스 아키텍처 모노리틱 아키텍처 (Monolithic Architecture) 정의 간단히 말해서 "하나의 애플리케이션 내에 모든 로직들이 포함되어 있는 웹 서비스 구조" 이다. 예를 들어 쇼핑몰을 구축한다고 가정하면 주문관리, 상품관리 등 백엔드 로직뿐만 아니라 이를 표현하는 프론트 UX 로직까지 모든게 포함되어 있다. 상호 호출을 함수를 이용한 참조에 의한 호출 (Call-by-Reference) 구조를 취한다. 장점 소형 어플리케이션 서비스 개발시 편리하다. 하나의 통짜구조이므로 테스트와 배포가 편리하다. 단점 개발시 크기가 커서 빌드, 배포 시간, 서버의 기동 시간이 오래 걸린다. 개발 단위가 커질수록 협업하기 힘들다. 참조에 의한 호출 (Call-by-Reference) 구조를 취하기 때문에 전체 시스템에 대.. 2022. 3. 30. 이전 1 다음 728x90 반응형