본문 바로가기
728x90

CS/Interview14

Gunicorn이란? 📌 Gunicorn Gunicorn이란 python WSGI의 일종이다. 📌 WSGI가 무엇인지? 정의를 보면, "파이썬 어플리케이션(파이썬 스크립트)이 웹 서버와 통신하기 위한 인터페이스"라고 한다. 와닿지 않는다. 그래서 뭐라는거지? 예전 포스팅에서 한번 Web서버와 WAS 서버의 차이에 대해 서술한 적이 있다. https://wlgustlra.tistory.com/132 Web서버는 정적인 컨텐츠를 처리하고, WAS 서버는 동적인 컨텐츠를 처리한다고 말이다. 그렇다면 우리가 작성하는 정적인 파이썬 코드 덩어리가 이러한 컨텐츠들을 어떻게 처리하는걸까? 이 코드덩어리가 HTTP 요청을 받기 위해서는 파이썬 코드를 HTTP 형식으로 바꿔주는 작업이 필요한데 이를 동작하게 하는 기술이 CGI(Common .. 2023. 3. 25.
WAS와 Web Server 차이 1. 웹서버는 정적페이지, WAS는 동적페이지 응답 2. 둘다 함께 배포하는 이유는 각자 잘하는 걸 하기 위함 3. 장고는 꼭 Webserver와 배포하자 장고 배포와 관련된 글을 보면 WS(Web Server, 웹서버)와 WAS(Web Application Server, 웹어플리케이션서버)에 대해서 많이 볼 수 있다. 이름도 비슷해서 예전에는 사람마다 같은 걸 다르게 부르는 건가 싶었다. 이와 관련된 내용을 찾아보면 사람마다 다른 얘기를 하고 있는 것을 볼 수 있었다. WAS와 WS를 분리해서 이야기 하기도 하고 합쳐서 동적으로 기능하는 웹서버라고 이야기 하는 사람도 있었다. 같은 걸 의미하지만 정의의 문제라고 생각했다. 하지만 내 나름대로의 정의는 필요하다고 생각했다. 이번 포스트에서는 웹서버와 웹어.. 2023. 3. 9.
쿠버네티스 란 무엇인가?? 쿠버네티스란 무엇일까요? 쿠버네티스란 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템입니다. 출처: https://kubernetes.io/ 1주일에 수십억 개의 컨테이너를 생성하는 Google이 내부 배포시스템으로 사용하던 'borg'를 기반으로 2014년 프로젝트를 시작했고, 여러 커뮤니티의 아이디어와 좋은 사례들을 모아 빠르게 발전하였습니다. 이후 Google이 CNCF(Cloud Native Computing Foundation)에 코드를 기부함으로써, 쿠버네티스는 오픈 소스 프로젝트가 되었습니다. 쿠버네티스는 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향하고, 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 합니다. 서버리.. 2023. 3. 7.
Redis는 무엇인가?? 1. Redis란? 간단히 말해 메모리 안에 키-값 형태의 데이터베이스를 만들 수 있게 해 주는 친구이다. 일반적으로 우리가 데이터베이스에서 데이터를 가져온다는 것은 하드디스크에서 가져온다는 뜻인데, 하드디스크는 속도로 따지면 최하위권이다. 그래서 가져올 데이터의 용량이 크다면 그만큼 로딩에 시간이 걸리게 되고, 이는 웹서비스에서 마이너스 요소가 된다. 그래서 자주 변경되지 않는 데이터는 캐시 메모리에 넣어놓고 쓰면 용량이 큰 데이터도 매우 빠른 속도로 로딩이 가능해진다. Remote에 위치한 프로세스로 존재하는 In-Memory 기반의(보통 메모리에 상주하면서 RDBMS의 캐시 솔루션으로 사용 "키-값" 구조 데이터 관리 시스템 비관계형이며, 키-값 구조이기 때문에 별도 쿼리 없어도 간단히 데이터를 가.. 2023. 2. 19.
[Python] 병렬처리(Multiprocessing)를 통한 연산속도 개선 파이썬 multiprocessing라이브러리의 Pool과 Process를 활용하여 병렬구조로 연산을 처리할 수 있다. 일반적 연산 def work_func(x): print("value %s is in PID : %s" % (x, os.getpid())) time.sleep(1) return x ** 5 def main(): start = int(time.time()) print(list(map(work_func, range(0, 12)))) print("***run time(sec) :", int(time.time()) - start) if __name__ == "__main__": main() # 결과를 보면 1개의 피드(PID : 15848)가 작업을 처리하고, 1초간 멈추라고 했으므로 작업 수행까.. 2023. 2. 18.
[Python] 'is'와 '=='의 차이 is와 ==의 차이 is는 변수가 같은 Object(객체)를 가리키면 True ==는 변수가 같은 Value(값)을 가지면 True ‘is’의 예시 a와 b는 같은 리스트 객체를 가리킨다. a와 b는 같은 객체이기 때문에 True a와 c는 값은 같지만 다른 객체이기 때문에 False a = [1, 2, 3] b = a c = [1, 2, 3] print(a is b) print(a is c) #True #False ’==’의 예시 a와 b는 같은 리스트 객체를 가리킨다. a와 b는 값들을 가진 리스트이기 때문에 True a와 c는 값들을 가진 리스트이기 때문에 True a = [1, 2, 3] b = a c = [1, 2, 3] print(a == b) print(a == c) # True # True 2023. 2. 16.
728x90