서두
지금 프로젝트를 진행하면서 MySQL의 커넥션을 너무 과하게 사용하고 있다는 것을 안다. 그래서 이 부분을 어떻게 해결할까 고민하다가 커넥션 풀이라는 개념을 찾아서 공부한 내용을 정리하려 한다.
네트워크 통신방법 (TCP)
네트워크 통신 방법에는 TCP와 UDP가 있다. 그 중 TCP 방법은 한번의 요청에 한 번의 응답의 형태로 진행된다.
그래서 클라이언트(사용자)가 DB에 요청을 하면 2단계가 진행된다.
1단계: TCP 통신 요청
2단계: TCP 통신에 대한 응답
이 두 가지를 합쳐서 핸드쉐이크라 하며, 웹서버와 DB연결 확인 과정이라 할 수 있다. 최초 1회 성공하면 종료까지 유지가 된다.
2단계가 끝나면 Connection이 생성되고 연결된 상태가 된다. 이때 서로 데이터를 주고 받을 수 있게 된다. 그리고 서버도 클라이언트에 요청할 수 있는데 이를 '소켓 통신'이라 한다.
HTTP 통신: 클라이언트가 요청, 서버가 응답 / 단방향 통신 성격
소켓 통신: 양방향 연결이 이루어지는 통신 (ex. 채팅)
그리고 끝내려 하면 커넥션이 종료되고 그 후 소켓 통신이 종료된다.
커넥션 풀
미리 커넥션을 맺어놓고 그것을 가져다 쓰는 방식이다. 커넥션을 담아두는 공간(pool)이라 생각하면 된다(DB서버와 소켓이 열려 있는 상태).
그래서 클라이언트는 DB서버와 통신하고 싶을 때 커넥션 풀에서 커넥션을 을려서 사용한다(마치면 반환).
정리하기
이번에는 커넥션 풀을 사용하기 위한 사전공부와 커넥션 풀을 알아봤다. 리펙토링은 아직 할 수 없지만 1차적으로 프로젝트를 마치면 바로 커넥션 풀을 사용하고 싶다. 이렇게 하나씩 배워가면서 Node js 개발자로 단계별로 거듭나고 싶다.