WIL | 22/08/21

개뉸·2022년 8월 21일
0

WIL

목록 보기
5/9
post-thumbnail

18일날 항해 6주차 첫 프론트엔드와의 협업이 종료되었다.
프로젝트 시작 전 부터 걱정이 많았다. 지금까지는 혼자서 Post man 이나 ARC 같은 API 테스트 해볼 도구를 이용해서 리스폰스에 JSON 형식의 텍스트만 확인해 봤는데 이제는 실제로 구현된 html 에서 리스폰스를 확인해야하니, 그러면 우리가 여기서 어떤걸 더 해야 하는건지 걱정이 되었다. 결과 적으로는 프론트엔드에서 우리의 서버에 단순히 요청만 보내는거라 우리는 하던데로 서버만 열어놓으면 되는 것 이었다.

첫번째로는 프로젝트 시작 후 첫 회의때부터 난감했다. 백엔드는 CRUD와 로그인/회원가입의 인증/인가에 대한 부분을 학습해 왔는데, 프론트엔드는 CRUD 를 표현하는 방법은 알지만 인증/인가에 대한 학습이 커리큘럼에 없어서 알지 못하고 있었다. 그래서 우리가 인증과 인가에 사용할 토큰값을 헤더에 담아 보내는데 헤더에서 뭔가를 가져와서 사용한다는 개념 자체를 알지 못하셨다. 지금까지는 쭉 바디에 담아 보내고 받는것만 해오셨다고 했다. 하지만 이 부분은 항해쪽에서 이번 프로젝트는 JWT 토큰을 이용해 보라고 요구해서 프론트엔드 분들이 해당 지식을 학습하고 적용하기로 했다.

두번째로는 프론트엔드의 인력이 백엔드에 비해서 적었다. 백엔드 4명에 프론트엔드 2명이었다. 백엔드는 늘 한던걸 하면 되었지만 프론트엔드는 html 과 css 까지 신경쓰면서 스크립트까지 처음부터 만져야 했다. 결과적으로 기본적인 CRUD 기능과 JWT 를 이용한 인증/인가 외에는 다른 기능을 추가할 여력이 전혀 없었다.

세번째로는 어찌어찌 전체적인 틀이 기본적으로나마 완성되었을때 프론트엔드에서 우리쪽 서버로 요청을 보냈는데 CORS 정책에 막혀버렸던 것이다. 이 부분은 예상을 하고 있어서 대비는 해봤는데 자꾸 이상하게 로그인/회원가입 절차의 경우에는 CORS에 막히지 않다가 게시글을 올리기위해 요청을 보낼때만 CORS가 막아선 것이다. 내 상식적으로는 막을거였으면 로그인/회원가입부터 애초에 함께 막혔어야 하는게 맞는데 그건 안막고 이건 막고 하는게 이해가 안갔다.
내 경우에는 단순요청의 조건에 맞지 않아서 자동적으로 프리플라이트 요청을 내게 보내게 될텐데 이때 OPTIONS 매서드로 오는 보내도 되는지에 대한 허가요청을 안풀어 줘서 그랬던 것이었다. 하지만 이부분은 아직도 이해가 안간다. 그럼 로그인/회원가입때는 프리플라이트 요청이 아니라 단순요청이었던 거야? 내가보기엔 헤더의 토큰 말고는 조건에 차이가 없는데? 게다가 다른 조원이 시도했을때는 OPTIONS 매서드 허용한다는 것을 따로 안적고 그냥 (" * ") 로 모든 매서드를 허용한다고 해서 잘 되던데? 아직도 CORS는 모르겠다. 무섭다. 프론트엔드 2분이서 힘드실텐데 붙잡고 될때까지 요청 보내보라고 하기도 미안하더라.

네번째로는 협업의 실태에 대한 문제다. 우리가 한것은 협업이 아니다. API 명세서 작성부터 일거리가 많은 프론트엔드를 신경쓴답시고 백엔드 끼리만 모여서 작성한 뒤에 일방적으로 프론트엔드에 통보했다. 이 부분은 결국 협업 진행중에 지속적으로 요청과 반응 부분에 무엇을 빼야할지, 더 넣어줘야할지를 수정하게 만들었다. 시간을 하루를 써서라도 이 부분을 명확히 같이 정했어야 했다.
또한 백엔드 끼리도 잘못되었다. JPA 연관관계를 사용할때 잘 이해가 안간다고 해당 부분을 완벽히 이해하기 위해서 프로젝트를 시작도 하지 않고 일요일까지 보냈다. 어차피 늘 하던 CRUD라서 사실 하면 1시간도 안되어서 끝낸다는 이유였다. 서로 조금씩 부분을 맡아서 해보고 병합해보면서 일어날 문제를 미리 닥처봤어야 했는데 그런부분은 없이 결국엔 한쪽이 만든 프로젝트를 채택해서 그것을 사용하게 되었다. 그 부분도 상의도 없이 뭔가 자연스럽게 잘하던 사람의 결과물을 채택하는 그림이 되었다.

프로젝트 후반부에는 계속 테스트 과정에서 자잘한 문제가 생겨서 서버를 올렸다 내렸다를 반복했다. 그런데 한쪽의 프로젝트를 채택해서 사용해 버려서 나머지 백엔드 조원들이 채택된 프로젝트에 쓰인 코드를 처음부터 파악했어야 했고 채택한 프로젝트의 조원이 나가거나 해버리면 서버에 문제가 생겼을때 남아있는 다른 백엔드 조원이 해결하기 막막했다. 깃에서 받아서 내 서버에 임시로 돌려서 테스트 하는것으로 일시적 해결을 했다.

마감시간에 맞춰서 제출하지는 못했다. 프론트엔드의 서버를 올리는 빌드 과정중에 자꾸 오류가 생겨서 그것을 해결하느라 2시간정도 늦게 제출하게 되었는데 그마저도 결국 해결하지 못하고 회고발표때 로컬에서 돌리는것으로 마무리 지었다. 해당 부분은 프론트엔드의 문제라고 프론트엔드 분께서 말씀하셔서 할것이 없는 백엔드 4명이 뭔가를 하거나 도와주고 싶어도 할 수 있는게 없어서 안타까웠다.

19일 부터 새로 클론코딩 주차가 시작되면서 새 협업을 하게되었는데 이번엔 저녁까지 API 작성에 몰두하고 프론트엔드와 같이 뺄것은 빼고 넣을것은 넣으면서 기본은 명확하게 잡아뒀다. 시작은 아주 만족스러웠다. 다만 이번 주차부터는 새로운 기능을 시험해 볼 계획이라서 계획표에 적어는 뒀는데 무한스크롤과 실시간 채팅 기능이다. 하지만 두 기능 다 HTML 이 준비된 상태에서 테스트 해볼 수 있는 것들이라서 사실상 강제로 후순위로 밀리게 되었다. 기본적으로 코드가 작동은 잘 하는지를 테스트 해볼 수가 없어서 어쩌면 넣지 못하지 않을까 예상을 해본다.

0개의 댓글