지금까지는 스프링에서만 서버를 구축하고 html을 작성해서 뷰를 만들어 웹을 구성했었다. 그러다 드디어 처음으로 프론트엔드 분들과 만나 협업이라는 것을 하게 되었다. 처음이라 어떻게 할지 몰라서 떨리기도 하고, 재밌을 것 같다는 생각이 들었다.
처음에 api를 설계하는 과정에서도 어려움이 많았다. 우리가 구성하고자 하는 웹페이지에 필요한 정보를 어떤식으로 주고 받을지, 정말 이렇게 주고 받으면 실제로 데이터가 오고갈지에 대해서 걱정이 되었다. 혼자 만들었을 때는 그냥 내가 수정하고 싶은 부분이 생기면 혼자 수정하고 진행하면 되었지만, 협업을 하게 되니 무언가 수정할 때에는 반드시 팀원과 상의를 거쳐 수정을 해야됐다. 또 정말 쉽게 생각했던 로그인 부분이 실제로 가장 어렵게 느껴졌다. 우리는 jwt 토큰 방식을 택했는데 이 토큰을 프론트 쪽으로 보내는 과정에서 잘 이해가 되지 않았고, 프론트 쪽에서도 이 토큰을 받아 저장하고 다시 보내는 부분에서 어떻게 해야할지 감을 잡기 쉽지 않았다. 애초에 jwt토큰방식을 스프링에서 적용시켜 본 적이 없어서 이 부분에서만 4일의 시간을 썻다. 로그인이 이렇게 어려운 것이었는지 새삼 느끼게 되었다.
우리가 만든 웹페이지는 예쁜 풍경을 배경으로 사진을 찍어 올리면 좋아요를 누를 수 있게 해주고 그 좋아요가 가장 많은 3개의 사진을 시상대에 올려주는 페이지를 구상하기로 했다. 로그인 부분을 제외하면 생각보다 빠르게 서버 구축을 할 수 있었다. 다만, 프론트 부분은 잘 모르는 부분이기 때문에 진행 속도를 제외하면 어떻게 진행되는지 알 수 없어서 걱정이 되었다. 그리고 제출 전날인 수요일에 처음으로 서버를 배포해서 프론트와 연결해 보았다. 우선적으로 로그인과 회원가입을 연동해 보았는데 생각보다 수월하게 진행되었다. 서버에서 발행한 토큰이 프론트에 전달이 잘 되었고, 그 토큰을 프론트 분들이 로컬 스토리지에 잘 저장해서 다시 서버로 전송하는 과정까지 진행하고 나니 굉장히 신기하면서 성취감이 들었다. 첫 협업의 성공의 순간이었다. 그 과정을 가지고 나니 뭔가 뒤에 있을 작업들에도 자신감이 붙었다.
서버를 구축하고 api를 설계대로 만드는데 있어서 서버측은 시간이 생각보다 오래 걸리지 않았다. 다만 구축한 뒤에 ARC를 이용해 검증하는 것 외에는 실제 페이지에 보이는 부분이 없어서 제대로 테스트가 이루어져도 걱정이 계속 되었다. 그리고 프론트 분들과 연결하고 나서도 각종 오류에 끊임없이 시달렸다. 가장많이 본 에러는 302, 400, 500번 에러로 302에러는 스프링 시큐리티에서 제공하는 페이지 권한이 없을 때 리다이렉트 되는 에러였다. 이 부분은 스프링 시큐리티와 jwt필터에 대해서 더 공부해 가면서 잘 이해하고 해결할 수 있었다. 400번 에러는 대부분 프론트에서 서버로 제대로된 요청을 보내지 못해서 생긴 에러였다. 이 과정에서 가장많이 느낀점은 우리가 처음에 설계했던 api대로 변수명을 반드시 맞춰주어야 한다는 점이었다. 소문자, 대문자 하나라도 맞지 않으면 잘못된 요청이라고 에러가 발생했다. 500번 에러는 대부분 서버측에서 발생했는데 제대로된 토큰이 아니거나, 반환값이 null이거나 할 때 발생했다. 이 에러는 쉽게 수정이 가능했었다.
수 많은 에러들과 마주하면서 느낀점은 서버측 구성이 완료되었다고 해도 결코 쉴 수 없다는 점이었다. 프론트분들이 테스트 하실 때마다 같이 보면서 어떤 에러인지 파악하고 같이 에러를 해결해 나가야 했다. 협업이란게 이런 점 때문에 재미있으면서도 어려운 것이라는 걸 느꼈다. 그래도 하나씩 문제를 해결해 나가니까 정말 재미있었다. 가장 걱정했던 CORS는 생각보다 쉽게 해결해서 CORS에러는 만나지 못했다. 예습의 효과랄까.
중간에 팀원 한명이 하차하는 불상사가 있었지만, 다행? 이라고 해야할지 스프링 분이 나가셔서 프로젝트가 진행될 수 있었던 것 같다. 우리 프로젝트도 끝까지 완성은 못했는데 프론트분들의 시간이 부족해서 완료되지 못했다. 프론트 분들의 할일이 그렇게 많은지 이번에 알았다. 단순히 정보를 받아 뿌려주는 것 뿐만 아니라 CSS도 하셔야 되기 때문이라고 생각한다. 서버에서 하는 일 보다는 프론트가 할일이 너무 많은 것 같다는 생각이 들었고, 프론트 사람이 더 많아야 한다고 생각했다. 그래도 프론트분들의 디자인이나 이런건 아주 만족스러웠다.(우리조 디자인 진짜 예뻣다.)
배포하는 과정에서도 문제가 좀 생겨서 제출 마감 시한을 넘겨 제출 했다. 기능 구현을 모두 못한 건 아쉬웠지만 첫 협업이라는 걸 해보니 정말 많은걸 느꼈다. 문제가 발생했을 때 어떻게 해야하는지, 배포는 어떻게 하는건지, 반드시 미리 연결을 해서 어떤 문제들이 발생할 수 있는지 점검하는 과정등도 꼭 필요하다는 걸 느꼇다. 한주동안 같이 협업한 팀원들에게 정말 수고했고 감사하다고 말하고 싶다. 다음주에 있을 클론 코딩도 걱정 되면서 굉장히 재밌을것 같아 기대가 된다.