몇 년 전 운영 프로젝트 설정 시 자세하게 봤던 내용이지만, 트래픽이 대폭 증가하고, DBMS에 연결된 프로젝트와 모듈이 늘어남에 따라 재설정을 위해 개념을 다시 정리하게 되었다.1. 기본적인 데이터베이스 연결과정DB Connection 열기- 데이터베이스 드라이버를 사용하여 데이터베이스 서버와의 연결TCP 소켓 열기 - 데이터베이스 전송을 위해 TCP 소켓을 생성하고 데이터베이스 서버와 통신채널을 설정데이터 통신 수행 - 생성된 소켓을 통해 SQL 쿼리를 전송하고 데이터를 Read / WriteDB연결 닫기 - 데이터 통신이 완료되면 데이터베이스와의 연결을 종료TCP 소켓 닫기 - 사용한 TCP 소켓을 닫아 통신 채널 해제웹 어플리케이션은 클라이언트의 HTTP 요청이 들어오면 스레드를 생성한다. 각 요..
1. 문제 상황 스프링 부트 3, 스프링 시큐리티 6 업데이트가 되며 기존에 사용 중인 WebSecurityConfigurerAdapter를 더 이상 지원하지 않기에 기존의 WebSecurityConfigurerAdapter를 상속받아 기능을 구현하는 대신 컴포넌트화 시켜서 구현해야한다. SecurityFilterChain으로 스프링 시큐리티를 구현 중 (antMacher -> requestMacher, dispatcherTypeMatcher설정 등 기본 Spring Security6.0 마이그레이션 가이드는 적용 완료 https://docs.spring.io/spring-security/reference/5.8/migration/index.html) Preparing for 6.0 :: Spring S..
1. 단위 테스트 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. 통합 테스트의 경우 시스템을 구성하는 컴포넌트들이 커질수록 테스트 시간이 길어지지만, 단위 테스트의 경우 해당 부분만 독립적으로 테스트하기에 코드의 변경이 있어도 빠르게 문제 여부를 확인할 수 있다. CleanCode 책에 의하면 깨끗한 테스트 코드는 다음 5가지 규칙을 따라야 한다. Fast - 빠르게 동작하여 자주 돌릴 수 있어야 한다. Independent - 테스트는 독립적이며 서로 의존해서는 안된다. Repeatable - 어느 환경에서도 반복이 가능해야 한다. Self-validating - 테스트는 성공 또는 실패로 결과를 내어 자체 검증되어야 한다. Timely - 테스트는 적시에, 테스트하려는 실제..