BackEnd/Node (17) 썸네일형 리스트형 [노드교과서] 섹션 15. 16장 AWS 서버리스(S3+Lambda) 사용하기 16.1 서버리스 1. 서버리스 컴퓨팅 이해하기 ⇒ 서버리스는 영어로 'serverless'이다. 'server(서버) + less(없는)' 이지만, 사실 서버가 없다는 것이 아니다. 클라우드 서비스가 대신 관리함으로 개발자/운영자가 서버를 관리하는 부담이 줄어든다는 의미이다. - 서버리스 컴퓨팅을 할 때는 AWS ES2나 구글 컴퓨트 엔진(Google Compute Engine : GCE)과는 다르게 WM 인스턴스를 미리 구매하지 않아도 된다. - 단순히 코드를 업로드 한 뒤, 사용량에 따라 요금을 지불하면 된다. (함수처럼 호출할 때만 실행됨, FaaS(Function as a Service) - 24시간 작동할 필요가 없는 서버인 경우, 서버리스 컴퓨팅을 사용하면 필요한 경우에만 실행되어 요금 절약.. [노드교과서] 섹션 14. 15장 AWS에 배포해보기 15.1 서비스 운영을 위한 패키지 1. 실 서비스 배포 준비하기 ⇒ 서비스 개발 후 외부환경인 AWS에 배포준비 과정을 정리 - 서버 실행 관리, 에러 내역관리, 보안 위협 대처 2. morgan ⇒ 개발용으로 설정된 익스프레스 미들웨어를 배포용으로 전환한다. - process.env.NODE_ENV를 통해 배포환경인지 배포환경인지를 판단 - 배포 환경일 때는 combined를 사용한다(dev보다 더 많은 사용자 정보를 남김)if (process.env.NODE_ENV === 'production') { app.use(morgan('combined'));} else { app.use(morgan('dev'));} 3. express-session ⇒ 기존 설정들을 배포용과 개발용으로 분.. [노드교과서] 섹션 13. 14장 CLI 프로그램 만들기 14.1 간단한 콘솔 명령어 만들기 1. CLI ⇒ CLI(Command Line Interface) 기반 노드 프로그램을 제작해보기 - 콘솔 창을 통해 프로그램을 수행하는 환경을 구현하며 반대 개념은 GUI(그래픽 유저 인터페이스)이다. - 리눅스의 셸이나 브라우저 콘솔, 명령 프롬프트 등이 대표적인 CLI 방식 소프트웨어이다. 2. 콘솔 명령어 ⇒ 노드 파일을 실행할 때 node[파일명] 명령어를 콘솔에 입력한다. - node나 npm, nodemon처럼 콘솔에서 입력해 어떠한 동작을 수행하는 명령어를 콘솔 명령어라고 한다. - nodemon, rimraf같인 명렁어는 npm i -g 옵션으로 설치하면 명령어로 사용이 가능하다. - 패키지 명과 콘솔 명령어를 다르게 만들 수도 있.. [노드교과서] 섹션 12. 13장 실시간 경매 시스템 만들기(서버센트이벤트, 스케줄링) 13.1 프로젝트 구조 갖추기 13.2 서버센트 이벤트 사용하기 ⇒ npm install $ npm i sse socket.io 13.2.1-1. Server-Sent Events (SSE) 서버센트 이벤트란? ⇒ SSE는 서버의 데이터를 클라이언트로 스트리밍하는 기술이다. 웹 표준이며 단방향 통신만을 지원한다. 또한 IE를 제외한 모든 브라우저에서 지원된다. IE를 통한 지원을 하려면 ployfill을 통해 지원이 가능하다. - 기존 서버에서 변경된 데이터를 불러오기 위해선 새로고침이나 ajax 폴링, 외부 플러그인을 이용해야 했다. - 이외에 websocket을 사용할 수 있지만 별도의 서버와 프로토콜로 통신되기 때문에 비용이 많이 든다. - SSE는 기존 HTTP 웹 서버에서 HTTP API만으로 .. [노드교과서] 섹션 11. 12장 실시간 GIF 채팅방 만들기(웹소켓, Socket.IO) 12.1 웹 소켓 이해하기 1. 웹소켓 이해하기 ⇒ 웹 소켓 : 실시간 양방향 데이터 전송을 위한 기술이다. - ws 프로토콜 사용 → 브라우저가 지원해야 사용할 수 있다. - 최신 브라우저는 대부분 웹 소켓을 지원한다. - 노드는 ws나 Socket.IO같은 패키지를 통해 웹 소켓을 사용할 수 있다. ⇒ 웹 소켓 이전에는 폴링이라는 방식을 사용했다. - HTTP가 클라이언트에서 서버로만 요청이 가기 때문에 주기적으로 서버에 요청을 보내 업데이트가 있는지 확인했다. - 웹 소켓은 연결도 한 번만 맺으면 되고, HTTP와 포트 공유가 가능하며, 성능도 좋은 편이다. 2. 서버센트 이벤트 ⇒ SSE(Server Sent Events) - EventSource라는 객체를 사용한.. [노드교과서] 섹션 10. 11장 테스트 해보기(단위, 통합, 부하) 테스트 준비하기 ⇒ 테스트에 필요한 패키지는 jest이다. 이 패키지는 페이스북에서 만든 오픈 소스로 테스팅에 필요한 툴들을 갖추고 있어 편리하다. - 테스트 파일이 될 대상은 파일명에 index.spec.js, index.test.js 가 들어가야 한다. - npm 개발자모드로 설치 $ npm i -D jest - pakage.json에 실행 스크립트 수정 // package.json { ... "scripts" : { "start" : "nodemon app", "test" : "ject", }, ... } - test 실행하기 $ npm test 11.2 단위(유닛) 테스트 해보기 ⇒ 테스트 틀을 잡고 describe로 테스트를 그룹화하여 관리하자. - middlewares 단위 테스트 // mid.. 섹션 9. 10장 API 서버 만들기(JWT, CORS) 10.1 API서버 이해하기 ⇒ API : Application Programing Interface - 다른 애플리케잇현에서 현재 프로그램의 기능을 사용할 수 있게 허용하는 접점을 의미한다. - 웹 API는 다른 웹 서비스의 기능을 사용하거나 자원을 가져올 수 있는 창구이다. - 다른 사람에게 제공하고 싶은 부분만 API로 허용하고, 제공하고 싶지 않은 부분은 제외한다. - API에 제한을 걸어 일정 횟수, 시간 내에서만 권한허용이 가능하다. 10.2 API 서버 프로젝트 구성하기 1. lecture-api 프로젝트 // middlewares/index.js // 토큰 유효성 검증 미들웨어 exports.verifyToken = (req, res, next) => { try { // api 사용자가 토.. [노드교과서] 섹션 9. 노드버드 SNS 만들기 9.1 프로젝트 구조 갖추기 1. NodeBird SNS 서비스 ⇒ 기능 : 로그인, 이미지 업로드, 게시글 작성, 해시태그 검색, 팔로잉 - express-generator 대신 직접 구조를 갖춘다. - 프런트엔드 코드보다 노드 라우터 중심으로 학습을 진행한다. - 관계형 데이터베이스 MySQL을 사용한다. 2. 프로젝트 시작하기 ⇒ nodebird 폴터를 생성 후 npm init을 통해 package.json 파일을 생성한다. ⇒ 시퀄라이즈 폴더 구조를 생성한다. $ npm i sequelize mysql2 sequelize-cli // 글로벌 설치를 안하고 디펜던시에서 찾아서 설치를 하려면 npx를 붙여 입력해야한다. $ npx sequelize init 3. 폴더 구조 설정 ⇒ views(템플릿 .. 이전 1 2 3 다음