본문 바로가기

전체 글362

[테스트 및 리팩토링 8편] fixture-monkey 정리 source 는 Github 에 있습니다. 목차는 테스트 & 리팩토링 목차 에 있습니다. [테스트 및 리팩토링 8편] fixture-monkey 정리 fixture-monkey 테스트 데이터를 만들어주는 오픈소스입니다. 나중에 찾아볼 용도로 정리했습니다. source 자바, gradle 환경 에서 실행했습니다. (Java17) gradle 설정하는데 시간이 오래걸렸는데 처음에는 fixture-monkey-starter 만 설치하면 관련 plugin 은 전부 import 되는줄 알았는데, 그게 아니였습니다. 그래서 그냥 서드 파티 관련 gradle 설정을 전부 넣어버렸습니다. 아래 중에 필요한 서드 파티 설정만 추가하시면 될 것 같습니다. 주의사항으로는 FixtureMonkey 를 통해 데이터를 만들 때,.. 2023. 5. 5.
[ETC 4편] git stash, cherry-pick 정리 목차는 ETC 목차 에 있습니다. [ETC 4편] git stash, cherry-pick 정리 나중에 볼려고 정리했습니다. git stash 현재 stash_test 라는 branch 에서 작업하고 있습니다. 작업을 하다가 develop branch 에서 작업을 해야 합니다. 이럴 때, stash 를 사용하면 좋습니다. stash 를 사용하면 현재 작업중인 것을 스택에 저장해놨다가 나중에 꺼내쓸 수 있습니다. git stash example git check stash_test // do something git stash // 명령어 수행 git stash list // stash 한 스택 목록 가져오기. git checkout develop // do something git checkout sta.. 2023. 4. 26.
[테스트 및 리팩토링 7편] TestContainer Example source 는 Github 에 있습니다. 목차는 테스트 & 리팩토링 목차 에 있습니다. [테스트&리팩토링 7편] TestContainer Example TestContainer 란? DB, 큐, 메시지 브로커 등을 제공해주는 가상 컨테이너입니다. Java, Kotlin 과 같은 JVM 기반에서 동작하며, Docker 를 필요로 합니다. docker-compose 는 언어와 관계 없이 사용할 수 있으며, TestContainer 는 코드 레벨에서 제어할 수 있습니다. 코드에서 제어할 수 있기에 docker 만 떠있다면 테스트 코드에 container 기동, 중단 로직을 넣어서 테스트를 수행할 때, 한 번에 수행할 수 있는 특징이 있습니다. 소스 설명 Spring boot, spring data jpa, .. 2023. 4. 22.
[상품 주문 1편] 개요 (Webflux, 코틀린, Redis, 분산락) source 는 Github 에 있습니다. 목차는 상품 주문 에 있습니다. [상품 주문 1편] 개요 (Webflux, 코틀린, Redis, 분산락) Webflux, 코틀린, Redis, 분산락 공부를 위해 작성했습니다. 상품 주문 기능 상품 주문 시, 동시성을 보장해줘야 합니다. (DB 데이터가 꼬이지 않아야 합니다) 상품 주문 시, 재고 관리가 되야 합니다. (동시 요청에 재고 데이터가 꼬이면 안됩니다) 상품 주문 시나리오 클라이언트에서 상품 주문 API 를 호출합니다. (동시성을 보장해줘야 합니다.) 간단하게 입력 파라미터는 상품 ID, User Id, 구매수량을 입력받도록 진행했습니다. 상품 주문 API 가 들어오면 Redis 를 통해 분산락을 잡고 내부에서 DB 처리를 합니다. 분산락을 잡을 때는.. 2023. 4. 5.
[선착순 쿠폰 발급 4편] 동시 요청 테스트 source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 4편] 동시 요청 테스트 코틀린, Redis 공부를 위해 작성했습니다. 동시 요청 테스트 동시 요청을 하여 쿠폰 발급이 제대로 처리돼는지 확인할려고 테스트를 진행했습니다. 사용한 테스트 툴은 K6 을 사용했으며, 해당 툴을 사용한 이유는 코드로 테스트 시나리오를 만들기가 편하기 때문입니다. 다른 툴들을 사용해봤는데 테스트 시나리오가 조금 복잡해지면 사용하기 어렵다는 점이 있었습니다. Redis 더미 데이터 생성 실행 방법 앞에서 쿠폰을 미리 발급하고 쿠폰 발급 요청을 진행해야하니 Redis 에 미리 더미 데이터를 만드는 프로그램을 만들었습니다. redis jedis 를 사용했습니다. main 을 실행시키.. 2023. 3. 27.
[선착순 쿠폰 발급 3편] API 설명 source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 3편] API 설명 코틀린, Redis 공부를 위해 작성했습니다. API 설명 쿠폰 발급 요청을 해주는 API 에 대해 간단히 정리했습니다. Controller Source @RestController class CouponIssuanceController( val couponIssuanceService: CouponIssuanceService ) { @PostMapping("api/v1/coupon/issuance/request") fun requestCouponIssuance( @RequestBody request: CouponIssuanceDto.CouponIssuanceRequest ): ApiR.. 2023. 3. 27.