Programming181 Error: ENOSPC: System limit for number of file watchers reached 문제 해결 React를 AWS에 Docker Container로 올리는 과정에서 에러가 발생합니다. 분명 Docker로 로컬에서 돌렸을 떄는 잘 되다가 AWS EC2로 올리니 에러가 발생합니다. 에러코드 ENOSPC Error: ENOSPC: System limit for number of file watchers reached 말 그대로 watch limit(파일 감시자 수)을 초과했다는 뜻인데요, EC2가 무료 티어로 사용가능 하다 보니 서버 기초 설정이 낮게 설정되어 있습니다. EC2 환경에서는 조금만 메모리를 사용하는 프로그램을 돌려도 에러가 부지기수로 발생합니다. 얼른 테스트를 끝내고 실제 서버에 배포해야 겠네요 우선 현재 파일 감시자 수(watches) 상태를 보기 위해서는 아래 경로에서 확인가능합니다... 2022. 9. 25. Node.js 웹서버 배포 버전 만들기 production mode 백엔드 제작이 완료 된 후 본격적으로 배포를 진행하게 됩니다. 배포를 할 때는 개발을 진행하는 것이 아니라 사용자가 직접적으로 서비스를 이용하는 부분이므로, 개발환경에서 배포 환경으로 전환을 해줘야 합니다. 배포판을 만들 때 필요한 순서와 요소들을 하나씩 집어봅니다. console.log() 삭제 성능 향상 debugging 목적으로 가장 많이 사용하는 함수가 console.log() 입니다. 하지만 실제 서버를 돌릴 때 console.log()는 서버 성능 저하에 주요 요소로 작용합니다. 따라서 production 모드에서는 console.log()를 모두 삭제해줘야 합니다. 보안 이슈 서버에 남아있는 console.log()는 디버깅 목적으로 사용됩니다. 따라서 크리티컬한 정보들이 그대로 노출될 수 .. 2022. 9. 22. Reverse Proxy VS Forward Proxy 차이점 Nginx는 Apache에서 불필요한 기능을 최대한 덜어내고 빠르게 웹서버를 구동시킬 수있는 웹 서버 프로그램입니다. 두 서버간 대표적인 차이점은 제공하는 proxy 기능에 있습니다. Apache의 경우 mod_proxy에서 forward proxy와 reverse proxy 기능 둘다 제공하지만 Nginx에서는 Reverse Proxy만 제공합니다. 그럼 forward / Reverse Proxy는 어떤 차이가 있을까요? Proxy란? proxy는 클라이언트의 요청을 대리 해주는 중계자 역할을 합니다. 즉 클라이언트와 서버간 직접적인 통신이 확립되는 것이 아니라, 클라이언트의 프록시 서버와 서버간의 통신이 만들어지는 것입니다. 웹 애플리케이션에서 프록시를 쓰는 이유는 여러가지가 있습니다. 1. 보안 이.. 2022. 9. 20. Nginx 란? 웹 서버 개념 이해하기 웹 서버란? 팀 버너스 리가 구축한 월드 와이드 웹(WWW)은 인터넷 네트워크에서 동작하는 프로토콜입니다. 인터넷에서는 클라이언트가 웹 서버에게 요청을 보내고 연결은 HTTP 프로토콜로 연결이 확립된 후 데이터가 전송됩니다. 클라이언트는 쉽게 말해 정보를 요청하는 쪽이고, 서버는 정보를 전달해주는 역할을 담당합니다. 서버 컴퓨터라고 따로 있는게 아니라 우리가 일반적으로 사용하는 PC도 서버로써의 동작을 할 수 있습니다. 대표적으로 개발을 할 때 많이 사용하는 localhost가 웹 서버가 될 수 있습니다. 웹 서버의 큰 특징 중 2가지는 우선 정적 리소스를 반환해주는 기능입니다. HTML, CSS와 같이 동적으로 변하는 데이터가 아닌 데이터들을 반환해줍니다. 두번째 역할은 프록시 기능입니다. 구글과 같이.. 2022. 9. 20. bash: sudo: command not found 해결 Docker Ubuntu 이미지를 가져와 작업을 하려고 하는데, root 계정이 아닌 일반 계정을 생성해서 작업을 진행해야 한다. root 계정은 리눅스에서 admin 계정이므로, 여러가지 설치가 안되는 경우가 있다. 우선 User를 추가해준다. Linux User 추가 adduser 명령어를 사용하면 간단하게 user를 추가할 수 있다. root@322e972c07ed:/# adduser user1 Adding user `user1' ... Adding new group `user1' (1000) ... Adding new user `user1' (1000) with group `user1' ... Creating home directory `/home/user1' ... Copying files fr.. 2022. 9. 20. Ubuntu Version 확인 명령어 (terminal 에서 버전 정보 체크 방법) CLI 환경에서 우분투 버전을 확인할 수 있습니다. 여러가지 방법으로 확인할 수 있는데, 편한 방법으로 알아보시면 됩니다. 첫번째 방법 첫번째 방법은 cat 명령어로 간단하게 버전을 확인할 수 있습니다. $ cat /etc/issue 두번째 방법 release 정보를 확인해서 ubuntu 버전을 확인할 수 있습니다. $ lsb_release -a 세번째 방법 /etc/ 폴더에 저장된 release 정보를 모두 불러와서 우분투 버전을 확인할 수 있습니다. $ cat /etc/*release 2022. 9. 19. AWS EC2 인스턴스 삭제 하는 방법 AWS는 웹 호스팅을 위한 IaaS를 제공하는 서비스 입니다. 처음 회원가입 후 최초 1년간은 무료 티어를 사용할 수 있으므로, 테스트 목적으로 사용하기에는 최적의 서비스 입니다. 다만 테스트가 완료되면 현재 사용중인 서비스를 모두 종료해야 과금되는 것을 막을 수 있습니다. AWS EC2 인스턴스 삭제 하는 방법 AWS EC2(Elastic Computer Cloud)는 서버 컴퓨터 서비스를 제공합니다. 사용이 완료된 클라우드 컴퓨터는 종료를 해줘야 합니다. 우선 검색창에 EC2를 검색합니다. [EC2 Dashboard] 로 들어가면 현재 작동중인 EC2 인스턴스들을 확인할 수 있습니다. 종료하고자 하는 인스턴스를 선택 후 [Instance State] -> [Terminate Instance]를 선택하.. 2022. 9. 19. Insomnia API Document 사용법 [API 문서화 도구] 서버 작업을 하다보면 필수적으로 API 테스트를 진행하게 됩니다. API 테스트 툴로는 POSTMAN이 가장 많이 사용되지만, 프로그램 자체가 무거운 감이 없지 않아, Insomnia로 갈아탔습니다. API를 다 테스트 한 뒤 프론트를 작업하시는 분께 API를 어떻게 사용해야 하는지, 대략적으로 보여줘야 하는데, 정식 문서를 작성하기 전 개발용 API 문서를 생성할 수 있습니다. Insomnia API 문서 만들기 ① 우선 테스트한 API 데이터들을 출력해줍니다. 문서로 출력할 API를 선택한 후, JSON 형식으로 데이터를 Export 해줍니다. Insomia API 문서 렌더링 저는 API Test 데이터를 testAPI.json이라는 이름으로 저장했습니다. 이제 저장된 디렉토리로 이동하셔서 아래 명.. 2022. 9. 19. Artillery 부하테스트 사용 방법 [Node.js test] 백엔드 작업을 할 때 가장 신경써야 하는 부분은 뭘까요? Restful API를 작성한다고 할 때 DB Schema도 작성해야 하고, router, controller도 작성해야 한다. 하지만 이 이상으로 중요한게 서버가 얼마만큼의 요청을 견딜 수 있냐 하는 것입니다. 서버를 제작할 때 엄청난 양의 트래픽을 감당하기 위해서 서버를 이중 삼중으로 두거나, DB 손실을 막기 위해 클러스터링 + 레플리카 셋 구성 + 샤딩 처리 등으로 데이터 손실을 막고 사용자 요청에 유연하게 대응할 수 있는 방법을 마련합니다. 서버 제작을 할 때 유닛테스트를 진행하고, 제작이 완료되었다면 부하 테스트 혹은 스트레스 테스트(Stress Test)를 진행해봐야 합니다. 이 테스트를 통해서 서버의 성능을 가늠할 수 있고, 불필요하.. 2022. 9. 18. React render 두번 호출되는 이유? (useEffect는 잘못없음) 리액트로 소셜 앱을 만드는 과정에서 렌더링이 두번씩 되는 현상이 발생합니다. 가장 기초적으로 useEffect()에 종속 배열로 관리하고자 하는 state가 변경되면 렌더링이 계속 발생하지만, 종속배열을 비워두면 렌더링이 1번만 되는게 정상입니다. 하지만 현실과 이론은 다릅니다 ㅋㅋ 아래 코드에서 useEffect()의 종속배열을 비워두고, 1번만 실행될거라 예상했습니다. 하지만 page를 오픈해보면 아래처럼 2번씩 렌더링 됩니다. 굉장히 미스터리한 상황이라 구글링을 통해 해답을 찾아보니 EffectHook의 문제가 아닌 개발환경 셋팅의 문제였습니다. Solved 컴포넌트를 감싸고 있는 index.js 파일에 들어갑니다. React.StrictMode로 App이 감싸져 있는데, 저녀석이 개발환경에서 테스.. 2022. 9. 18. Javascript 함수 실행시간 timer 사용법 시간 측정 함수 실행시간을 측정하기 위해서는 UNIX Time을 사용합니다. 우선 함수를 시작하기전 UNIX TIME을 구하고 함수가 종료된 시점의 UNIX TIME을 구해서 시간차를 계산하면 함수를 실행하는데 얼마나 많은 시간이 소요되는지 확인할 수 있습니다. Javascript 함수 실행시간 timer 사용법 시간 측정 const start = new Date(); let count = 0; while(count < 100000000){count++} const end = new Date(); console.log(end-start+'ms') ① start 지점에서 UNIX TIME을 구합니다. ② count 변수를 0으로 선언하고, 1억번의 카운팅을 수행합니다. ③ 종료된 시점에서 UNIX TIME을 구합니다.. 2022. 9. 18. WebSocket VS Socket 차이점 (WS HTTP 차이) 서버와 클라이언트가 통신하기 위해서는 우선 연결이 확립되어야 합니다. 기본적으로 클라이언트는 서버에 정보를 요청하고 서버는 단순히 응답을 하는 형식입니다. 기존의 HTTP 통신은 TCP/IP 소켓을 사용해 통신을 확립하고 데이터를 교환했지만 실시간 애플리케이션의 등장으로 WebSocket이 등장합니다. HTTP (TCP/IP Socket) WWW에서 가장 많이 사용되는 HTTP는 단방향 상태 비저장 프로토콜입니다. 클라이언트가 요청을 보내면 서버는 단순히 응답만 하게 됩니다. 요청을 보낼 때 패킷을 암호화할지 말지에 따라 HTTP와 HTTPS로 구분됩니다. HTTP는 TCP 전송계층 위에서 작동하는 프로토콜입니다. 노드들을 거치면서 라우팅을 지원하는 IP 계층 위에서 종단간 투명한 데이터 전송을 지원하는.. 2022. 9. 16. [회고록] 코드스테이츠 프로젝트 DID 인증 서비스의 가치는? 2022.09.01 - [Blockchain] - [회고록] 코드스테이츠 프로젝트 3 시작 (DID 인증 서비스) [회고록] 코드스테이츠 프로젝트 3 시작 (DID 인증 서비스) 아쉬웠던 프로젝트 2를 뒤로하고, 바로 프로젝트 3이 시작되었다. 팀 빌딩을 하고 이번에는 DID와 Klaytn을 이용한 탈중앙화 인증 서비스를 주제로 프로젝트에 참여하게 되었다. 코드스테이츠 UR Cla about-tech.tistory.com 코드스테이츠에서는 총 3번의 프로젝트를 진행하게 된다. 그 중 3번째 프로젝트는 기간도 한달로 가장 길고, 많은 기능들을 만들어 볼 수 있는 좋은 기회다. DID 서비스를 구현하는 프로젝트에 참여하게 되었고, 백엔드, API, Database 부분을 맡아서 작업을 시작했다. 프로젝트 문.. 2022. 9. 15. 와이어샤크 우분투 설치 사용 방법 HTTP 프로토콜을 사용하는 패킷을 검사하기 위해서 가장 좋은 프로그램은 와이어 샤크 입니다. 우분투 환경에서 설치방법을 알아보겠습니다. 와이어 샤크 우분투 리눅스 설치 apt 리포지토리에 wireshark를 설치합니다. $ sudo apt update $ sudo apt install wireshark 콘솔화면이 출력됩니다. root 계정이 아닌 상태에서 패킷을 검사할 수 있게 할 건지 물어봅니다. No로 체크합니다. 보안상 문제가 발생할 수도 있으므로 신중하게 생각하셔서 선택하시면 됩니다. 전체 앱을 보시면 wireshark가 정상적으로 설치되었습니다. 혹시나 root 계정이 아닌 일반 계정에서도 패킷을 검사하고자 한다면 아래 명령을 입려합니다. $ sudo dpkg-reconfigure wiresh.. 2022. 9. 7. JWT 비대칭키로 암호화 복호화 하는 법 프로젝트를 진행하면서 Issuer가 발급한 Verifiable Credential을 암호화해야 하는 상황이 생겼다. JWT를 이용해서 암호화 복호화 하는 방향으로 정하고, 비대칭키 방법을 적용했다. 기존에 JWT는 대칭키로만 사용해서 서버에서 인증용도로만 사용했었는데, VC를 암호화하는 방식으로 사용하는 건 이번이 처음이다. JWT 비대칭키 비대칭키를 생성하는 알고리즘은 여러가지가 있지만, 이번 경우에는 Node.js에서 기본 제공되는 crypto 모듈을 사용해 RSA 알고리즘, pem 형식으로 비대칭키를 발급받아 publicKey와 privateKey로 사용했다. 우선 crypto module로 비대칭키를 발급받는 방법은 아래 글을 참고하면 된다. Node.js crypto 비대칭키 대칭키 구현하기 암.. 2022. 9. 7. 이전 1 2 3 4 5 6 7 8 ··· 13 다음