전체 글 175

[AWS] ALB로 EC2 인스턴스 번갈아 접속하기

1️⃣ VPC 생성 VPC : 가상 사설망 2️⃣ Subnet 생성 subnet : 서브넷은 VPC의 IP 주소 범위이다. VPC 안에 서브넷을 여러 개 추가하여 내부를 논리적으로 쪼갠다. Subnet은 각 AZ에서 Public subnet 하나와 Private 서브넷 하나로 나눈다. 3️⃣ IGW 생성 Public 서브넷은 외부에서 내부로의 접근이 가능해야 한다. 이는 Internet Gateway: IGW와 연결하여 Private 서브넷으로 들어오고 나갈 수 있는 통로가 되도록한다. 여기서 IGW는 EC2 인스턴스와 인터넷 사이 통신을 가능하도록 하는 역할이다. 즉, 트래픽이 외부에서 들어오고 외부로 나가는 것을 가능하게 하는 역할 4️⃣ Routing Table 생성 네트워크 통신이 이루어질 때, ..

Cloud + Infra 2023.02.06

[Node] package.json과 node-modules

package.json - 설치한 패키지 버전을 관리하는 파일 - 노드 프로젝트를 시작하기 전에 폴더 내부에 무조건 package.json을 만들고 시작 - scripts : npm 명령어를 저장해두는 부분 - npm run [스크립트 명령어] : 해당 명령어가 실행됨 - npm install [패키지 이름] : package.json이 저장된 폴더 위치에서 패키지 설치 (npm install express) - dependencies : 의존관계에 있는 패키지들이 모여 있음 - devDependencies : 개발용 패키지들 - nodemon : 소스코드가 바뀔때마다 자동으로 노드를 실행시켜주는 개발용 패키지 node-modules - 설치한 패키지들이 모여있는 폴더 - Express 하나만 설치했는데..

Node.js 2022.12.17

[Node] cluster

cluster 모듈 - 싱글 프로세스로 동작하는 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈 cluster 모듈의 장점 - 포트를 공유하는 노드 프로세스를 여러개 둘 수 있음 → 요청이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산되게 할 수 있음 → 서버에 무리가 덜 가게 되게 함 cluser 모듈의 단점 - 프로세스들 간에 메모리를 공유하지 못하는 문제 - 세션을 메모리에 저장하는 경우 문제가 될 수 있음 → 레디스 등의 서버를 도입하여 해결 cluster의 종류 - 마스터 프로세스 : CPU 개수만큼 워커 프로세스를 만듦. 8086 포트에서 대기, 요청이 들어오면 만들어진 워커 프로세스에 요청을 분배 - 워커 프로세스 : 실제로 일을 하는 프로세스 const cluster = r..

Node.js 2022.12.11

[Node] https와 http2

1️⃣ https 모듈 - 웹 서버에 SSL 암호화를 추가 - GET 이나 POST 요청을 할 때 오가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 함 - 로그인이나 결제가 필요한 창에서 https 적용이 필수 - 인증서를 인증기관에서 구입 혹은 Let's Encrypt 같은 기관에서 무료로 발급 받아야함 const https = require('https'); const fs = require('fs'); https.createServer({ cert: fs.readFileSync('도메인 인증서 경로'), key: fs.readFileSync('도메인 비밀키 경로'), ca: [ fs.readFileSync('상위 인증서 경로'), fs.readFileSync(..

Node.js 2022.12.11

[Node] 쿠키와 세션

쿠키 - 유효기간이 있음 - 키-값의 쌍 형태 - 서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터는 클라이언트로부터 쿠키를 받아 요청자를 파악 서버에서 쿠키 만들기 const http = require('http'); http.createServer((req, res) => { console.log(req.url, req.headers.cookie); res.writeHead(200, { 'Set-Cookie': 'mycookie=test' }); res.end('Hello Cookie'); }) .listen(8083, () => { console.log('8083번 포트에서 서버 대기 중입니다!'); }); - 쿠키는 문자열 형식(mycookie=test)으로..

Node.js 2022.12.11

[Node] REST, HTTP 메서드 개념

REST? - REpresentational State Transfer - 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법 ( = 약속 ) - HTTP URI를 통해 자원을 표시하고, HTTP 메서드를 통해 해당 자원에 대한 CRUD 연산을 적용한 것 - 꼭 파일일 필요는 없고 서버가 행할 수 있는 것들을 통틀어서 의미함. HTTP 요청 메서드 - 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단 GET : 존재하는 자원에 대한 요청 데이터 조회, CRUD로 따지면 Read POST : 새로운 자원을 생성 데이터 등록, CRUD로 따지면 Create PUT : 존재하는 자원에 대한 변경 (자원 전체를 갱신) 데이터 수정, CRUD로 따지면 Update PATCH : 존재하는 자..

Node.js 2022.12.11

[Node] 이벤트, 이벤트 메서드

스트림을 공부했을 때, on('data', 콜백) 또는 on('end', 콜백)을 사용했음 바로 data라는 이벤트와 end라는 이벤트가 발생할 때 콜백함수를 호출하도록 이벤트를 등록한 것! 이렇게 노드에서 이벤트를 만들고 호출하고 삭제해보자 const EventEmitter = require('events'); const myEvent = new EventEmitter(); myEvent.addListener('event1', () => { console.log('이벤트 1'); }); myEvent.on('event2', () => { console.log('이벤트 2'); }); myEvent.on('event2', () => { console.log('이벤트 2 추가'); }); myEvent.o..

Node.js 2022.12.10

[Node] 파일시스템, 버퍼, 스트림 알아보기

fs - 파일 시스템에 접근하는 모듈 📌 fs.readFile - 파일 읽기 - 결과물 : 버퍼(buffer) 형태로 출력되어서 사람이 읽을 수 있는 형색으로 변환 ( toString 사용 ) 📌 fs.writeFile - 파일 만들기 📌 프로미스 기반의 fs 모듈 - fs는 기본적으로 콜백 형식의 모듈이므로 실무에서 사용하기가 불편 const fs = require('fs').promises; fs.readFile('./readme.txt') .then((data) => { console.log(data); console.log(data.toString()); }) .catch((err) => { console.error(err); }); readFile과 readFileSync 메서드 📌 readFi..

Node.js 2022.12.10

[Node] 노드의 내장 모듈들

주요한 노드 내장 모듈들에 대해 빠르게 알아보자! 1️⃣ os - 사용자 컴퓨터의 운영체제 정보 - 일반적인 웹 서비스를 제작할 때는 사용 빈도가 높지 않지만 운영체제 별로 다른 서비스를 제공하고 싶을 때 유용 • os.arch(): process.arch와 동일 • os.platform(): process.platform과 동일 • os.type(): 운영체제의 종류를 보여줌 • os.uptime(): 운영체제 부팅 이후 흐른 시간(초)을 보여줌. process.uptime()은 노드의 실행 시간 • os.hostname(): 컴퓨터의 이름을 보여줌 • os.release(): 운영체제의 버전을 보여줌 • os.homedir(): 홈 디렉터리 경로를 보여줌 • os.tmpdir(): 임시 파일 저장 경..

Node.js 2022.12.10

[Node] 노드의 내장 객체들

말 그대로 빠르게 노드 프로그래밍을 할 때 자주 사용되는 노드의 내장 객체들에 대해 하나씩 살펴보자 global - 전역 객체 : 모든 파일에서 접근 가능 - 생략 가능 : console 객체도 원래는 global.console 이었음 - 남용 주의 : 프로그램의 규모가 커질수록 어떤 파일에서 global 객체에 값을 대입했는지 찾기 힘들어져 유지 보수에 어려움을 겪을 수 있음 console - 디버깅과 에러 내용 및 코드 실행 시간 확인에 사용 - console.log 메서드가 대표적 - console.time(레이블) : time과 timeEnd 사이의 시간을 측정 - console.error(에러 내용) : 에러를 콘솔에 표시 - console.table(배열) : 테이블 형식으로 표현 - cons..

Node.js 2022.12.08