• Home
  • About
    • Ara Jo photo

      Ara Jo

      Aspiring Backend Developer :)

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

우테코/LV3 학습로그 정리 - 2차 데모데이

23 Aug 2021

Reading time ~1 minute

Entity 설계

  • 각 Entity 간의 연관관계를 고려해 Entity를 설계함
  • Member > Map > Space > Reservation 순으로 1대다 관계를 가짐
  • PR

TDD (인수테스트, 서비스테스트, 테스트 픽스처)

  • RestAssured를 사용해서 API들에 대한 controller 테스트 작성
  • BDDMockito를 사용해서 기능 메서드들에 대한 service 테스트 작성
  • 여러 테스트클래스에서 중복코드를 제거하고 가독성 향상을 위해 중복으로 생성하는 객체들을 테스트 픽스처로 정리
  • 참고링크1
  • 참고링크2

배포 자동화

  • Jenkins를 이용해 CI/CD 환경을 구축함
  • 먼저 PR 에 대한 build success 여부를 확인하고 fail 시 머지가 불가능하도록 설정
  • 머지 된 후에 Jenkins가 한 번 더 빌드를 하고 성공하면 사전에 작성해놓은 쉘 스크립트에 따른 배포를 진행
  • 빌드/배포 후 조치로 빌드 시작 시, 성공 시, 실패 시 slack 알림이 오도록 설정
  • 위키정리
  • 노션정리

Rest Docs (API 문서화)

  • 자동화된 API 문서를 만들기 위해 Rest Docs를 적용함
  • 프로덕션 코드에 영향도 없고 변경되는 API에 대해 동기화가 보장되므로 Rest Docs를 선택함
  • 테스트가 성공해야 문서가 작성되므로 꼼꼼한 테스트작성을 할 수 있음
  • 참고링크
  • PR

로깅

  • Logback을 이용해 logging 설정
  • 로그레벨을 INFO, WARN, ERROR로 나눔
    • INFO : 비즈니스 로직과 관련한 exception, 4xx대, 별도로 수집하지 않음
    • WARN : 401, 500 에러를 포함한 시스템 WARN
    • ERROR : 예상치 못한 에러, bug
  • 로그 파일을 날짜별, 레벨별 순서로 디렉터리를 만들어 분류
  • 참고링크
  • PR

Builder 패턴

  • 생성자 인자가 많아져서 객체 생성을 깔끔하고 유연하게 하기 위해 Builder 패턴을 도입함
  • 각 인자가 어떤 의미인지 알기 쉽고 인자의 순서나 자료형 때문에 헷갈릴 일이 없음
  • 기능이 추가되면서 Builder 패턴을 사용하는 객체가 많아져 후에는 Lombok을 도입함
  • 참고링크

슬랙 알림 API

studylog_lv3-2.png
  • 관리자가 예약을 수정하거나 삭제할 때마다 채널에 알림을 보내주는 기능을 구현함
  • restTemplate을 이용해서 메시지 내용을 담은 DTO를 JSON 형식으로 보냄
  • 참고링크1
  • 참고링크2
  • PR

usingRecursiveComparison()

  • DTO의 값 동등성 비교 시 사용
  • 필드 내부에 중첩된 객체가 있다면 해당 객체의 필드값을 비교해서 확인
  • ignoringFields() : 특정 필드 무시
  • ignoringActualNullFields(), ignoringExpectedNullFields() : null인 필드 무시
assertThat(actual).usingRecursiveComparison()
	.ignoringCollectionOrder()
	.ignoringExpectedNullFields()
	.isEqualTo(expected);


woowacoursestudy_log Share Tweet +1