본문 바로가기

spring7

부하테스트(2) - 부하테스트 적용하기 안녕하세요. 이번 글에서는 부하테스트 적용하기에 대해서 포스팅해보겠습니다. 앞선 글을 보며 우리 서비스는 왜 부하테스트를 해야할까, 부하테스트에는 어떤 종류가 있고 어떻게 실행을 계획할 수 있을까에 대해 충분히 고민할 수 있었을 것입니다. 이제 부하테스트를 진행하면서 예상하는 성능, 안정성에 도달하기 위해 개선 - 테스트의 반복적인 과정이 진행될텐데요. 서비스의 부하를 잘 측정하기 위해서는 적절한 부하테스트 도구를 먼저 선정해야 합니다. 1. 부하테스트 도구 선정 서비스에 대한 세밀한 부하테스트를 진행하기 위해서는 시나리오 기반의 부하테스트가 가능한 도구를 사용하는 것이 주요합니다. 저는 JMeter, Ngrinder, K6를 사용해보았고, 각 툴에 대해 제가 느낀 점은 아래와 같습니다. JMeter J.. 2022. 9. 20.
의존관계 분리 경험 공유(1) 의존관계 분리 경험 공유(2) 안녕하세요. 땡쿠팀의 백엔드 개발자 후니입니다. 이번 포스팅에서는 땡쿠팀에서 겪은 패키지간 강한 의존을 막기위한 경험을 소개하고자 합니다. 땡쿠팀은 우아한 테크 코스 내에서 사용되는 쿠폰을 예약하고 사용하는 서비스를 제공하는데요. 따라서 예약이나, 만남 일정이 수락, 생성됨에 따라 도메인간 경계를 넘어 상태를 변화하거나 객체를 생성하는 코드들이 필요합니다. 비즈니스 요구사항에 맞게 개발하다보니 자연스럽게 의존성의 흐름이나 도메인 간 결합도를 느슨하게 하는 데 집중하게 됐습니다. 덕분에 여러가지 고민과 시도를 해보았는데요. 지금부터 패키지간 강한 의존을 끊어내기 위한 땡쿠팀의 고민과 경험을 단계적으로 설명해보겠습니다. 1단계. Domain이 올바른 역할을 하고 있는가? 땡쿠팀.. 2022. 8. 10.
[Logback] Spring Logback configuration 과정 (2) - Spring 이번 포스팅에는 Spring profile 별, 에러 레벨 별로 다른 로그 정책을 설정하는 방법에 대해 소개해보겠습니다. 지난 포스팅에 살짝 언급했듯 Spring은 기본 로깅 전략을 담은 파일을 갖고 있습니다. base.xml ​ 지난 포스팅에 소개했었던 console-appender와 file-appender를 사용하고 INFO 레벨일 때 해당 appender를 적용하는 설정 파일이고, 우리가 스프링을 실행하면 볼 수 있는 로그이기도 합니다. {LOG_FILE:- default} 형태는 LOG_FILE이라는 property가 존재하지 않을 경우, 기본 값으로 default를 사용하겠다는 의미입니다. property는 와 같이 key-value 형태로 지정할 수 있습니다. 어떠한 로그 설정도 없으면 이 .. 2022. 7. 17.
[Logback] Spring Logback configuration 과정 (1) - Appenders 프로젝트를 진행하다 보면 Exception Handler에서 예외가 잡혀 stackTrace를 보지 못하고 에러 지점을 찾지 못하는 경우가 있습니다. 그런 경우에 Spring Boot에서 기본으로 제공하는 Logback을 사용하는데요, Lombok 플러그인을 사용하면 그 사용법이 정말 간단합니다. // lombok과 spring-boot-starter-web을 dependency에 추가해야합니다. @Slf4j public class LogbackTest { public static void main(String[] args) { log.info("어쩌규"); log.error("저쩌구"); } } 이렇게 코드로 작성한 로그를 항상 콘솔로 보며 모니터링 할 수 있을까요? 당연히 불가능합니다. 따라서 Spr.. 2022. 7. 16.
[Spring] 스프링의 일관된 예외처리 스프링에서 제공하는 데이터 접근 객체는 데이터 접근 기술을 쉽고 일관된 방법으로 사용하게 만들고자 하는 목적을 갖고 있습니다. 덕분에 데이터 접근 기술을 변경이 쉽죠. 그 중에서도 각 기술이 변경되더라도 에러 처리에 대한 걱정을 하지 않아도 되는 부분이 발군입니다. 이번 포스팅에서는 스프링이 어떤 방식으로 일관된 예외처리를 제공하는지 살펴보고자 합니다. 일관된 예외 계층 구조 스프링은 데이터 접근 기술 중심적인 예외를 일관된 방법으로 처리하는 것을 지원합니다. 아래 코드를 통해 간단히 살펴보겠습니다. jdbcTemplate에서 update 메서드를 이용하면 JdbcOperation에서 상속한 update를 이용하여 쿼리를 날립니다. JDBC api의 executeUpdate를 써서 만약 에러가 발생하면 .. 2022. 5. 12.
[Spring] MockMvc 를 이용한 컨트롤러 테스트 스프링 프레임워크에는 MockMvc라는 Spring MVC Test 프레임워크가 존재합니다. 서버를 구동하고 있지 않아도 Spring MVC 요청을 처리하는 모듈에서 모의 서블릿을 전달하고 디스패처 서블릿을 구동합니다. 즉, MockMvc는 모의 요청, 응답을 이용해 테스트하고자 하는 시나리오를 가볍게 테스트할 수 있는 프레임워크입니다. 오늘은 MockMvc를 간단하게 알아보고, Controller를 테스트 하는 코드를 작성하고자 합니다. MockMvc 설정 MockMvc를 이용하여 요청을 보내기 위해 몇가지 클래스를 먼저 알아둬야 합니다. MockMvcBuilders.* MockMvcRequestBuilders.* MockMvcResultMatchers.* MockMvcResultHandlers.* 위.. 2022. 4. 23.