Redux-thunk |
리액트에서 비동기 작업을 처리할 때 사용하기 위해 선택했습니다. |
React-redux |
예측 가능한 데이터 플로우를 그릴 수 있다는 장점이 있고 전역으로 상태관리를 할 수 있는 라이브러리로 리덕스를 선택했습니다. |
react-device-detect |
모바일 뷰와 데스트탑 뷰를 구분하여 접속하는 기기에 따라 반응형을 구현하였습니다. |
Immer |
구조가 복잡한 객체라도 간결한 코드로 불변성을 유지하며 상태를 업데이트하기 위해 사용했습니다. |
Axios |
비동기로 HTTP통신을 하기 위해 브라우저 호환성이 높은 AXIOS를 사용했습니다. |
swiper |
슬라이드와 다양한 UI를 지원합니다. |
vercel |
|
github-action |
CI/CD 를 위해 사용하였습니다. Jenkins 등 다른 툴에 비해 간단하게 CI/CD 파이프라인을 구성할 수 있고 Reference도 많아서 커스텀하기에 용이해서 사용하였습니다. |
puppeteer |
크롤링을 위해서 사용된 라이브러리 입니다. 크롬 기반의 Headless browser 로 클릭이벤트까지 백그라운드에서 가능하기 때문에 최초의 데이터베이스 생성을 위한 실행시 7000개 라는 데이터를 크롤링 과정중 cpu 부하를 줄일 수 있어서 좋았으며, |
백그라운드에서 작동할 수 있다는 메리트는 pm2 로 ubuntu 환경에서도 가능하기 때문에 관리자의 별도의 관리없이 자동으로 업데이트 및 유지보수도 가능하기 때문에 저희에게 꼭 필요한 라이브러리라고 생각되서 사용하게 되었습니다. |
|
crontab |
앞서 사용된 puppeteer의 자동화를 위한 스케줄러 로서 사용하였습니다. aws ec2 ubuntu 환경에서 편리하게 사용할 수 있었고 node.js 서버의 추가적인 부담이나 라이브러리 패키지 설치 없이 실행되기에 사용했습니다. |
Jest |
저희가 사용하는 언어인 자바스크립트에 특화된 테스트코드이며 비교적 사용이 간단하며 빠른 테스트를 위해 이전 테스트에서 실패했던 것을 가장 먼저 실행하고, 테스트의 수행 시간을 예측하여 실행 순서를 재배치하는 점이 시간단축이 필요한 저희 프로젝트에 적합하다고 판단되어 사용하였습니다. |