목록분류 전체보기 (384)
만족
웹 어플리케이션에서 데이터 패칭, 캐싱, 서버 상태와 동기화 및 업데이트(fetching, caching, synchronizing and updating server state)를 쉽게 만들어주는 library 이 포스트에서는 react-query의 기초적인 개념 몇 가지에 대해 다룬다. Installation yarn add @tanstack/react-query eslint와 함께 사용하는 것을 추천, 세팅은 아래 링크 참조 https://tanstack.com/query/latest/docs/eslint/eslint-plugin-query ESLint Plugin Query | TanStack Query Docs tanstack.com Quick Start: queryClient https://t..
const normalDoc = await MyModel.findOne(); mongoose를 이용하여 쿼리할 때 위와 같은 형태로 쿼리한다. https://mongoosejs.com/docs/index.html mongoose 의 quick start에서도 위와 같이 소개하고 있어 계속 이렇게 사용해왔지만, 클러스터링까지 사용하게 되면서 cpu, memory 사용량이 증가하여 조치를 취해야만 한다. 쿼리 시 어떤 데이터를 반환하는가? const normalDoc = await MyModel.findOne(); 이 코드를 사용했을 때 normalDoc에는 어떤 데이터가 할당될까? util.inspect와 console.log를 이용해 normalDoc을 찍어보면 { _id: 659bc8cc415b117a..
얼마 전부터, 불명의 원인으로 서버의 CPU수치가 100%로 치솟으면서 내려오지 않아 서버가 요청을 전혀 처리하지 못하는 현상이 발생하고 있다. 특정 프로세스, 특정 시간이나 특정 주기로 발현되는 증상도 아니고, 어쩔 땐 하루에 두번이나 저랬다가 또 어쩔 땐 몇주동안 발생하지 않는다. 아직 원인을 찾지 못해서 장애를 인지하면 문제가 되는 프로세스를 재시작하고 있다. 현재 서버 내 서비스 구조를 간단히 요약하면 위와 같다. 백엔드 프레임워크들끼리도 특정 기능을 의존하고 있고, DB는 거의 모든 api에서 사용하고 있기 때문에 이들 중 하나만 장애가 발생하더라도 연쇄적으로 장애가 발생한다. 장애가 발생할 경우 빠른 인지, 수정, 복구가 가능해야 하는데, 이 상황에서 가장 중요한 것은 '빠른 인지'기 때문에 ..
2023년 9월 18일 새벽 2시경부터 ssh 접속이 불가능한 문제가 발생했다. OS 업데이트 중 실패하여 발생한 문제로 파악하고, 매일 0시에 스냅샷을 백업하게 설정해 두었기 때문에 크게 생각하지 않고 복구 작업에 들어갔다. 그러나 17일, 16일... 12일까지 저장된 모든 스냅샷을 이용해 새 인스턴스를 만들었지만 전부 ssh 접속이 불가능했다. 문제는 ssh 접속뿐만 아니라 대부분의 서비스(apache, mysql 등)이 동작하지 않고 있었다. 부팅 자체가 실패했는가? 에 대해서는 서버 모니터링 시스템에선 정상적으로 트래픽이 들어오고 있었기 떄문에 부팅은 성공했지만 일부 서비스 구성에 실패한 것으로 보인다. 서버 복구를 위해 어떤 일들을 했는지 정리해보고 같은 문제를 겪고 있는 사람들에게 도움이 되..
웹 배포 후 정상적으로 작동하는지 확인해보기 위해 직접 몇몇 url들로 들어가, 정상적으로 웹사이트가 동작하는지 확인하고는 한다. 그러나 매 배포마다 모든 페이지를 확인하기는 번거로우며, 그렇다고 테스트 코드를 빡빡하게 작성하기에는 부담스럽다. cypress를 사용하면 이 작업을 간단히 자동화할 수 있다. 가령 특정 url로 접근하기만 해도 웹사이트가 터져버리는데 미처 확인하지 못해 한참 뒤에나 알아차린 경험이 있다면 아주 간단한 cypress test를 적용하는 것 만으로도 그런 상황을 막을 수 있을 것이다. 샘플 프로젝트 세팅 # 리액트 프로젝트 생성 npx create-react-app simple-cypress-with-react cra로 리액트 프로젝트를 생성해준다. yarn add react-..
아파치 설정 튜닝 후, 동시 연결을 테스트할 때 발생했다. 한 번에 열 수 있는 파일 갯수에 대한 제한이 있는데, 이것을 늘려 주면 해결된다. ulimit -n 현재 설정된 동시 오픈 수 확인 (1024로 확인됨) ulimit -n 4096 뒤에 원하는 동시 오픈 제한 수를 입력해주면 늘릴 수 있다.
어느 순간부터 AWS lightsail의 기본 CPU core 사양이 2core 로 변경되었다. 분명 20달러부터 2코어였는데, 아무도 모르게 2core로 변경되었다. 문제는 기존 플랜을 사용하던 사용자의 사양은 자동으로 변경되지 않았다는 것인데... CPU가 더 낮은 사양으로 변경되고 코어를 하나 추가해 준 것인지, 아니면 동일한 CPU에 그냥 코어를 하나 덤으로 추가해 준 것인지에 대한 정보는 알 수가 없어 직접 확인해 보았다. 기존 플랜과 신규 플랜의 CPU cat /proc/cpuinfo | grep 'name'| uniq 위 명령어로 CPU 모델 정보를 가져올 수 있다. 기존 플랜의 CPU는 Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz 이고, 신규 플랜의 CPU는 ..
yarn classic yarn classic(v1) 과 npm에서 의존성을 추가하면 node_modules 에 설치된다. 새로운 프로젝트를 생성하고, yarn init 으로 초기화한 후 yarn add react 를 이용해 react 의존성을 추가하면 node_modules에 react 패키지가 추가된 모습을 볼 수 있다. 그런데 분명 추가한 것은 react 하나뿐이지만, js-tokens 와 loose-envify 패키지도 존재하는 것을 확인할 수 있다. node_modules/react/package.json의 dependencies를 살펴보면 loose-envify를 사용하고 있고, node_modules/loose-envify/package.json의 dependencies를 살펴보면 js-to..