전체 글 78

💻Socket.Io 이해하기

💻Socket.Io 이해하기 📌Socket.IO란? Socket.IO란 이벤트를 기반한 서버와 브라우저 간의 양방향 통신을 돕는 라이브러리이다. http는 일반적으로 양방향 통신이 불가능한데, polling, long-polling, WebSocket 등의 시스템 디자인을 사용하여 양방향 통신이 가능한 것처럼 구현할 수 있다. Socket.IO는 일반적으로 위 모델 중 long-polling 방식을 사용한다. Polling polling 방식에서는 클라이언트에서 주기적으로 서버에 데이터를 요청한다. 클라이언트에서 요청이 오면 서버에서는 변경이 없거나 새로운 데이터가 없더라도 응답을 보낸다. 따라서 주기적으로 정해진 시간마다 데이터를 확인해야 하는 서비스에 적합할 수 있지만, 불필요한 요청이 많아질 수 있..

SERVER/Node.js 2022.04.17

HTTP vs HTTPS

HTTP vs HTTPS ✅HTTP와 HTTPS의 기본개념 HTTP는 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자입니다. 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜입니다. HTTPS는 하이퍼 텍스트 전송 프로토콜 보안(Hypertext Transfer Protocol Secure)의 약자입니다. 일반 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 것! 이 말은 즉, 데이터가 쉽게 도난당할 수 있다는 것이었습니다. HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했습니다. SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라..

System/네트워크 2022.04.12

AWS EC2에서 불필요한 데이터 정리하고 용량 확보하기

AWS EC2에서 불필요한 데이터 정리하고 용량 확보하기 ✅ 리눅스 : 용량 부족할때, 커널 삭제로 용량 확보하기 bash: Cannot create temp file for here-document: No space left on device 용량이 없어서 위와 같은 오류가 발생할 수 있습니다. 이럴때 하드디스크나 SSD 볼륨 용량을 확장하거나, 필요없는 파일을 지우는 방법이 있지만 그전에 리눅스의 오래된 커널이 남아있을 수 있기때문에 용량부족의 원인일 수 있기 때문에 한번 확인해보시는 것이 좋습니다. 확보하는 방법은 참고링크를 따라 수행하면 된다. 참고 폴시랩 자바스트립트, PHP, 워드프레스, HTML, CSS, 팁, 가이드, 일상이야기. falsy.me ✅ 리눅스에서 비정상적으로 용량이 큰 로그(..

System/AWS 2022.04.12

[Error] EC2 bash: Cannot create temp file for here-document: No space left on device

[Error] EC2 bash: Cannot create temp file for here-document: No space left on device 📌발생된 에러들 이 상황은 사용중인 EC2의 디스크 공간에 임시 파일 문서를 만들 수 없을 때 발생됩니다. 또한 배포중인 서버를 restart도 되지 않을 수 있습니다. 새벽6시에 fix된 코드를 적용하기위해서 서버를 재실행하는 과정에서 사용중인 mongoDB에 연결이 되지 않는 에러가 발생되었습니다. 이것도 EC2의 디스크 저장공간이 없어서 발생되었던 문제였던것 같습니다. 이 글에서는 EC2의 저장공간을 늘리는 내용을 적어가겠습니다. mongoDB에서 발된생 에러에 대해서는 따로 링크를 달겠습니다. EC2 용량 확인/디스트 확장 bash창켜고 Ec2에 ..

SERVER/ERROR 2022.04.12

[Error] Mongodb (code=exited, status=14) failed but not any clear errors

Mongodb (code=exited, status=14) failed but not any clear errors 리눅스 우분투에서 몽고디비 서버가 구동되지 않는 오류 해결하기 📌해결방법 제 경우에는 사용자가 mongod이고 폴더의 /var/lib폴더가 mongo이므로 이 명령을 실행해야 했습니다. 1. mongodb파일 권한 mongodb로 설정 $ sudo chown -R mongodb:mongodb /var/lib/mongodb 2. mongodb-27017.sock 파일 권한 mongodb로 설정 $ sudo chown mongodb:mongodb /tmp/mongodb-27017.sock 3. 몽고디비 상태 시작 $ sudo service mongod start 4. 몽고디비 상태 확인 $ s..

SERVER/ERROR 2022.04.12

mongoDB 백업 및 복구 파일만들기

mongoDB 백업 및 복구 서비스에서 사용되고 있는 DB가 터져버릴 수 있는 상황을 대비하여 백업파일을 만들어두면 좋을것 같아서 이와 같은 내용을 올립니다. 📌mongoDB 백업하기(dump) mongodump -u user_name -p user_password --authenticationDatabase=admin --out /home/ubuntu/dev/teaming_backend --db db_name --collection collection_name --gzip 옵션 설명 -u : 계정명 -p : 계정의 비밀번호 --authenticationDatabase=admin : 인증 --host : 원격 시 IP 주소 및 포트 --out : Dump 받을 폴더 경로 --db : Dump 받을 DB ..

DB/MongoDB 2022.04.12

[Error] MongoDB_Error_document must have an _id before saving

[Error] MongoDB_Error_document must have an _id before saving 📌 MongoDB_Error_document must have an _id before saving 에러 원인 프레임워크: Nest.js DB : MongoDB lib : mongoose TypeOMD를 이용해서 DB 스키마를 작성하고 _id의 타입을 지정한 다음부터 발생된 에러이다. 해경 방법 매우 간단하다. 스키마에서 명시적으로 _id 필드를 선언한 경우 명시적으로 초기화해야 한다. 스키마에 선언하지 않은 경우 MongoDB에서 자동적으로 선언하고 초기화한다. 필자처럼 스키마에 포함하되 초기화하지 않으면 이와 같은 에러메세지를 받을 수 있다.

SERVER/ERROR 2022.04.03

Nginx와 Certbot(Let's Encrypt)으로 HTTPS 설정하기

Nginx와 Certbot(Let's Encrypt)으로 HTTPS 설정하기 📌 Nginx의 Reverse Proxy Reverse Proxy: 외부에서 내부 서버가 제공하는 서비스 접근 시, Proxy 서버를 먼저 거쳐서 내부 서버로 리다이렉션 하는 기능 certbot으로 Let's Encrypt의 인증서를 발급받고 nginx에서 https 설정을 하고 Nginx의 Reverse Proxy를 이용해서 HTTPS(443) 요청과 80 포트 요청이 들어오면 node 서버로 리다이렉션 한다. Nginx와 certbot 설치, 인증서 발급 1. nginx를 설치한다. sudo apt-get install -y nginx 2. Certbot 설치 Certbot 설치 : 여기서 웹 서버와 시스템을 선택하면 그 환..

System/네트워크 2022.03.31

Proxy & Nginx란?

Proxy & Nginx란? 📌 Nginx Nginx는 경량 웹 서버입니다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 합니다. Nginx는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능합니다. 이러한 Nginx의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있습니다. Apache 의 C10..

System/네트워크 2022.03.31

교차 출처 리소스 공유 (CORS) 이해하기

교차 출처 리소스 공유 (CORS) 이해하기 📌 CORS(Cross-Origin Resource Sharing)란? 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. 교차 출처 요청의 예시: https://domain-a.com의 프론트 엔드 JavaScript 코드가 XMLHttpRequest를 사용하여 https://domain-b.com/data.json을 요청하는 경우. 보안 상의 이유로, 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한합니다. 다른 출처..

System/네트워크 2022.03.31