트러블슈팅 axios timeout 상황: 특정 시간이 되면 서버에서 크롤링 작업을 수행 후, DB의 유저들에게 메일을 뿌려야 한다. 그러나 서버에서 크롤링 작업을 수행할 때 크롤링 대상 사이트의 속도가 너무 느려서 axios.get의 반환이 늦어짐에 따라 timeout: 3초로 제한을 두었다. 그런데 어떤 때는 크롤링을 빠르게 잘하는 반면, 어떤 때는 너무 느려서 timeout: 3초가 계속해서 터진다. 솔루션: 크롤링 대상인 학과 홈페이지들의 서버 상태가 시시각각 달라져서 timeout을 지정하기가 애매했다. 작업이 길어질수록 메모리 사용량이 커질 것 같았지만, timeout을 무제한으로 두는 수밖에 없었다. 서버 로그 AxiosError: timeout of 3000ms exceeded at Red..
프론트 최적화 2023-10-10 크롬의 Lighthouse 기능을 사용해서 React 프론트에 대한 최적화를 진행했다. Lighthouse Lighthouse는 웹 앱과 웹 페이지의 성능, 접근성, 웹사이트 작성 규칙, SEO 등 다양한 품질을 체크할 수 있는 오픈소스 도구이다. Google이 주도적으로 개발하고 있으며, 크롬 브라우저 내장 개발자 도구에서도 사용할 수 있다. CLI(Command-Line Interface) 형태로도 사용이 가능하고, Node 패키지로도 제공된다. 주요 기능 성능: 페이지 로드 시간, 렌더링 성능 등을 측정 접근성: 웹 표준과 접근성에 대한 준수 여부를 체크 Best Practices: 현대 웹 개발의 모범 사례를 체크 SEO: 검색 엔진 최적화에 필요한 요소를 체크 ..
배포 이제 그래도 사람들이 봐줄만하게는 만들었기에 베타 테스트를 진행해보고자 했다. 그러나 사람들에게 배포하기 위해서는 서버를 개설해야 했고, 돈이 드는 유료 모델은 싫었다. AWS EC2의 프리티어는 진작에 써버렸고 vercel의 프리티어도 저번 해커톤에서 사용해버렸다. 이곳저곳 무료 호스팅 서비스를 찾아보다가 koyeb을 발견했고 기간 제한 없이 최저 스펙의 프리티어 서버를 무료로 사용할 수 있었다. 첫 베타 테스트 10월 3일 오후 12시부터 10월 6시 오후 6시까지. 학술 동아리 사람들을 대상으로 베타 테스트를 진행했다. 목표가 학교 전체를 대상으로 하는 만큼 사전에 철저하게 버그를 잡기 위해 먼저 소규모로 배포했다. 다행히 별 문제없이 베타 테스트를 마쳤고 피드백을 들을 수 있었다. 피드백 1..
개발 내역 첫 번째 MVP 개발 9월 27일 수요일부터 구현을 시작하고 거의 3일 만에 MVP 개발을 완료했다. 기능이랄 것도 없고 메일을 입력하면 DB에 저장했다가 특정 시간이 되면 서버가 학과 홈페이지에서 게시글을 가져와서 DB에 존재하는 유저 메일로 게시글을 전송한다. 유저가 form에 이메일을 입력 이메일이 서버API를 거쳐 DB에 저장된다. 특정 시간이 되면 cron.schedul()을 통해 메일 전송 작업이 시작된다. 정컴 학과 홈페이지 RSS url에서 게시글 목록을 가져와서 DB에 있는 유저들의 이메일로 전송한다. 내가 생각해봐도 그냥 라이브러리 쓰면 되는 간단한 프로젝트다. 그래서 좀 더 스케일을 키우기로 했다. 정보컴퓨터공학부 홈페이지 뿐만 아니라 타과, 타학교 학과 홈페이지의 정보도 ..
배경 9월 27일 수요일. 점심을 먹고 친구들과 이야기를 하다가 갑자기 느낌이 왔다. 어떤 이야기를 한 건지는 기억이 나지 않지만, "학과 공지사항이나 채용게시판 같은 게시판의 정보가 갱신되면 이메일로 날라오면 좋겠다!"고 생각했고 왠지 그냥 할 수 있을 것 같았다. 내가 속한 과 뿐만 아니라 우리 학교의 모든 학과를 대상으로 서비스를 운영하면 많은 사람들이 애용하는 서비스가 되지 않을까?? 그래서 그냥 바로 다음 수업 시간부터 MVP 개발에 착수했다. 교수님에겐 죄송하지만.. 빨리 이 아이디어를 테스트해보고 싶어졌다. 가능할까? MVP 개발에 들어가기 전에 가장 중요했던 것은 "학과 게시판 크롤링이 가능한지"를 확인하는 것이었다. 다행히 우리 학교의 대부분의 학과 홈페이지의 게시판은 RSS를 제공한다...