깃허브 소스
-
Java에서 테스트 코드란? (작성 예시 포함, 깃허브 소스 첨부)개인 공부/java 2024. 8. 5. 20:11
🔴 테스트란?🟠 테스트의 종류🟢 단위 테스트 (Unit Testing)단위 테스트는 소프트웨어의 개별적인 부분, 즉 "단위"를 격리된 환경에서 테스트하는 것입니다.주로 클래스, 메서드, 함수와 같은 작은 코드 조각을 대상으로 합니다.목적은 개별 단위가 예상대로 동작하는지 검증하고 코드의 신뢰성을 확보하는 것입니다.🟢 통합 테스트 (Integration Testing)통합 테스트는 여러 개의 단위나 컴포넌트를 함께 테스트하여 이들이 올바르게 상호 작용하는지를 확인하는 것입니다.각 단위 테스트가 개별적으로 잘 작동한다고 해도, 통합할 때 발생할 수 있는 문제를 찾아내기 위해 필요합니다.데이터베이스 연동, 외부 API 호출 등과 같은 상호 작용을 테스트하는 데 사용됩니다.🟢 인수 테스트 (Accept..
-
동시성 제어 [3] Redis개인 공부/spring 2024. 8. 5. 19:54
🔴 분산 Lock동시성 제어 [1] java 처리동시성 제어 [2] DB Lock에 이어 Redis를 사용한 동시성 제어 방법을 학습해보자.분산된 서비스에서 사용할 수 있는 락 방법으로 DB를 사용하는 방법에 대해 알아봤었다. 하지만 DB의 경우 이미 insert와 select 등 다양한 처리를 진행하고 있기에 lock을 걸었을때 성능의 이슈와 DB 자체가 빠른 시스템이 아니라 처리 속도면에서도 좋은 결과를 보여주진 않는다.그래서 우리가 선택할 수 있는 동시성 제어 방법으로 in-memory의 캐시를 사용하는 Redis를 통해 Lock을 처리할 수 있다.🟠 Redis(lettuce) 설정Redis를 사용하기 위해서는 Redis 서버를 생성해야되기 때문에 설정부터 시작해보자.🟢 docker compo..
-
동시성 제어 [2] DB Lock개인 공부/spring 2024. 8. 5. 19:53
🔴 분산 Lock지난 번 글에 이어 동시성 문제를 해결해보려고 한다.java 동시성 제어 [1]java 처리분산된 여러 서버에서 서버마다 락을 처리해놔도 여러 서버가 존재한다면 동시성은 해결될 수 없다. 그래서 여러 서버가 DB 한곳으로 요청할때 DB에서 락을 걸어 동시성 이슈를 해결하는 방법에 대해 알아보자.🟠 DB Lock (비관적 락)데이터를 저장하고 있다면 당연히 DB를 사용하고 있을것이다. RDB를 사용하고 있는 경우 query를 통해 Lock을 걸어줄 수 있다.여기서 비관적 락이란 트랜잭션이 발생하면 DB에서 락을 걸어서 대기시키는 것이다.🟢 Service@Service@RequiredArgsConstructor@Transactional(readOnly = true)public class..