ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [배달 중계 서비스#0] 타임 라인
    개발 일지 2024. 7. 12. 14:33

    프로젝트 링크

     

    07.02

    • 프로젝트 시작
    • 프로젝트 목표 설정
    • 주제 선정

    07.04

    • 요구 사항 정리
    • ERD 설계
    • 기능 마인드맵
    • 상태 다이어그램 설계
    • 프로젝트 초기화

    07.05

    • Gradle 파일 설정
    • Integeration 테스트 용 sourceSet과 Jacoco task 설정
    • Issue와 PR 연동 법 확인
    • DTO 패턴을 사용하지 않는 프로젝트에 대한 고민

    07.06

    • zipkin, sleuth를 위한 Gradle파일 Spring Cloud 의존성 설정
    • Delivery-info YML 파일 설정
    • Delivery-info 구조화
    • MongoDB 연관 관계 연결 법 학습
    • 리액티브 프로그래밍 추가 학습
      • .subscribeOn(Schedulers.boundedElastic())
        • subscribeOn : 데이터의 흐름을 시작하는 지점
        • Schedulers : 쓰레드 풀을 관리하는 스케줄러
        • boundedElastic : 부하에 따라 스레드 풀을 동적으로 조절하는 스케줄러
      • .fromCallable : 하나의 결과를 반환하는 작업을 실행하고, 결과를 Mono로 감싸서 반환

    07.07

    • MSA 프로젝트에서 id로 요청을 받아 데이터베이스에서 객체를 조회하는 대신, 클라이언트에게 객체로 요청을 받는 방식에 대한 고민
    • Validation 정책 설계
    • SaveDelivery API 구현
    • AcceptDelivery API 구현
    • setDeliveryRider API 구현

    07/08

    • Domain Test(Delivery, DeliveryStatus) 구현
    • PickUpDelivery API 구현
    • CompleteDelivery API 구현
    • FindDelivery API 구현
    • FindAllDelivery API 구현

    07.09

    • Delivery-Info ExceptionHandler 구현
    • Publish 재시도 로직 구현
    • Delivery Publish Tests 구현
    • DeliveryService Tests 구현(1/2)

    07.10

    • DeliveryService Tests 구현(2/2)
    • 재시도 로직 테스트 검증 실패 : 재시도가 수행되지 않음을 발견
    • 테스트 대상 식별
    • 통합 테스트와 End-To-End 테스트 리마인딩과 적용 대상 고민
    • Gradle sourceSet 학습, integration 설정
    • Test Container 설정 학습
    • Message Converter 에러 해결

    07.11

    • Delivery-Info ExceptionHandler Test 구현
    • ExceptionHandling 대상 추가
    • Delivery-Info End-To-End Test 구현
    • Jacoco role 커버리지 하향 수정, 지표 분석
    • ./gradlew 명령어 분석
      • ./gradlew 'serverName' : 기본 작업(assemble)을 실행한다.
      • ./gradlew test : 유닛 테스트를 실행한다.
      • ./gradlew check : 검증 작업을 실행한다. 'test' 작업이 포함된다.
      • ./gardlew build : 'assemble'과 'check' 작업을 모두 실행한다.
    • PullRequest 시 코멘트에 Jacoco Coverage 지표 노출

    07.12

    • 자동화를 위해 하루 종일 GithubActions와 싸우는 중...
      • Google Java Format 적용 자동화 에러
        • Github Actions 쓰기 권한 필요-> Repository -> Setting -> Actions -> General -> Workflow permissions / Read and wirte permissions check
      • Jacoco Coverage Comment 생성에 Repository token 필요
        • token: ${{ secrets.GITHUB_TOKEN }} / Github Actions가 가지고 있는 기본 환경 변수로 따로 변수 설정 필요 없음
      • Jacoco/index.xml 파일을 못 찾는 오류 발생
        • 기존에는 metrix에 TEST_COMMAND 상수를 지정하여 독립적으로 각 gradle 명령어를 실행 했음
        • Jacoco Report 생성과 그것을 의존하는 Report Comment 생성 명령이 꼬여 에러 발생
        • 모든 테스트를 순차적으로 실행, Comment 생성을 가장 마지막에 실행함

    07.13

    • 새로운 모듈을 생성하며 생긴 모듈 간 계층 구조 문제 해결
      • setting.gradle 에 하위 모듈 추가
      • root 디렉토리에 gradle/wrapper/gradle-wrapper.properties 확인
      • 계층 밖에서 자동 생성된 모듈은 삭제
      • 캐시를 초기화하고 IDE를 재시작
    • Delivery-Relay 구조화
    • Delivery-Relay Gradle 설정
    • Delivery-Relay addDelivery Event 구현

    07.14

    • Delivery-Relay setRider Event 구현
    • Delivery-Relay 배송 요청 조회 API 구현
    • Delivery-Relay 배차 요청 조회 API 구현
    • Delivery-Relay Subscriber Test 구현
    • Delivery-Relay Repository Test 구현
    • Delivery-Relay Controller Test 구현
    • EventListener가 실제로 발행된 이벤트를 수신하는 것을 테스트로 검증 하고 싶은데, 그를 위해 사용하는 객체인 RabbitListenerTestHarness 의 사용법을 찾기가 힘들다.

    07.15

    • Rider-Location 위치 정보 저장, 갱신 API 구현
    • Rider-Location 위지 정보 조회 API 구현
    • Rider-Location Service Test 구현
    • Rider-Location Repository Test 구현
    • @DataRedisTest 사용하는 테스트 도중 버전 충돌 발생
      • Spring Cloud 버전 최신화
      • @DataRedisTest가 로드하지 않는 Context를 @Import를 사용해 추가

    07.16

    • Rider-Location Controller Test 구현
    • Delivery-Info findById 조회 실패시 Exception 발생하지 않는 에러 수정
    • Rider-Location CI 설정
    • 서비스 플로우 스냅샷 설계 최종 수정
    • 서비스 아키텍처 설계 최종 수정

    07.17

    • ReadMe 작성
    • 설계도 수정 및 블로그 글 수정
    • 일지 작성 종료

    남은 작업

    • AWS 배포 환경 구축
    • k6 성능 테스트 및 리팩터링
    • 프로젝트 관련 블로그 글 업로드
Designed by Tistory.