템플릿 메서드 패턴 알아보기
·
Back-end
템플릿 메서드 패턴이란?@Testvoid templateMethodV0() { logic1(); logic2();}private void logic1() { long startTime = System.currentTimeMillis(); // 비즈니스 로직 실행 log.info("비즈니스 로직1 실행"); // 비즈니스 로직 종료 long endTime = System.currentTimeMillis(); long resultTime = endTime - startTime; log.info("resultTime = {}", resultTime);}private void logic2() { long startTime = System.currentTime..
테스트와 TDD(Test Driven Development)
·
Back-end
Test란?테스트란 개발된 코드가 기대한 대로 동작하는지 검증하는 일련의 과정이다.테스트를 통해 버그를 사전에 방지하고, 코드의 신뢰성과 유지보수성을 높일 수 있다.테스트에는 유닛 테스트(클래스나 함수의 로직 점검), 통합 테스트(여러 계층 간의 연동 검증),E2E테스트(사용자 플로우 검증), 성능/부하 테스트 등 다양한 테스트가 있다. 테스트 피라미드테스트 피라미드는 테스트 전략의 개념으로, 상단으로 갈수록 더 복잡하고 시간이 오래 걸리고,하단으로 갈수록 더 작고 빠르게 실행되는 테스트를 의미한다. 단위 테스트(Unit Test)피라미드의 가장 아랫단에 위치하는 단위 테스트란 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지검증하는 절차이고, 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 ..
ThreadLocal를 이용한 로그 추적 (feat. 동시성 이슈)
·
Back-end/Java
요구사항[f8477cfc] OrderController.request()[f8477cfc] |-->OrderService.orderItem()[f8477cfc] | |-->OrderRepository.save()[f8477cfc] | |서비스를 운영하면서 로그를 추적하기 위한 프로그램을 작성한다고 해보자.HTTP 요청의 흐름대로 Controller, Service, Repository에서의 실행시간과 각각의 깊이를 나타내려면 어떻게 해야 할까?가장 단순하게 생각해 보면 파라미터를 통해 넘겨주는 방법을 고려해 볼 수 있다.이를 위해선 Controller에서 요청이 시작되면 해당 요청의 id 값과 깊이를 Service와 Repository에 넘겨주면 된다.해결법파라미터를 통해 HTTP 요청 id값 전달하기위..
데이터베이스를 최적화하는 방법들
·
Back-end
데이터베이스를 어떻게 설계하고 쿼리를 어떻게 작성하느냐에 따라병목현상이 발생하여 소프트웨어의 성능이 저하될 수 있다.데이터베이스를 최적화하는 방법을 자세히 소개하는 글이 있어 이 글을 보며 정리해 봤다. 해당 포스트 링크 11 Database Optimization TechniquesDatabase often becomes the bottleneck in software performance. Having an optimized database is essential for high performing systems. Here…danielfoo.medium.com  인덱싱 (Indexing)1. 인덱스 만들기인덱스는 빠른 조회 메커니즘을 제공하는 데이터 구조로, 쿼리 성능을 크게 향상시킨다.인덱스는 DB..