개발일지 - 클론코딩(항해 48일차)

스브코·2021년 12월 19일
1
post-custom-banner

github: https://github.com/Hanghae99-cloneCoding-team8/ohou-Backend
video: https://youtu.be/Ob9taGdHbYY


오늘의 집 클론코딩


프로젝트 목적

오늘의 집 플랫폼을 클론코딩해봄으로써 E-commerce 플랫폼의 기본적이 구조와 서비스 형태를 이해하고 배워보려는 목적으로 프로젝트를 시작하게 되었다. 프론트엔드와 협업하는 첫 클론코딩이라서 함께 웹사이트의 서비스를 살펴보면서 짧을기간동안에 가능한 스코프를 기획하여 진행하게 되었다.


기술 스택

Backend

Java, SpringBoot
Selenium
MySQL
AWS


Frontend

ReactJs
AWS


Entity Relationship Diagram

설계시 고려 사항

프론트엔드 쪽에서 스코프를 너무 줄이는 바람에 상품등록과 로그인, 회원가입기능도 포함시키지 못했다. 그래서 상품 데이터를 크롤링하는 과정에서 메인페이지에서 보여주는 상품의 이미지과 상세페이지에서 보여주는 다수의 상품 이미지가 달라서 상품 테이블과 이미지 테이블을 1:N, N:1 양방향 관계로 결합시켰고, 댓글 테이블도 상품 페이지가 없어지면 함께 사라져야 하기에 1:N, N:1로 결합시켜서 cascade.All 옵션을 주었다.


API 설계


새롭게 배우게 된 점

  • Selenium을 통한 다이나믹 페이지 데이터 크롤링 및 크롤링된 데이터를 이용한 DB구축

  • End-to-End 테스트 코드 작성을 통한 restTemplate 사용 방법

  • Scheduler 어노테이션을 사용하여 스케줄링 서비스(오늘의 딜) 구축

  • 로그인 없이 댓글 기능 구현 시 비밀번호 암호화/복호화를 위한 AES256 방식 사용


가장 신경쓴 부분/기술

가장 신경쓴 부분은 데이터 크롤링이였다. 내가 맡은 파트는 아니였지만 클론코딩인만큼 가장 중요한 부분이였고, 오늘의 집 페이지가 다이나믹 페이지여서 Jsoup으로는 불가능하여 Selenium을 사용하였다. springboot 프로젝트 가동시 바로 크롤링을 실행하여 JPA를 이용하여 DB 구축을 진행하였다.


회고

프론트엔드 개발팀의 역량이 너무 부족해서 백엔드에서 클론코딩을 통해 많은 것을 구현하지 못했다. 항해의 협업 커리큘럼의 단점을 경험한 한 주였다. 댓글 CRUD API를 만들어 제공했지만 프론트엔드에서 구현을 하지 못했고, 뷰 이외에 제대로 구현된 기능이 없어서 실패한 프로젝트였다. 백엔드 팀원들은 리액트에 대한 지식이 거의 없어서 도와줄 수도 없고 그냥 답답하게 시간만 보내게 되었고, 실전 프로젝트때 똑같은 상황이 벌어지면 도움을 주기 위해서 금요일 부터는 리액트 강의를 들었다. 실망스런 한 주였지만, 제한된 시간속에서 새로만난 팀원과 최선을 다하였기에 다음주에는 이와 같은 문제가 발생해도 해결하기 위해 더 노력해야겠다는 생각이 들었다.

profile
익히는 속도가 까먹는 속도를 추월하는 그날까지...
post-custom-banner

0개의 댓글