오늘 한 일
- 팀원간 작업 현황 파악 및 목표 재설정
- Stream을 활용한 엔티티 연결, DTO 객채로 변환
- CI/CD 파이프라인 개발
- Index공부
작업 내용
팀원간 작업 현황 파악 및 목표 재설정
오후4시, 저녁10시마다 팀원간의 작업상황을 수시로 체크하고 다음 날 진행해야 할 개발과정에 대한 진도를 다시 설정했다.
나를 제외한 세 분이 I 성향을 갖고 있어서 소통이 항상 조용조용하고 말수가 없는 편이었지만 다들 최선을 다해주고 있는것 같아서 너무 감사하기도했고 조금은 답답한 마음도 들기도했다... ㅋㅋㅋㅋㅋㅋ 하지만 반대로 생각해보면 아직 개발을 많이 안해본 분들도 계시고 각자의 생각에 정리할 시간이 필요하기도하니 조금만 서로를 이해하면 다 그럴수 있다는 생각이 들었다.
이렇게 각자 업무를 다시 분담하고 지금도 수시로 팀원들의 개발상황을 체크하고 있다.
과연 개발이 다 완료되면 정상적으로 각 API가 작동할 수 있을지 기대가된다 ㅎㅎ
Stream을 활용한 엔티티 연결 및 DTO객체 변환
- Stream을 사용하면 기존 반복문과 같은 구문과 달리 병렬적으로 처리 가능하며 더 가독성을 높일 수 있다.
Stream을 사용하지 않았다면 코드가 길어지고 for문을 사용해야 했지만, 메서드 체이닝을 통해 가독성을 높이고 더 간결하게 작성할 수 있다.
오늘은 Stream에서 map()과 mapToInt()를 사용했다.
stream()을 사용하면 car.getMenuCarts()에서 가져온 리스트를 Iterator처럼 요소를 하나씩 처리할 수 있도록 변환한다.
이후 map()을 사용하여 각 MenuCart 객체를 CartItemDto로 변환하는데, CartItemDto::from과 같은 메서드 참조(::)를 사용하면 메서드를 직접 호출하지 않고도 변환이 가능하다.
이 방식은 람다 표현식의 축약형이며, 컴파일러가 추론할 수 있는 경우에만 사용할 수 있다.
또한, mapToInt()는 getTotalPrice() 또는 getQuantity() 값을 정수로 변환하여 IntStream을 반환하고, 이를 sum()을 이용해 전체 합계를 계산할 수 있다.
이 과정을 3단계로 나눌 수 있는데 가공(stream) / 중간 연산(map, mapToInt) / 최종 연산(toList(), sum() 으로 구분할 수 있다.
이 방식은 람다와 동일하며 추론이 가능한 메서드들에 대해서 사용이 가능하다는 특징이 있다.
//메뉴와 장바구니 정보를 이용해 응답 DTO 반환
List<CartItemDto> cartItemDtos = cart.getMenuCarts().stream()
.map(CartItemDto::from)
.toList();
int totalPrice = cart.getMenuCarts().stream()
.mapToInt(MenuCart::getTotalPrice)
.sum();
int totalQuantity = cart.getMenuCarts().stream()
.mapToInt(MenuCart::getQuantity) // MenuCart에서 quantity 값 추출
.sum(); // 총 합계
CI/CD 작업
- EC2 서버 개설 2. PostgreSQL 서버 개설(Docker) 3. Dockerfile 생성 4. Git Actions를 사용해서 CI/CD 파이프라인 개발 5.duckDns 무료 도메인 적용 6. nginx를 사용한 SSL 적용
이 과정을 수행하였다. 이 과정에서 비용이 발생할 수 있는 탄력적 IP, RDS Public 설정은 발표 이전에나 사용하게 될 것 같다. 만약 이후에도 문제가 없다면 변동없이 지금처럼 쓸 것 같다.
Index가 무엇이고 JPA에서는 Index를 자동으로 생성하는게 어떤게 있는지, 적절한 인덱스 개수
'TIL' 카테고리의 다른 글
[TIL] 모놀리딕 스프링 부트 프로젝트를 수행하고 내가 공부해야 할 것들 (0) | 2025.02.26 |
---|---|
[Spring Security 예외 처리] 인증 및 인가에 대한 예외처리 방법 (0) | 2025.02.25 |
[TIL] Filter예외 처리, 서버 배포 (0) | 2025.02.19 |
[TIL] 팀원간 코드 리뷰 진행 및 인덱스가 많아지면 생기는 문제, JPA의 flush 발생하는 조건 (0) | 2025.02.18 |
[TIL] SoftDelete 개발 방식, 서브 모듈 설정, PR 및 Postman으로 API문서 공유하기 (0) | 2025.02.17 |