Insight/회고

12월 개발 스프린트 기술 중점 회고

싯벨트 2023. 12. 18. 19:49
728x90

SNS

  • PUB/SUB 메시지를 효율적으로 사용하는 것이 중요하다.
  • sns 주제 설정과 해당 주제를 구독하는 sqs 들의 관계를 고려해서 메시지 인터페이스를 구성하자.
    • 이때 sns 주제, sqs 이름, 메시지 구성 키값들 등 컨벤션은 기능이 잘 드러나도록 하자.
  • 구독하는 queue가 많은 주제의 경우, 순서 보장 및 중복제거가 필요하므로 fifo로 구성하는 것이 좋다.
    • 이때 메시지가 쌓이는 기준이 되는 groupId는 필수다.
    • 메시지 중복 제거에 대한 고민을 하자. 예를 들어, 좋아요 & 좋아요 취소의 반복처럼 중복된 메시지를 허용해야 하는 경우에는 deduplicationId 를 통해 중복 허용을 할 수 있다.
  • 트리거가 동작하지 않는다면
    • 구독 관계 설정을 sns, sqs 콘솔 중 어디에서 했는지에 따라 권한부여가 안 될 수도 있으니 체크하자.
    • 더불어, sqs 람다 트리거 활성화 여부를 체크하자 - 람다로 들어가서 수동으로 enable 상태로 만들어 줄 수 있으며, 별칭을 사용할 경우 별칭에다가 sqs 트리거를 연결해야 한다.

SAM Template

  • cache 가 필요한 경우, api 메서드별로 설정 가능
    • function 개별로 헤더, 쿼리파라미터 등 캐시할 request 파라미터 설정

트랜잭션

  • 로직을 수행하는 중간에 변경이 되어서 정합성을 헤칠 것 같다면 lock을 걸어줘야 함.

typeorm

  • 쿼리빌더
    • skip, take 가 아니라 limit offset을 써야 한다.
    • 그룹바이로 묶기 전에 그 기준이 되는 값은 무조건 존재하도록 조건 설정.
  • readonly를 활용하여 필요한 컬럼만 선택하여 일대다 관계 설정
  • sync 옵션 켜지 않는다면 엔티티 컬럼에서 length 옵션은 불필요함
  • manager를 사용하여 트랜잭션 구현 시 repository 여러개 사용 가능

코드 일반

  • 값이 없을 때, 디폴트로 처리해야 하는 값이 있는지 확인할 것.
  • find를 통해 리턴된 배열이 빈배열일 경우, 어이지는 로직에서 에러가 나지 않도록 예외처리
  • get 호출 시, 리스트가 많아질 경우 페이지네이션을 할 때 시작할 기준도 파라미터로 전달받기.
  • 생성과 복구 중 효율성 고려하기
  • filter, forEach, shift 메서드 활용하여 배열에서 특정 조건의 요소만 처리
  • 동기 비동기 사용 여부 판단
댓글수0