-
[배달 중계 서비스#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로 감싸서 반환
- .subscribeOn(Schedulers.boundedElastic())
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 생성을 가장 마지막에 실행함
- Google Java Format 적용 자동화 에러
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 성능 테스트 및 리팩터링
- 프로젝트 관련 블로그 글 업로드
'개발 일지' 카테고리의 다른 글
[배달 중계 서비스#4] Jacoco 도입과 코드 커버리지 (0) 2024.07.18 [배달 중계 서비스#3] Spring Cloud 버전 충돌과 Test Context Load 이야기 (1) 2024.07.16 [배달 중계 서비스#2] 설계 (0) 2024.07.04 [배달 중계 서비스 #1] 개인 프로젝트 시작 (0) 2024.07.02 최종 프로젝트 성능 테스트(k6 성능 테스트) (0) 2024.05.15