전체 글 55

How to use HTTP(S) Test Script Recorder in JMeter in chrome browser using macOS

How to use HTTP(S) Test Script Recorder in JMeter in chrome browser using macOS 두 가지 방법으로 jmeter로 https script를 recording합니다jmeter에서 주는 가이드로 test script recorder 만들기proxyman을 이용해 test script recorder 만들기jmeter에서 주는 가이드로 test script recorder 만들기test script recorder 생성여기는 아무거나 입력해도됩니다잘 생성된것을 확인했습니다Start 클릭해줍니다이렇게 RootCA가 jmeter bin 디렉토리에 생성되었으니 browser에 RootCA를 설치하랍니다그러면 이렇게 뜹니다 jmeter에서 8888포트로 프..

kotlin-springboot spring-kafka로 produce, consume 시작하기

이번 포스트에서는 kotlin-springboot 프로젝트에서 spring kafka로 produce, consuming하는 샘플을 구성하고 kafka 사용시 기본으로 따라오는 세트들을 구성합니다 다루는 내용spring-kafka consumer, producer 설정kafka listener consumer groupbatch listener수동커밋중복 컨슘컨슘 누락EOS (Idempotent)Error HandlingDLQ   build.gradle.ktsimport org.jetbrains.kotlin.gradle.tasks.KotlinCompileplugins { id("org.springframework.boot") version "3.0.11" id("io.spring.depende..

docker compose로 kafka kraft 모드 구성

이번 포스트에서는 로컬 컨테이너로 띄운 kafka-ui와 호스트머신에서 springboot로 띄웠을때 둘다 kafka-broker에 붙는 예시를 구성했습니다kraft 모드는 zookeeper가 없는 kafka cluster 구성입니다kafka-ui는 docker bridge 네트워크를 구성해서 dns로 통신이 가능한 상태인데, springboot에서는 localhost로 붙어도 broker를 찾지 못한다는 이슈가 발생합니다.docker compose로 kafka를 띄웁니다docker-compose.ymlversion: "3.8"services: kafka1: container_name: "kafka1" image: bitnami/kafka:latest ports: - "9092..

kafka 2024.08.11

테스트케이스 작성시 DRY 원칙_jest

환경jest": "29.7.0" 테스트코드를 작성할때 DRY 원칙에 대해서 정리하려고 합니다 테스트 데이터 생성 - DRY를 엄격히 적용하지 않음각 테스트 케이스에서 필요한 데이터를 명시적으로 생성하면, 해당 테스트가 어떤 상황을 검증하는지 즉시 파악할 수 있습니다.테스트 간 독립성을 유지하기 쉽습니다. 한 테스트의 변경이 다른 테스트에 영향을 미칠 가능성이 줄어듭니다.비즈니스 로직의 변경사항을 테스트 코드에 반영하기가 더 쉽습니다. Assertion 부분 - DRY 원칙 적용공통된 검증 로직을 재사용함으로써 코드의 중복을 줄이고 가독성을 높일 수 있습니다.검증 로직의 변경이 필요할 때 한 곳만 수정하면 되므로 유지보수가 용이합니다.복잡한 검증 로직을 재사용 가능한 함수로 추출하여 테스트 코드의 의도를 ..

Nestjs/jest 2024.08.09

Java/Spring -> Kotlin/Spring 변환 - 4

환경IDE: intellijSpringBootVersion: 2.7.18Gradle: 8.5Java: 17해당 포스팅은인프런 "코틀린 문법부터 실무까지 (자바 to 코틀린 실무)" 을 따라하면서 Java/Spring 프로젝트를 Kotlin/Spring 프로젝트로점진적인으로 변환하는 내용을 담고 있습니다 다루는 내용Controller 변환DummyEntity 클래스 생성DummyDto 클래스 생성letOptional, Stream 대체Repository 변환범위함수 적용Controller 변환Kotlin은 Typescript와 비슷하게 한 파일에 여러 클래스와 enum function 등을 한 파일에 모아 둘수 있습니다CRUD 컨트롤러를 C,R,U,D 각각을 쪼개려고 합니다AS-ISimport com.ma..

소프트웨어 설계원칙 - 관심사 분리

정말 많이 듣고 쓰는 용어지만 머릿속에 정리가 안되어 정리했습니다웹애플리케이션 개발자로서 소프트웨어 개발 및 유지보수시 프로그램을 설계하는일이 대부분입니다가장 중요한 개념이라고 하면 "관심사 분리"라고 말할 수 있습니다관심사 분리(Separation of Concerns, SoC):정의: 프로그램을 구별된 부분으로 분리하여, 각 부분이 단일 관심사를 다루도록 하는 설계 원칙입니다.목적:코드의 모듈성 향상유지보수성 개선재사용성 증가테스트 용이성 제고주요 이점:코드 복잡성 감소변경의 영향 범위 최소화병렬 개발 가능적용 방법:계층화 (예: 프레젠테이션, 비즈니스 로직, 데이터 접근 계층)모듈화인터페이스 사용이제 코틀린으로 출퇴근 관리 시스템의 일부를 구현하는 예시를 들어보겠습니다:// 데이터 액세스 계층int..

디자인패턴 2024.08.07

Springboot test - 3 - TestContainers

이전 포스트에서 WebMvcTest, Mock Test로 Controller와 Service만 슬라이스 테스트를 구성했습니다.운영환경의 DB와 동일한 DB로 테스트를 추가하여 더욱 견고한 웹 애플리케이션을 유지보수 하고싶습니다.TestContainers를 통해 docker container로 DB를 올려서 중간 범위 테스트^1 를 구성할 수 있습니다.docker compose 파일과 test container로 테스트 환경 구축하기개발환경 구축시 단일 컨테이너들을 각각 관리하는 것보다 docker compose 파일하나를 구성하여 로컬 개발환경에 필요한 스택을 모아서 구축하는 경우가 흔합니다TestContainers는 로컬환경의 docker comose 파일을 사용할 수 있어서 docker compose..

Springboot test - 2 - Service test with mockito

이번 포스트에서는 JUni5에서 Mockito로 Mock을 통한 서비스 애플리케이션 테스트를 다루겠습니다중간규모테스트(통합테스트)에 한동안 빠져있었으나, 기능을 견고하게 하기위해 현실적으로 가장 강력한 방법은 슬라이스 테스트입니다물론 배포전 실제 API를 호출해볼 수 있겠지만 시스템의 복잡도는 프로젝트마다 천차만별이고, 외부 시스템 연동 기능의 경우에는 완벽하게 테스트하기가 어려울수 있습니다. 슬라이스 테스트는 결국 모킹인데 그걸 믿을 수 있냐? 라고 볼수 있고, 모킹테스트를 해도 실제 API 동작하지 않는 경우도 있을 수 있습니다. 그 경우에는 특정 관심사 부분의 슬라이스 테스트가 없거나 실패했을겁니다. 우리가 만든 기능에 각 관심사마다 테스트를 작성했고 테스트 커버리지를 높였다면 충분히 믿을 수 있는..

Springboot test - 1 - controller test

Test Slicing^1 이란 테스트를 위해 ApplicationContext를 분리하는걸 말합니다MockMvc를 이용하여 Controller 테스트를 진행할 수 있습니다다음과 같이 특정 컨트롤러만 테스트할 수 있습니다@WebMvcTest(FeedControllerV2.class)public class FeedControllerV2Test {@WebMvcTest는 해당 컨트롤러만 Bean으로 등록되지않고, ControllerAdvice, Converter, WebMvcConfigurer, HandlerMethodArgumentResolver^2 등이 등록되며 애노테이션 주석으로 확인해볼 수 있습니다컨트롤러 테스트의 목적은 입력검증, 출력검증입니다.예시 테스트 코드를 보면서 어떤 것들이 가능한지 확인해보..

스프링배치 FlatFileItemReader 시작하기

환경IDE: intellijSpringBootVersion: 3.0.11Gradle: 8.8Java: 17 해당 포스트는한 번에 끝내는 Spring 완.전.판 초격차 패키지 Online. 의 강의를 코틀린으로 재구성한것입니다 다루는 내용FlatFileItemReaderFieldSetMapperJobParametersValidatorbuild.gradle.ktsimport org.jetbrains.kotlin.gradle.tasks.KotlinCompileplugins { id("org.springframework.boot") version "3.0.11" id("io.spring.dependency-management") version "1.1.0" kotlin("jvm") version..