풀 (Pool)이란? 컴퓨터 과학에서 풀은 사용할 때 획득한 메모리와 나중에 해제되는 메모리가 아닌, 사용할 준비가 된 메모리에 유지되는 리소스 모음이다. 이미 사용할 준비가 된 자원을 메모리 위에 일정량 미리 생성해둔 자원의 집합 클라이언트가 리소스 사용을 완료하면 해제 및 손실되지 않고 풀로 반환된다. 들어가기 전에 Connection Pool과 Thread Pool은 다르다는 점을 알고 가셨으면 좋겠습니다. 더보기 애플리케이션에 대한 모든 요청이 DB에 접근하는 것은 아니기 때문에 WAS의 Thread는 Connection Pool의 갯수보다 여유있게 설정하는것이 좋다. Connection Pool은 DB와 커넥션을 맺기 위한 드라이버를 로드하고 커넥션 객체를 생성하는 등의 과정에서 발생하는 비용..
DeadLock(교착 상태) 이란? 두 개 이상의 프로세스나 스레드가 상대방의 작업이 끝나기 만을 무한히 기다리고 있다가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 말한다. (시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생하게 된다.) 더보기 자원 - (하드웨어, 소프트웨어 등을 포함하는 개념) I/O 디바이스, CPU cycle, memory space, semaphore 등 Process1 과 Process2가 동시에 Resource1과 Resource2를 모두 얻어야 하는 상황이라고 생각하면 Process1이 Resource1을 얻은 경우 Process2는 Resource1을 얻을 수 없고 Process2가 Resource2를 가지고 있어서 Process1은 Resour..
사용자가 로그인하고 자동으로 바로 토큰을 재발급 할 일은 없겠지만 테스트 코드를 작성하면서 문제가 있었다. 아래 메서드를 통해서 refresh 토큰이 존재할 경우는 update query를 날려주고 존재하지 않으면 새로 insert query를 날려주기 위해서 변경 감지를 사용하지 않았다. Refresh Token으로 Access Token을 발급시 Refresh Token도 재발급 했다. 순조롭게 테스트를 작성했는데 문제가 발생했다. when절 (authService에 reissueToken 메서드) 쿼리 설명 select-query 2개는 업데이트를 하기 전에 token을 통해서 유저를 조회하는 로직이 있기 때문에 발생했다. one-to-one 관계로 refresh token ➡️ user로 단방향으..
Web이 발전하면서 규모가 커지면서 코드량이 늘어나고 확장성과 유지보수를 위해 자연스럽게 Front-end와 Back-end가 분리되었다. Frontend : 서비스를 편하게 이용할 수 있도록 사용자 인터페이스를 다룬다. Backend : 사용자들이 실질적으로 원하는 정보 또는 데이터를 관리하거나 제공한다. 분리된 서버에서 데이터를 주고 받기위해 HTTP 통신은 필수가 되었다. HTTP 특징 클라이언트는 서버에게 Request를 보내고 서버는 클라이언트의 요청을 Response하는 단방향 통신이라고 들어봤다고 생각한다. 클라이언트 서버 구조 무상태 프로토콜(Stateless), 비연결성 HTTP 메시지 단순함, 확장 가능 왜 HTTP의 특징이 Stateless인지 알아보고 단순하고 확장 가능한 이유는 ..
HTTP는 Stateless, Connectionless의 특징을 지니기 때문에 통상적인 Http 통신은 클라이언트가 요청을 보내는 경우에만 Server가 응답할 수 있다. (단방향 통신) 하지만 웹 개발을 하다보면 두 프로그램 간의 메시지를 교환해야하는 양방향 통신 혹은 실시간으로 데이터 처리가 필요한 경우가 있다. (채팅, 주식, 비디오 데이터) 통신기술의 종류를 알아보자 실시간 통신 기술 종류 (http 프로토콜) Polling Real-time 통신에서는 언제 통신이 발생할지 예측이 불가능하여 클라이언트가 일정 주기로 request를 서버로 계속 보내서 이벤트 내용을 전달받는 방식이다. 클라이언트가 많아지면 서버의 부담이 급증하게 된다. request connection을 맺고 끊는것에도 자원이 ..