우아한테크코스 3기 백엔드 Lv2 [지하철 미션] 학습로그

김태희·2021년 5월 16일
0
post-thumbnail

[Test] ATDD - 5

내용

  • API 스펙 요구사항에 대해 ATDD를 진행했다.
  • 테스트가 모두 통과할 때 마다, API 스펙 요구사항을 충족하고 있음을 확신할 수 있었다.
  • 테스트가 추상적이어서, 리팩토링에 따른 테스트코드 수정이 거의 불필요했다.

태그

Test, ATDD


[인증] JWT - 5

내용

  • 로그인 인증에 JWT를 사용했다.
  • 상태 정보(세션 등)를 서버에 저장하지 않아도 돼, 서버 부담을 줄일 수 있었다.

태그

인증, JWT


[Spring] Interceptor - 3

내용

  • 로그인 인증이 필요한 URI 요청에 Interceptor를 걸고, JWT 유효성 검사 로직을 추가했다.
  • JWT 검사 책임을 Interceptor로 분리할 수 있었다.

태그

Spring, Interceptor


[Spring] Custom Annotation, ArgumentResolver - 3

내용

  • Custom Annotation을 ArgumentResolver에 등록해, 해당 Annotation이 메소드의 매개변수 앞에 붙어있다면 매개변수에 현재 로그인 되어있는 Member객체를 넣어주도록 했다.
  • 로그인 사용자 사전 조회 책임을 Custom Annotation + ArgumentResolver로 분리할 수 있었다.

태그

Spring, Annotation, ArgumentResolver


[OOP] Layer와 Domain의 책임 분리 - 4

내용

  • Service 레이어에 모든 비즈니스 로직을 작성하다보니 Service 클래스가 매우 커지고, 도메인과 Service 레이어의 책임 분할이 되지 않았다.
  • 비즈니스 로직은 모두 도메인 내부로 옮기고, Service 레이어에서는 도메인의 비즈니스 로직 실행 순서만 보장하도록 해, 각각의 책임을 분리했다.

태그

OOP, Domain, Service


[JDBC] NamedParameterJDBCTemplate 적용 - 3

내용

  • 파라미터를 순서 숫자가 아닌 컬럼명 문자열로 표기해 더욱 직관적이다. 유지보수에 유리하다.

태그

JDBC


[암호화] BCrypt - 5

내용

  • 리뷰어 미립이 Hash 암호화에 대한 학습 키워드를 제공해줬다.
  • 같은 원본 데이터에 대해 암호화를 할 때마다 매번 다른 Hash 결과값이 나오는 BCrypt에 대해 학습했다.

태그

암호화


[DB] Transaction 격리 수준 - 5

내용

  • Transaction 격리 수준에 대해 공부하고, 지하철 구간 수정 작업 단위에는 얼만큼의 격리 수준으로 Transaction을 걸어야 하는지 리뷰어 재연링과 함께 토론하며 고민했다.

태그

DB, Transaction


[OOP] 원시값 객체 포장 - 2

내용

  • 지하철 요금 원시값을 Fare 값 객체로 포장했다.
  • 생성자에서 값 자체의 유효성 검증을 할 수 있었다.
  • 비즈니스 로직을 객체 내부에서 처리할 수 있었다.

태그

OOP


[배포] 배포 자동화 - 4

내용

  • 배포 자동화가 적용되지 않은 상태에서는 github에서 최신 코드 가져오기 -> 빌드 -> 기존에 실행중인 애플리케이션 종료 -> 새로운 버전의 애플리케이션 실행 의 과정을 일일이 명령어를 쳐서 실행해야 했다.
  • 이 과정 전체를 shell 스크립트로 작성했다.
  • 해당 shell 스크립트를 실행시키기만 하면 새로운 버전의 애플리케이션이 자동으로 배포되어 배포가 매우 편리해졌다.

태그

배포


[Web] CORS 정책 - 3

내용

  • 프론트 서버와 백엔드 서버가 따로 운영되면서, CORS 정책 위반 에러가 발생했다.
  • Access-Control-Allow-Origin 헤더 설정을 통해 해당 에러를 해결했다.

태그

Web, CORS


[Docs] Spring REST Docs - 5

내용

  • 프론트 크루들과 협업하기 위해 API 문서화가 필요했다.
  • 테스트를 통과해야 문서화가 되고, 이에 따라 프로덕션 코드가 실시간으로 반영되는 Spring REST Docs를 적용했다.

태그

Docs, REST


[OOP] 다형성을 통한 if문 제거 - 5

내용

  • 지하철 요금 정책이 추가될 때 마다 if문이 생겼다.
  • Enum과 함수형 인터페이스의 다형성을 사용해 if문을 제거했다.

태그

OOP, Java


profile
Web Back-End (Spring, JPA, AWS)

0개의 댓글