본문 바로가기

전체 글

(193)
도커로 프로젝트 배포하기 - 서비스 분리 1.DokerFile작성우선, 도커로 서비스를 분리하기로 한 이유가 크롤링 스케줄러 서비스이기 때문에 도커 컨테이너 환경에서 chrome과 chromedriver가 실행이 되어야 한다.그런데 도커 컨테이너는 배포된 이미지를 기반으로 독립적인 환경에서 실행되기 때문에, ec2에 설치되어있는 chrome과 chromedriver를 가져다 쓸수 없다.따라서 도커를 빌드하기 위해 작성하는 Dockerfile에 chrome과 chromedriver 설치관련 스크립트를 작성해 주어야 한다.FROM ubuntu:22.04# 빌드 아규먼트 설정ARG AWS_ACCESS_KEY_IDARG AWS_SECRET_ACCESS_KEY# 환경 변수 설정ENV AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}E..
도커로 프로젝트 배포하기 - 워크플로우 프로젝트를 배포하고 관리하던중, 스케줄러 서비스는 분리를 하는게 좋겠다는 생각이 들었다.이유는 1. 추후 도커 컨테이너를 통해 로드밸런싱을 할 건데, 시간에 맞춰 크롤링을 하는 스케줄링 서비스가 기타 다른 api를 관리하는 서비스와 같은 컨테이너로 실행되면 중복 실행 등의 문제가 생길 수도 있다.2.  api서버는 실시간 요청에 대응해야 하므로, 트래픽이 많아질 때 스케일링이 필요할 수 있지만, 스케줄링은 고정된 시간에만 작동하므로 그만큼의 리소스를 요구하지 않기 때문이다.3. 스케줄링 서비스와 api서비스의 업데이트 주기가 다르기 때문이다. api서비스는 상대적으로 업데이트를 많이하지만 스케줄링 서비스는 한번 구축해놓으니 업데이트를 잘 하지 않게 되었다.4. 크롤링 스케줄링 서비스는 외부 데이터를 크롤..
무한 스크롤 구현 react로 작성중인 프로젝트중 스크롤이 화면 끝에 도달했을때, 추가적으로 데이터를 더 로딩하는 무한 스크롤 방식을 구현해야 해서 구현해 보았다. 대상 데이터는 페이징 처리 돼서 반환이 되는 데이터이고, 이를 처리하기위해 useState를 이용해 변수를 선언했다.현재 페이지가 몇 번째 페이지인지 알기 위해 page를 선언하고, 페이지가 끝에 도달했는지 알기 위한 용도로 totalPage를 선언해 주었다. aysnc와 await를 사용해 비동기 처리를 해주고, useEffect를 통해 page의 상태가 변경될때마다 fetchProducts를 통해 페이지 데이터를 요청하도록 했다.   그리고 이벤트 리스너를 통해 스크롤 위치를 체크할수 있게 하고, 이를 useEffect의 의존성을 [page,totalPag..