2024/03 3

spring과 fast api의 동시 요청 처리 차이점 정리

이번 포스팅에서는 spring boot와 fast api의 동기 처리 차이점을 정리하려고 합니다. Spring Boot 에서의 동시 요청 처리 Spring boot 에서는 multi Thread를 사용하여 동시 요청을 처리합니다. 이를 위해 Thread Pool이 존재하는데 그 안에 2개의 Thread가 있다고 가정하겠습니다. 만약 2개의 request가 동시에 온다면 어떻게 될까요? (I/O 관련된 request 1개와 다른 request 1개, CPU는 1개, 다른 Process는 없음) 먼저 I/O 관련 request가 0.0001초 빠르게 들어온 경우 1개의 Thread를 할당하고 애플리케이션 계층에서 OS 계층으로 전달됩니다. 이후 OS는 I/O device에 read/write 등을 요청하고 ..

카테고리 없음 2024.03.18

java spring vs python fast api 비교

이번 포스팅에서는 python fast api를 개발하기 전 python fast api와 java spring의 차이점에 대해 비교하며 공부한 것을 정리하려고 합니다. 1. 파이썬과 자바의 차이 자바는 컴파일 언어인 한편, 파이썬은 인터프리터 언어입니다. 컴파일 언어: 코드가 실행되기 전 컴파일러를 거쳣서 기계어로 모두 변환되어 실행되는 프로그래밍 언어 인터프리터 언어: 개발자가 작성한 코드를 기계어로 변환하는 과정없이 한줄씩 해석하여 명령을 바로 처리하는 프로그래밍 언어 2. java spring vs python fast API Fast API 1. 비동시성을 지원합니다. - 하나의 단계가 시작하면, 그 것이 끝날 때까지 기다리지 않고 다른 단계를 시작합니다. 2. type annotation을 지..

jwt refresh token 을 Redis로 리팩토링하기

기존에 db 테이블에 저장하여 조회하던 refresh Token을 Redis 인메모리 데이터 구조 저장소로 리팩토링하는 과정을 기록하는 포스팅입니다. 기존의 코드는 아래와 같습니다. 1. requestBody에 담긴 accessToken을 바탕으로 DB에서 refreshToken을 체크합니다 2. 만약 refreshToken이 valid하다면 accessToken을 발급합니다. DB에서 Redis로 리팩토링 하는 이유 1. refreshToken은 만료기간이 있는 token인데 DB에 저장할 필요가 있는지에 대한 의문이 들었습니다. -> DB는 또한 디스크의 읽기 쓰기와 관련되므로 api 응답속도도 느립니다. -> 인메모리를 사용하는 것으로 리팩토링하기 DB에서 Redis로 리팩토링 하는 과정 1. me..

백엔드/Spring 2024.03.04
728x90