코드스테이츠 Pre Project 후기
끝났어요 .. ? 드디어 끝났어요 ..? 그럼 저 자도 될까요 ..?
???: 응 내일 메인 프로젝트 시작이야 ~
- Team name: Rainbow
- Project: Stackoverflow Clone Coding
- Development Duration: 2023.06.14~2023.06.26
- Git Hub URL: https://github.com/dayoungee/stackoverflow-clone-coding
길면 길다고 느껴지고, 막상 하다보니 짧다고도 느껴지는 프리 프로젝트 기간이 끝났다... 컴퓨터 앞에 12시간 이상은 앉아 있었던 것 같다. 하도 타자를 두드리고 마우스 클릭질을 하다보니까 오른쪽 중지가 아프기도 했다. 주말은 쉬었지만,, 평일 내내 정신없는 하루를 보냈다.(현업에 있었을 때보다 더 바빴음)
트러블 슈팅 과정에서 화가 많이 나기도 했다. 그래도 재밌다는 생각을 더 많이 했던 것 같다. 서버에만 집중할 수 있었서 행복했고, 불꽃 코딩하느라 즐거웠다.
아무튼 프로젝트에 대해 얘기할 때 기술적인 이야기가 빠질 수 없다. 서버에서 적용한 기술스택은 다음과 같다.
Tech Stack
테스트 서버 구성에 대해 ...
다른 팀은 어떻게 했는지 모르겠지만, 나는 첫 시작을 테스트 서버 구성부터 시작했다. 코드 스테이츠에서 클라이언트와 서버의 통신 테스트를 위해 ngrok을 알려줬지만, 개인적으로 비효율적이라고 생각해 AWS 계정을 만들고 테스트 서버부터 구성했다. 이때 문제는 코드 스테이츠에서 제공해주는 레포에서 깃허브 액션을 사용할 수 없다는 점이었다. 코드 스테이츠에서 CI/CD 방법으로 깃허브 액션을 알려줬기 때문에 그대로 사용하려다가 사용할 수 없는 상황이 된 것이다.
공통 레포에 연결하지 않고 내 레포에 연결하면 그건 또 무슨 의미가 있을까 싶어서 내 레포에 깃허브 액션으로 CI/CD를 하는 것이 아닌 공용으로 사용할 레포에 젠킨스를 연결하기로 했다.
젠킨스를 처음 사용하는 거다보니, 거의 하루를 날려가며 작업했다. jenkins를 처음 설치할 때 NPE 에러가 발생했고(폰트 문제였음), 레포에 Client, Server 폴더로 나누어 작업했기 때문에 build 경로 설정하는 데 있어서 이때도 많은 시간을 썼고, 메모리 부족으로 빌드가 안되기도 했고, 깃허브와 연결이 잘 되지 않아 이것을 해결하는데도 많은 시간을 소비했다. 그리고 권한 문제 때문에 쉘 스크립트가 먹히지 않는 다는 것도... 이때 한번 권한을 잘못 건드려서 ec2 권한 설정이 꼬이는 바람에 인스턴스를 삭제하고 다시 처음부터 세팅해야 했다. 복구하는 방법이 있기는 했으나, 너무 복잡해서 차라리 처음부터 다시 만드는게 나을 것 같았다.
첫 세팅에서만 오류를 만난 건 아니었다. 테스트 코드 오류, 환경 변수 등. 실제로 아주 많은 오류들을 만났다. 이거 하나하나 블로깅을 했어야 했는데 ㅠㅠㅠ 시간이 너무 촉박해서 그럴 수 없었다.
여러 오류를 만나며 CI/CD까지 구축한 끝내 그 이후 부터는 편하게 개발할 수 있었다. 젠킨스에 대해서 배워간 것도 많아서 끝내고 나니 너므너므너므 뿌듯했다.
API 문서화,.,, 꼭 해야만 했니.,.?
그 이후 문제는 테스트 코드 쪽이었다. Spring Security를 도입하거나 새로운 기능이 추가되면 테스트 코드 리팩토링 하는 과정에서도 많은 시행착오를 겪었다. 그럼에도 테스트 코드는 포기할 수 없었다. API 명세서를 작성하기는 했지만, 제일 확실하게 프론트에서 API를 확인할 수 있는 방법이 Spirng REST Docs나 Swagger와 같은 API 문서라고 생각했기 때문에 API 문서를 위해 어떡해서든 오류를 해결해서 테스트 코드는 끝까지 가지고 갔다.
아 우리팀은 Spring REST Docs와 Swagger UI를 섞어 사용했다. 이러한 이유로 Spring REST Docs처럼 테스트 코드에 로직을 작성하여 문서화하지만, UI는 Swagger 처럼 구성되어 있어 테스트도 가능하다. 개인적으로,,, UI도 Swagger가 더 예쁜거 같다..
그 외의 ..? Docker... 느낀점 ..?
Docker는 MySQL에서 활용했다. MySQL을 Docker에 올려서 사용하는 중이다. Docker를 설치했기 때문에 젠킨스, 서버, 엔진엑스 모두 Docker Compose로 돌려버릴까 하다가 시간이 없어서 포기하고 다음을 기약했다.
프로젝트를 진행하면서 API 구현보다는 테스트 코드, 서버 환경 구성 쪽에 시간을 많이 쓴 것 같다. 토이 프로젝트를 한 번 진행해본 경험으로 API 구현은 사실 어렵지 않았다.. 도메인 별로 역할을 나누어서 개발을 했는데 질문 쪽을 맡아서 그런지 CRUD가 전부여서... 그래서 남는 시간에 공통으로 사용할 모듈을 만들거나 리팩토링을 했다.
3줄 요약
1. 젠킨스,,, 전남친같은 애증의 관계..
2. 트러블 슈팅에 도가 터버린 나
3. 하루만 휴가 써도 될까요? 자고 싶은데요.
반성해 나 자신!
아쉬운 점은 N+1문제를 해결하지 못했다는 점 ㅠ. 분명 프로젝트 초기에 생각은 하고 있었는데, 시간이 지나면서 N+1문제에 대해 잊어먹고 말았다. 이걸 어제 새벽에 로그를 보다 발견해서 급하게 고쳐볼까 하다가 다음날이 프로젝트 종료 날이라 이마저도 다음을 기약했다.
또 하나의 아쉬운 점은 Log 작업이 되지 않은 것 ㅠ AOP를 활용해서 Controller 마다 Log를 찍었어야 했는데! 이것도 어제 새벽에 생각난거라 적용하지 못했다.
이렇듯 Pre Project에서 겪었던 아쉬웠던 점들은 메인 프로젝트에서는 즉각 적용할 생각이다. AOP는 프로젝트 세팅할 때부터 적용할 것이고, N+1문제는 연관관계 매핑할 때마다 고려하여 개발할 생각이다.
그리고 현업에서 세심하지 못한 것이 내 단점이었는데, 프로젝트를 하면서도 세심하지 못한 내 태도에 다시한번 반성했다.. 이런 내 성격을 너무도 잘 알고 있는 나머지 평소에는 노션, 회사에선 Jira로 그날의 업무를 관리했다. 이번 프로젝트에서는 깃허브의 칸반보드로 관리를 했는데, 익숙지 않은 나머지 잘 활용하지 못해서 업무 관리가 제대로 되지 않았던 것 같다 ㅠㅠㅠㅠㅠㅠ 내 업무관리가 제대로 되지 않으니 세심하지 못했다고 생각한다... 그날 떠오른 생각은 제발제발제발 기록하자 제발.
프리 프로젝트의 팀장역할을 담당했다. 프로젝트를 진행할 때는 너무 바빠서 생각도 못했지만, 끝나고나서야 팀장역할을 정말 잘했을까 의구심이 들었다.. 내 목표는 팀원들을 위해서 편하게 개발할 수 있는 환경을 구성하는 것이 목표였고, 그 목표에만 치중하다 보니 프엔과 백엔의 커뮤니케이션이 단절까지는 아니어도 활발하지 못했다고 생각한다 ㅠㅠㅠㅠ 이런 경험들을 토대로 메인 프로젝트에서는 내가 더더욱 발전했으면 좋겠다.
그래도 이것만큼은 잘했을지도 ...?
좀 더 객체지향적으로 짜는 법, 좋은 코드가 무엇일까에 대해서 처음으로 고민하고 고민하며 코드를 짰던 것 같다. 이렇게 고민을 했어도 만족스럽지 않은 부분들이 많다 ㅠ 완벽하다고도 말할 수 없고.. 이런 고민들은 구글링을 해도 나오지를 않으니, 챗GPT에게 물어봤다. 평소 구글 검색을 주로 사용했어서 이렇게 물어본 것이 처음이라 할 정도인데, 진짜 너무 신세계였다;;
이름 짓기도 너무 어려웠는데 챗gpt가 이름 다 지어줬다;; 앞으론 주관적인 질문에 대해서는 챗gpt를 적극적으로 활용할 것 같다.
막상 후기를 작성하다보니 아쉬운 점 투성이다. 이 경험들을 보완해서 메인 프로젝트도 성공적으로 마쳤으면 좋겠당.
아 그리고 팀원분들께도 너무 고맙다고 말씀드리고 싶다 ㅠㅠㅠ 트러블없이 잘 따라와주신 팀원분들께 너무 감사하고 아직 많이 부족한 것 같아서 죄송스럽기도 하고,,,새벽내내 코딩하시느라 수고도 많으셨고 ㅠㅠㅠㅠㅠ 날 만났던 사람들은 모두 취업 성공해서 행복하시길 ,,,
휴 그리고,, 코드 스테이츠 이 글을 본다면 하루만 쉬는 날을 만들어주세요 굽신굽신,,
'CodeStates' 카테고리의 다른 글
[SEB BE 44] 코드 스테이츠 Main Project 후기 (0) | 2023.07.26 |
---|---|
[SEB BE 44] Section 4 회고록 (2) | 2023.06.08 |
[SEB BE 44] Section 3 회고록 (0) | 2023.05.09 |
[SEB BE 44] Section 2 회고록 (6) | 2023.04.10 |
[반딧불반] GitHub TIL 시작하기 (0) | 2023.03.29 |