본문 바로가기
project/Tennis Together

Tennis Together 6주차

by setung 2021. 11. 21.

프로젝트 마감일이 다가온다.

내가 맡은 기능은 거의 다 구현이 되었지만 실제 서버에서 동작하는데 여러 버그들이 있는 것 같다. 이를 수정하는데 시간을 보낼 것 같다.

 

지금까지 API 문서는 Notion으로 관리했었는데 튜터님께서 Swagger를 적용해보라고 제안해주셨다.

스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴 셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다.

위키백과를 인용했는데 쉽게 말해 Swagger란 API를 관리하는 오픈소스 프레임워크라고 보면 되겠다.

 

Spring boot 프로젝트에서 적용하는 방법도 간단했다. 의존성만 추가해주면 알아서 API 문서를 만들어 준다. 상세한 기술은 어노테이션 기반으로 실제 코드에 작성해가며 가능하다. (@Api, @ApiOperation, ApiResponses 등..)

implementation "io.springfox:springfox-boot-starter:3.0.0"

https://tennis-togeter.herokuapp.com/swagger-ui/

의존성을 추가하면 /swaagger-ui/ 경로에 접속해 API 문서를 확인할 수 있다. 

 

 

추가로 프로젝트를 진행하면서 헤매었던 경험을 간략히 공유하겠다.

1. SRP 위반

SRP(Single Responsibility Principle)는 객체나 메서드 혹은 변수가 한 가지의 역할에 충실해야 된다는 의미다. 

프로젝트 기능 중에 게임에 신청, 신청 취소 기능이 있다. 신청을 하면 DB에 신청 이력이 저장된다. 반대로 취소는 DB에서 신청 이력을 지우면 된다. 때문에 나는 취소 기능과 이력 삭제 기능이 동일한 기능이라고 착각을 하게 되었다. 취소와 이력 삭제 기능의 간단한 로직이 복잡하고 지저분하게 만들어졌었다. (예를 들면 이미 게임이 완료된 상태에 취소는 불가능 하지만 삭제는 가능해야 했다.) 후에 SRP를 위반했을음 깨닫고 취소 기능과 삭제 기능을 분리시켰다. 코드는 확실히 단순해졌다.

앞으로 코드를 작성하는데 뭔가 복잡해지고 있다면 기능을 분리해야 하는지 고려해봐야겠다.

 

2. 배포서버의 시간 차이 문제

프로젝트에 날짜 계산이 들어가기 때문에 LocalDate.now()를 사용한다. 그리고 나의 로컬 개발 환경에서는 정상적으로 날짜 계산이 정상적으로 작동이 되었고 배포까지 되었었다. 그런데 배포서버에서는 날짜 계산이 안 맞아 에러가 발생했다. 알고 보니 배포서버는 해외에 있어 한국 시간과 맞지 않았던 것이다. LocalDate.now() 현재 로컬 PC의 시간을 가져온다. 그러므로 한국 시간을 가져오도록 작업을 해야 한다.

LocalDate.now(ZoneId.of("+09:00:00"));

수정 ----

튜터님께서 시간 이슈는 서버의 시간을 설정해 고치는 게 더 나은 방법이라고 말씀해주셨다. 위의 코드 PR은 closed..

 

 

멘토링은 끝났지만 문서나 프로젝트는 좀 더 보완이 필요해 보여 아마 팀원들과는 봐야 할 것 같다. 그리고 다들 코드 리뷰를 하지 못한 것에 아쉬움이 많았는데 이번엔 코드 리뷰도 같이 해봐야겠다.

생각보다 짧았던 6주 동안 멘토링을 받고 다른 개발자들과 협업을 해보면서 기술적으로도 배운 것도 있고, 좀 더 나은 개발자가 되기 위해서 필요한 역량을 생각해보는 좋은 경험이 되었다.

 

 

 

 

setung/tennis_together (github.com)

 

GitHub - setung/tennis_together

Contribute to setung/tennis_together development by creating an account on GitHub.

github.com

 

'project > Tennis Together' 카테고리의 다른 글

Tennis Together 5주차  (4) 2021.11.14
Tennis Together 4주차  (0) 2021.11.07
Tennis Together 3주차  (0) 2021.10.30
자바로 크롤링 해보기 (jsoup)  (0) 2021.10.28
Tennis Together 2주차  (0) 2021.10.26

댓글