node 5

(언제 막힐지 모르는)Bun을 사용한 크롤링 방지 우회 방법과 원리(2)

1편 보러가기https://jjongsk.tistory.com/entry/Bun%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%81%AC%EB%A1%A4%EB%A7%81-%EB%B0%A9%EC%A7%80-%EC%9A%B0%ED%9A%8C (언제 막힐지 모르는)Bun을 사용한 크롤링 방지 우회 방법과 원리(1)Node의 기본 fetch를 사용하여 크롤링을 시도할 경우 요청이 차단되는 경우가 있다. 대표적으로 네이버의 검색이나 리뷰에 대한 크롤링을 시도할 때 이를 확인할 수 있다. 아래는 크롤링 요청 예jjongsk.tistory.com   방법을 딱히 찾지 못해서 좀 오랫동안 작업이 멈춰있었는데 아이디어가 떠올라서 해당 아이디어로 테스트를 진행해보았다. 일단 직접적인 원인은 Co..

etc 2024.11.28

(언제 막힐지 모르는)Bun을 사용한 크롤링 방지 우회 방법과 원리(1)

Node의 기본 fetch를 사용하여 크롤링을 시도할 경우 요청이 차단되는 경우가 있다. 대표적으로 네이버의 검색이나 리뷰에 대한 크롤링을 시도할 때 이를 확인할 수 있다. 아래는 크롤링 요청 예시 코드이다.import fs from "fs";fetch("", { headers: { accept: "text/html", "accept-language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7", "sec-ch-ua": '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"', "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_..

etc 2024.11.07

Jenkins 빌드 최적화를 위한 멀티프로세스 개선

현재 사용하고 있는 빌더에서 번들링 작업 시 멀티프로세스를 사용하고 있지만, Jenkins 빌드 머신의 24개 코어를 충분히 활용하지 못해 빌드 시간이 오래 걸리는 문제가 발생하고 있다는 사실을 찾아냈다. 기존 빌더에서는 워커 개수를 4개로 하드코딩하여 사용하고 있었기 때문에 발생한 문제이며 이를 개선하기 위해 다음과 같은 작업을 진행했다.CPU 코어 수에 맞춘 워커 개수 증가 먼저 os.cpus().length;를 사용하여 CPU 코어 개수를 얻고, 해당 개수만큼 worker-pool의 개수를 증가시켜 효율을 높였다.const numWorkers = os.cpus().length; 청크 분배 방식 개선 위의 CPU 코어에 맞게 워커 개수를 늘리는 작업 자체는 쉬운 작업이지만 이 때 문제가 발생한 부분이..

aws 2024.08.05

기존 빌더와의 호환성 검증을 위한 통합 테스트코드 작성

개요최근 레포지토리가 점점 커지면서 파일의 증가로 인해 전체 빌드 시 간간히 메모리 초과 문제가 발생하여, 빌드 시스템을 리팩토링하는 작업을 진행하였다. 이 빌더는 약 150명의 개발자가 사용하는 회사 전체 프로젝트 배포에 사용되므로, 기존 빌더와의 완벽한 호환성을 유지하는 것이 1순위 목표였고 개발 자체는 후순위였다. 따라서, 테스트 코드를 통해 기존 빌더와의 동기화 유무를 확실하게 잡고 개발을 시작하기로 하였다. 빌더는 내부에서 child_process를 사용하여 멀티 프로세서 환경에서 tsc를 사용한 컴파일과 rollup을 사용한 번들링 과정을 거쳐 빌드 파일을 생성하는 방식으로 동작하고 있었다. 단위 테스트보다는 결과 파일이 동일한지를 확인하는 것이 중요했기 때문에 빌더를 실행 시킨 뒤 최종 결과..

etc 2024.07.03

Docker, AWS ECR,Lambda를 사용하여 node.js function serverless로 배포하기

먼저 Docker를 다운받는다. docker가 없어도 lambda에 함수를 올리는건 쉽게 할 수 있지만 환경이 바뀔때마다 혹은 어딘가에 배포를 할때마다 매 번 환경을 맞춰줄수는 없으니 되도록 docker를 사용하는것이 좋다 로그인은 따로 진행하지 않아도 된다. https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | Docker Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows..

devops 2024.03.26