CONNECTION-POOL

2020-06-08
들어가기 앞서 이 글을 쓰는데 도움을 주신 cp949 님, 김형준 님 그리고 장재휴 님에게 감사드립니다. 필자는 커머스 코드 자산화 개발일지 를 연재하고 있다. 구현 과정에서 Golang을 기반으로 마이크로서비스 아키텍처를 차용하였고 대부분의 마이크로서비스(회원, 장바구니, 결제, 주문)의 데이터 저장소로 MongoDB 를 사용했다. MongoDB를 사용한 이유는 크게 두 가지였다. 집합적 데이터 모델 객체/관계형 패러다임 불일치 예를 들면 주문 도메인에서 주문을 아래와 같이 객체 모델링 할 수 있다. 그리고 여러 가지 이유로...
2019-06-10
* 시작하기 앞서 이 글은 김형준 님의 경험을 필자가 전해 듣고 상대적으로 시간이 있는 필자가 단순 정리한 것임을 밝힙니다. 글감뿐만 아니라 글을 쓰는 마지막까지 검토해 주신 김형준 님에게 감사드립니다. 애플리케이션에서 데이터베이스를 다룰 때 시스템 자원이 많이 소비되는 부분 중 하나는 데이터베이스 커넥션을 생성하는 것이다. 한 번 생성한 데이터베이스 커넥션을 버리지 않고 재사용 하여 성능을 향상시킬 수 있는데 이때 사용하는 것이 데이터베이스 커넥션 풀(이하 커넥션 풀)이다. sql/database 패키지는 기본적으로 커넥션 풀을 지원한다. 이 글은 sql/database 패키지 커넥션 풀 사용법과 한 걸음 더 나아가 커넥션 풀 내의 커넥션이 끊어지는 경우 어떻게 처리할 수 있는지 소개한다....
2017-09-14
지난 글에 이어 계속해서 성능 테스트에 대한 이야기 입니다. 전체 성능 테스트에 대해서는 시나리오 작성, 테스트 프로그램, 테스트 수행, 원인 파악 등 실제로 수행한 액션들에 대해서는 별도의 글로 한번 정리하도록 하겠습니다. 마이크로 서비스 로 구성된 시스템에서는 서비스간 호출이 많이 발생하는데 이들 서비스간 호출하는데 있어 다양한 프로토콜을 사용할 수 있습니다. 제가 운영하는 서비스에서는 HTTP 기반으로 호출하고 데이터는 JSON 형태로 인터페이스를 하고 있습니다. 마이크로 서비스에서 서비스간 호출에 있어 조심해야 할 사항 중에 하나가 Connection Pool을 사용하지 않고 Socket을 지속적으로 만들고 Close 하는 것입니다. 얼핏 생각하면 Connection Pool을 사용하는 것과 사용하지 않는 것의 차이는 네트워크 연결 비용이 조금 더 들어 처리 속도가 조금 느려 진다는 정도만 생각할 수 있습니다. 저도 이번 테스트를 수행하기 전에 이런 생각을 가지고 있었는데 Connection Pool을 사용하지 않으면 서버 자체에 문제를 줄 수 있다는 것을 알게 되었습니다....
더보기