Codestates First Project 회고

최동혁·2021년 3월 29일
0

근 2주간 코드스테이츠에서 첫번째 프로젝트를 진행했습니다.

주제를 정하는 부분부터 난관이었습니다. 사이드바에 달력이 있는 다이어리 같은 서비스를 만들자는 아이디어부터 시작했지만 기존의 여러 서비스와 비슷해보여서 여러 아이디어를 오가다 찬성 반대 기능을 추가해 토론을 하자는 아이디어가 나와 채택되었습니다.

주제가 결정되고 원안이었던 다이어리에서 달력을 가져오니 전체적인 틀이 바로 잡혔고, 필요한 API와 데이터베이스 스키마도 뚜렷하게 나왔습니다. 그리고 역할분담에서 저는 서버 쪽에서 서비스 컨텐츠 관련 부분을 맡게 되었습니다. (다른 분은 권한 인증과 정보 관리를 맡게 되었습니다.) 그리고 프론트 부분에서 구현할 부분이 더 많아보여 서버 구현 이후 클라이언트로 넘어가기로 했습니다.

서버 구현 초안은 빠르게 끝났습니다. 다만 나중에 클라이언트 부분을 구현하는 중에 서버 구현의 실수가 드러났습니다. sequelize에서 user-post를 comments로 다대다 관계를 설정하면 comments모델에서 user와 post를 조인시켜서 찾는건 가능해도 post에서 comment로 통해서 user를 가져오는 건 안 되더군요. 다대다 테이블의 id 부분이 지워지는지 join된 걸 못 찾는건지 findAll 같은 함수가 잘 작동하지 않았습니다. 그러다보니 어떤 글과 그글에 쓰인 댓글과 그 댓글이 받은 좋아요수 같이 가져오는게 한번에 되지 않았습니다. 또 right outer join에서 다른 조건을 걸어서 그 조건으로만 join하는 것도 잘 되지 않아 다 가져온 후 where로 걸러냈습니다. 다대다 관계여도 그 테이블 자체가 의미를 갖는 경우는 그냥 일대다로 쓰는게 나아보였습니다. 여튼 이러한 서버 구현의 부족한 부분도 클라이언트 부분까지 구현하면서 수정할 수 있었습니다. postman 같은 서비스로 서버 구현을 미리 테스트해봤다면 더 좋았겠습니다.

클라이언트 구현 부분에서는 서버로 데이터를 요청하고 받아온 데이터를 state로 저장해서 관리했습니다. 이번에는 redux를 쓰지 않고 구현했더니 상태 관리가 복잡했습니다. 사이드바의 달력을 누르면 메인의 글이 바뀌어야하니 메인의 글에 대한 정보가 사이드바와 메인의 공통부모까지 올라가야했습니다. 이번 저희 과제는 그렇게 복잡하지 않았지만 그래도 상당히 많은 상태를 많은 컴포넌트를 거쳐 props로 내려줘야했습니다. 다음부터는 redux를 이용해야겠습니다.

또 서버 배포는 초반부터 했지만 도메인 구입은 막바지에 해서 https 사용은 마지막 2일에나 가능했습니다. 그런데 구글 OAuth에서 여러 오류가 났습니다. 다음에는 이런 환경도 미리 조성해서 시험해볼 수 있어야 하겠습니다.

그런데 이번 과제를 시작할 때도 그렇고 어떤 서비스를 구현할 것인가도 상당히 어려운 문제였습니다. 이런 아이디어는 어떻게 얻을 수 있을까요? 역시 자기가 필요로 하는 게 잘 생각날테니 여러 경험을 해보는게 중요할까요... 다른 사람의 아이디어를 대신 구현해주는 서비스 같은 것도 좋겠네요.

0개의 댓글