Conversation
yml 을 선호하여 변경합니다. 그 외 전체 파일에 Intellj 기본 포매팅을 적용했습니다.
다뤄야할 쿼리가 많지않아 JDBC 라이브러리로 해결하려 합니다. 커넥션풀 크기에 대한 제한이 있었기에 적정값인 3으로 설정했습니다. (최대 5개)
간단한 규모의 프로젝트라 테스트 컨테이너 없이 H2 정도로 구축합니다.
단순 조회만 하기에 JdbcTemplate 을 통해 구현했습니다.
기존 StockTestFixture 에 있던 Company 관련 Fixture 들을 이전했습니다.
기존에는 infrastructure 레이어에서 관리했는데 다른 레이어에서도 사용할 것이라 이전합니다.
API KEY 미입력 시 400 상태번호를 API KEY 가 일치하지 않을 시 403 상태번호를 반환합니다.
API 성공, 실패 시 공통된 형태 유지를 위해 사용합니다.
StockInfoDto 가 전 레이어에서 공통적으로 사용되어 dto 자체를 다른 레이어들과 같은 depth 에 위치해도 좋을 것 같아 이전합니다.
TEST_COMPANY_CODE -> TEST_COMPANY_NAME
LocalDateTime 직렬화를 위해 직렬화 도구를 직접 빈으로 등록했습니다.
Spring Boot Validation
target MethodArgumentNotValidException
main 로직에서 util 패키지가 생성될 예정이라 테스트 helper 용 패키지 이름을 support 로 변경합니다.
format 파라미터가 xml 일 시 xml 로 반환하고 그 외일 시 json 으로 반환합니다.
전역 예외 처리는 Spring MVC 범위 내에서만 유효하기에 Filter 단 예외처리를 위해 구현했습니다.
메인에서 IDE 자동완성이나 성능상 이유로 관리합니다.
ApiKeyAuthFilter 를 따로 두었기에 제거합니다.
포매팅이 어긋난 부분이 보여 일괄 적용합니다.
기존에는 minimum-idle 옵션이 maximum-pool-size 와 차이가 없어 비활성되었다. 그래서 maximum 보다 작게 설정하여 활성화시켰다.
Spring Boot Starter Logging 으로 slf4j 를 사용합니다. 버전 호환의 편의를 위해 Spring Boot Starter 를 이용했습니다. logging rotate 는 다음과 같습니다. INFO 이상 - maxHistory : 30일 - totalSizeCap : 500MB ERROR - maxHistory : 7일 - totalSizeCap : 200MB
예외 필터에서일괄적으로 관리하기 위해 추가했습니다.
기존에는 servlet 의 sendError 로 다루고 있어 응답 형식도 달라 좋지 못했습니다.
Spring Boot 최근 버전에선 Main-Class 를 못 찾는 경우가 있어 추가했습니다. 외부 배포를 위해 bootJar 를 이용합니다.
내용 상세에 특정 응답 값을 설계한 이유를 주석으로 달아란 요구가 있어 추가했습니다. 응답 값의 뜻이 ApiResponse 같은 응답 포맷을 의미하는 것인지 아니면 API 별 상태번호 선정 이유를 의미하는지 물어봤을 것 같은데 시간이 부족하여 그러지 못하였다.
API 철학Interface 인 만큼 이후에 자잘한 변화가 일어나지 않게끔 신중하게 스펙을 정하는데 가장 신경을 씁니다. |
|
Log rotation 정책 INFO 이상의 일반 로그는 30일간 유지되며 파일 크기가 500MB 초과하면 오래된 로그가 삭제됩니다. 단기간 과제라 수치 자체에는 큰 의미 없이 일반적인 값을 넣었습니다. |
|
배포 관련 애플 실리콘 환경에서 개발해 리눅스 환경으로 운영할 예정이였습니다. 단기성 프로젝트라 자원 할당에는 신경쓰지 않았습니다. 그외에는 |

해결한 부분
고민한 부분
AOP, Filter 를 통해서 구현했습니다.
잘 부탁드리겠습니다.
감사합니다.