DAILY PAY -예산관리 애플리케이션 (개인 프로젝트)
23.11.09 ~ 23.11.16, 총 8일간 (45시간) 의 개인 프로젝트가 끝(?) 이 났다. 사실 아직 덜 끝났다고 봐도 무방한 게... 지금 버전은 v.1.0.0으로 하고 계속 리펙토링할 예정이기 때문이다. 테스트코드가 좀 부족하긴 하지만, 일단 기한 내에 한 사이클을 끝내는 걸 목표로 한거라 어쩔 수 없음. 그리고 리펙토링 때 @AuthenticationPrincipal 적용하면 컨트롤러 메서드들이 인자가 바뀔 예정이라... 일단 테스트는 대충 마무리 했다!
이전까지는 거의 무한한 시간동안 개인 플젝을 했는데, 이렇게 딱 기한을 정해놓고 몇시간 단위로 쪼개서 개발해본건 처음이다. 결과적으론 첫 계획때 너무 빡빡하게 잡아서 한참 오버했지만.. 처음이니까 뭐. 그리고 이렇게 빡빡하게 잡아서 그나마 8일안에 끝낸 듯.
결론부터 말하자면 절망과 좌절의 일주일이었다. 열심히 계획을 세웠는데 자꾸 못 지켜서 몹시 스트레스받았다. 멘토님이 주니어분들은 일정 조절을 잘 못하시더라고요 ~ 할 때 아무 생각 없었는데, 내가 그 주니어일 줄이야.😅
일정 계획에 대하여
이번 프로젝트는 개인 프로젝트인 만큼 본인이 자유롭게 계획을 짤 수 있었다.
원래는 대충 며칠부터 며칠까지 하겠다~ 정도의 작고 소박한 계획이었는데
어느새 이런 애가 만들어져 있었음 ㅋㅋㅋ
TASK 이름 옆에 있는 숫자에 대해 설명하자면 (예상시간) [진행상태] (실제로 수행한 시간)이다.
시간 측정은 원래 내 아이디어는 아니었고, 멘토님께서 프로젝트하실 때 쓰는 계획표라면서 엑셀 파일 하나를 보여주셨는데, 거기에 기능 별로 예상 개발 시간이 적혀있던 게 좋아 보임 + 계획만 세워봤지 얼마나 걸리는 지 측정해 본적은 없어서, 자기 점검의 기회가 될 것 같아 한번 적용해 봤다!
위 계획도 원래는 30시간 안에 A~E를 다 하겠다는 야심 찬 계획이었지만 ㅋㅋ 과제 첫날 멘토님이 애초에 6일 안에 80% 정도만 할 수 있을 수준의 요구사항이라고 하셔서. 급하게 수정했다. 지금 생각해보면 정말 말도 안되는 계획이다. 오류 없이 돌아가는 코드를 공장마냥 찍어내면 가능할듯?
수행 시간에 대하여
처음에는 자꾸 시간 초과를 해서... 내가 나 스스로를 너무 과대 평가 했나? 남들은 이걸 어떻게 다하지?? 했는데... 지금 와서 생각해 보면 내가 한 기능을 너무 공들여서 만드는 경향이 있는 것 같다.
난 나름 최소한으로 리펙토링 하고, 테스트도 대충 짠 건데.. 그것도 안 하는 사람이 더 많겠구나 하는 걸 어제 세션 들으면서 깨달아서... 좀 충격받음 ㅋㅋㅋㅋ 멘토님도 테스트는 API 컨트롤러 테스트 정도만 하신다고 하고...
그래도 마지막에는 시간 지키려고 열심히 대충..? 했다. B에서 오류 난 거 고치느라 하루를 통으로 날린 이후에... 좀 피로해진 것도 있음 😅
feature 쪼개기
지난번 프로젝트 2에서... 한 PR이 1000줄이 넘어가는 엄청난(?) 사건을 겪은 이후 좀 반성해서, 이번에는 한 기능안에서도 최대한 나눠봤다. 멘토님은 티켓(=작업 단위를 말한다) 하나당 4시간을 안넘게 짠다고 해서 나도 그렇게 해봄.
branch 만들때는 feature branch를 base로 해서 그 아래 sub branch로 만들고, sub branch 를 피쳐 branch로 merge하는 전략으로 진행했다.
기능 A - 유저 (3.5시간)
JWT(요구사항)에 Spring Securiy를 조합해서 만들었다.
예전에 개인 프로젝트 할 때 써본 적 있는 조합이긴 한데... 어디 블로그 글 긁어서 대충 만들어서 작동 방식이고 뭐고 하나도 몰라서, 이번에는 공부하면서 만들어 봤다.
둘 다 영어긴 하지만... 좋은 자료다! 나도 영어 잘하는 편은 아님. 그냥 필요하면 읽는 수준. 한국 블로그들은 뭔가 짜집기 된게 많아서 ㅠㅠ 구글에 영어로 검색해서 최상단에 있는거 하나 보는게 낫다.
위의 블로그 글을 보면서 Spring Security 구조를 이해하고, 유튜브 보면서 코드가 어떤 식으로 구현되는지 알 수 있었다. (중요) 유튜브에는 샘플 코드도 있다. 유튜브 보면서 내 프로젝트에 적용하다가 안되는 거 있으면 샘플 코드 보면서 빠진 거 채우고, 필요 없는 기능 (e.g. 인가)은 버리는 방식으로 개발했다.
중간에 저 유튜버랑 나랑 jjwt 버전이 달라서 그런가? Deprecated 된 메서드들이 많아서 jjwt-api 0.12.3 공식 문서 보면서 최신 메서드로 변경했다. 영상 찍은 지 1년도 안된 거 같은데 왜 이렇게 Deprecated 된 게 많아
한번 보니까 자꾸 알고리즘 때문에 영상이 떠서 밥 먹을 때마다 하나씩 봤는데... 자바 스프링 관련 유용한 거 많이 알려줘서 결국 구독했음.
뭔가 쓰다 보니 자꾸 말이 길어지네. 오늘 회고는 이 정도만 하고 다음에 계속 이어서 써야겠다.
'프로젝트 > 예산 관리 어플리케이션 (개인)' 카테고리의 다른 글
Stream을 List로 변환하는 방법들의 차이 (0) | 2023.12.14 |
---|---|
Github Action + Submodule +Docker 로 CICD 하기 (1) | 2023.12.07 |
[Spring Security + JWT] Access, Refresh 토큰을 DB에 저장해야하는 이유 (2) | 2023.11.27 |