전체 글 22

[NodeJS] MongoDB로 CRUD 작업하기

몽고DB는 Nosql(비관계형) 데이터베이스이다. 키-값 형태로 저장되며 SQL방식에 비해  더 유연하다.실제 프로젝트에서는 몽구스라는 편리한 프레임워크를 사용하는것을 추천한다.nodejs 테이블을 만들고 다음과 같이 컬렉션을 만들 수 있다.admin> use nodejsswitched to db nodejsnodejs> db.createCollection('users'){ ok: 1 }nodejs> db.createCollection('comments'){ ok: 1 }컬렉션에 JSON형태로 데이터가 저장된다.nodejs> db.users.insertOne({ name: 'min', age: 25, married: false, comment:'hello', createdAt: new Date() });..

Node.js 2025.02.21

[NodeJS] 라우터 분리하기

Express의 라우터 분리를 이용해보자. 프로젝트의 규모가 커질수록 매우 효과적이다.프로젝트 구조가 이런식으로 되어 있다고 해보자./my-app ├── server.js ├── routes │ ├── users.js │ ├── products.js ├── package.json └── node_modules우선 메인 server.js 이다. const userRoutes = require('./routes/users'): routes/users.js 파일을 불러와 userRoutes 변수에 저장 라우트 파일을 불러온 후, Expree에 등록해야 한다.이때 app.use(경로, 라우터)를 사용하여 특정 경로에 해당하는 라우터를 사용한다. app.use('/users', userRou..

Node.js 2025.02.17

[NodeJS] Express

npm install express@latest다음 명령어를 입력한다. 현재 디렉터리에 node_modules와 package.json이 생길것이다. const express = require('express');const app = express();app.get('/', (req, res) => { res.send('hello express');});app.listen(3000, () =>{ console.log('익스프레스 서버 실행');}); 다음 코드를 입력하고 터미널에서 node app 을 입력하여 express 서버를 실행해보자.이후 'localhost:3000'을 접속하면 서버가 정상적으로 작동하는것을 확인할 수 있다.이제 nodemon을 활용해보자포트를 3001로 지정해준후 n..

Node.js 2025.02.11

[NodeJS] HTTP 모듈로 서버 만들기(REST API)

노드는 서버가 아닌 서버를 실행시켜주는 엔진이다. 바로 만들어보자.const http = require('http');const server = http.createServer((req, res) => { res.write('I am Hungry'); res.write('Enough'); res.end('I am Hungry Enough');}) .listen(8080);server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중');});server.on('error', (error) => { console.error(error);})이제 localhost:8080을 접속해보자.서버를 만들어서 8080 포트에 프로세스를..

Node.js 2025.02.03

[NodeJS] 버퍼와 스트림

노드에서는 Buffer 객체를 사용할 수 있다.예를 들어 스트르밍할때, 100MB 파일을 1MB씩 나누어 보내면 수신측은 이 버퍼들을 다시 하나로 만들어줘야한다.아래는 concat을 이용하여 하나로 합쳐줬다.const buffer = Buffer.from('저를 버퍼로 바꿔보세요');console.log('from():', buffer);console.log('length:', buffer.length);console.log('toString():', buffer.toString());const array = [Buffer.from('스'), Buffer.from('벤'), Buffer.from('데')];const buffer2 = Buffer.concat(array);console.log('conca..

Node.js 2025.02.01

[NodeJS] 파일 시스템 접근하기(동기,비동기)

파일 시스템에 접근하는 모듈- 파일/폴더 생성, 삭제, 읽기, 쓰기 가능- 웹 브라우저에서는 제한적이었으나 노드는 권한을 갖고 있음. readme.txt라는 파일을 만들고 '읽기 파일' 이라는 텍스트를 저장해두자.이후 프로미시스 형식으로 파일을 읽으면 성공적으로 READ 완료write도 같은 방식으로 손쉽게할 수 있다.then을 사용하여 파일을 write(생성)한 이후에 바로 read까지비동기 방식으로 실행된다. 비동기-논블로킹 방식이 효율적이므로 순서를 잘 고려하자.fs는 동기, 비동기 모두를 지원한다. const fs = require('fs');let data = fs.readFileSync('./readme.txt');console.log(data.toString());이런식으로 뒤에 Sync만 ..

Node.js 2025.01.31

[AWS SAA#15] Amazon S3

더보기Amazon S3(Simple Storage Service)는 AWS에서 제공하는 확장 가능하고 안정적인 객체 스토리지 서비스입니다. 사용자는 이미지, 동영상, 문서, 로그 파일 등 다양한 데이터를 저장할 수 있으며, **고가용성과 보안, 내구성(99.999999999%)**을 제공합니다. 또한, 정적 웹사이트 호스팅, 데이터 백업, 빅데이터 분석, 머신러닝 데이터 저장 등 다양한 용도로 활용됩니다. 버전 관리, 액세스 제어, 수명 주기 관리 등의 기능을 제공하며, AWS Lambda, CloudFront, EC2 등과 원활하게 연동되어 클라우드 기반 애플리케이션 구축에 최적화된 스토리지 솔루션입니다.S3 콘솔로 이동하여 버킷 만들기를 클릭한다.버킷이름은 고유해야 하므로 주의해서 이름을 설정한다.나..

AWS Cloud/AWS SAA 2025.01.31

[NodeJS] worker_threads

노드에서는 멀티쓰레드 방식으로 작업할수 있다!isMainThread : 현재 코드가 메인 스레드에서 실행되는지, 워커 스레드에서 실행되는지 구분메인 스레드에서는 new Worker를 통해 현재 파일(_filename)을 워커 스레드에서 실행시킨다.worker.postMessage로 부모에서 워커로 데이터를 보낸다.parentPort.on('message')로 부모로부터 데이터를 받고, postMessage로 데이터를 보낸다.const { Worker, isMainThread, parentPort } = require('worker_threads');if (isMainThread) { // 메인 스레드 const worker = new Worker(__filename); worker.on('messa..

Node.js 2025.01.30

[AWS SAA#14] Beanstalk

Beanstalk을 사용하여 배포해보자.콘솔에서 Elastic Beanstalk으로 이동하여 애플리케이션 생성을 클릭웹 서버 환경을 선택하고 애플리케이션 이름과 환경 이름을 설정한다. 관리형 플랫폼에서 플랫폼은 Node.js를 선택하고 나머지는 기본값으로 냅두자.이후 다음과 같이 환경을 설정하고 완료한다. 다음으로 EC2 인스턴스 프로파일을 설정하기 위해 잠시 중단하고 IAM으로 이동하여 역할을 생성한다.AWS 서비스와, EC2를 선택.우리의 목적에 맞게 beanstalk을 검색하고, WebTier, WorkerTier를 선택한다. 그리고 MulticontainerDocker도 함께 클릭.Next를 클릭하고 역할 이름을 'aws-elastickbeanstalk-ec2-role'로 설정한뒤 생성을 완료 한..

AWS Cloud/AWS SAA 2025.01.30

[AWS SAA#13] Amazon EFS

Elastic File System으로 들어가서 파일 시스템 생성을 클릭한다.기본옵션 그대로 create를 클릭.특별한 작업을 할것이기 아니기 때문에 standard로 전환에서 '처음 액세스할 때'를 선택한다.나머지는 기본 옵션인 권장 사항으로 두고 다음을 클릭한다.보안 그룹을 만들기 위해 잠깐 멈춰두고 EC2 콘솔로 들어가자.메뉴에서 보안 그룹을 선택하고 보안 그룹을 생성한다.대충 이름과 설명 정도만 작성하고 완료.다시 돌아와서, 기본 옵션 그대로 넘어가고 방금 생성한 보안 그룹을 선택한다.나머지 설정은 모두 그대로 놔두고 생성을 완료한다.이제 EC2에 마운트해보자.EC2를 생성한다. 네트워크 설정에서 편집을 눌러 서브넷을 하나 지정해주자. 무엇이든 좋다. 파일 시스템에서 편집을 클릭한다.그리고 하리고..

AWS Cloud/AWS SAA 2025.01.23