본문 바로가기

더이상 하지 않는 Backend - NodeJS35

[O'REILLY] Node & Express - 5장 : 품질보증 1. 품질보증 1) 예산이 풍부하거나 규모가 큰 경우 - 보통 QA부서가 따로 있고, QA부서와 개발 부서 사이에는 적대적인 공기가 흐른다. - QA는 버그를 많이 찾아야하고, 개발부서는 버그가 적어야 한다. 2) 예산이 빠듯하고 규모가 작은 경우 - 개발 인력이 QA와 소프트웨어 개발을 모두 담당한다. - 개고생한다. 3) 결론 - 개발자도 QA 기술을 갖추는 것도 매우 좋은 경쟁력이다. - 전통적으로 QA 부서에서 담당했던 역량이 개발 쪽으로 넘어오는 추세가 되면서, 개발자들도 QA에 책임 지는 일이 많아졌다. - 이런 상황에서는 QA에 특화된 소프트웨어 엔지니어가 개발자들의 조언가 같은 역할을 하면서 개발 업무에 QA를 넣으 수 있게 돕는다. 2. QA 계획 - QA는 창의적인 과정과 다르게 질서의.. 2023. 3. 13.
[O'REILLY] Node & Express - 4장 : 디렉터리와 버전 관리 1. 파일과 디렉터리 구조 - 프로젝트 경로의 파일 숫자는 가급적 줄이는 편이 좋다. - 일반적으로 package.json, README.md 디렉터리 이정도 - 소스 코드는 대부분 src에 보관하지만, 간결함을 위해 여기서는 그렇게 하지 않는다. - 어떻게 디렉터리와 애플리케이션을 설계했는지에 따라 README.md 에 마크다운언어로 기록해두면 좋다. - 관습적으로 정해진 것들이 있지만, 애플리케이션의 성격에 따라 효율적으로 관리하는게 근본이다. - App의 DataStructure나 API의 흐름도와는 다를 수도 있다. 다만 그 흐름을 잘 이해할 수 있게 설계하는 것이 중요하다. 나는 이렇게 쓴다. Root backend frontend 2. 버전 관리 - 장점 : 1) 문서화 : 프로젝트의 역사 기.. 2023. 3. 10.
[O'REILLY] Node & Express - 3장 : 뷰엔진 설정하기 1. 뷰엔진 설정 - 저번 시간에 npm i express-handlebars 설치를 통해 모듈을 설치했으면 다음과 같이 코드를 추가해준다. meadlolark.js - 이 코드는 뷰 엔진을 생성하고 익스프레스에서 이 엔진을 기본값으로 사용한다. - views 디렉토리를 만들고 그 안에 layouts 서브디렉토리를 만든다. - 레이아웃을 사용하면 사이트에 존재하는 모든 페이지에 프레임워크를 제공해 유지보수 지옥을 피할 수 있다. - 이제 템플릿을 만든다. /views/layouts/main.handlebars - {{{body}}} 부분의 표현식은 각 뷰에서 HTML로 바뀐다. - 핸들바 인스턴스를 만들었을 때 defaultLayout: 'main' 으로 기본 레이아웃을 선언했으므로, 따로 명시하지 않는.. 2023. 3. 8.
[O'REILLY] Node & Express - 3장 : Express 1. 스캐폴딩 - 스캐폴딩(비계, 발판) 이란 루비에서 도입한 개념이다. 프로젝트의 뼈대를 미리 만들어두고, 새 프로젝트를 시작할 때마다 뼈대(템플릿)를 복사하면 된다는 아이디어이다. - 익스프레스는 스캐폴드를 생성하는 유틸리티를 제공한다. - 단, 익스프레스의 스캐폴딩 유틸리티는 서버사이드에서 HTML을 생성하는 방향에 치중해있고, API나 단일페이지 App에는 큰 도움이 되지 않는다. - express-generator 문서에서 확인할 수 있다. 2. 메도라크 여행사 웹사이트 - 이 책에서는 가상의 회사 메도라크 여행사의 웹사이트를 예제로 사용한다. 3. 초기 단계 - 설치 : 터미널에 npm init -y 입력. - package.json 의 entry point(main) : 'meadowlark.. 2023. 3. 7.
[O'REILLY] Node & Express - 2장 : NodeJS 시작하기 1. 기본지식 - 노드 : nodejs 패키지를 설치할 수 있다. - 터미널 : 터미널을 켜고 끌 수 있으며, cd, npm 등을 활용 할 수 있다. - IDE : 객기 말고 돈 없으면 VScode 쓰자. - npm : 노드 패키지를 위한 패키지 매니저. npm install, -g, -D 등의 옵션과 기본 명령어를 알고 있다. 2. 노드로 만드는 단순한 웹서버 - 웹 서버는 파일이 컴퓨터 어디에 있는지 확인하고 브라우저(클라이언트)에 그 파일을 전송한다. - 노드는 전통적인 웹 서버와는 다른 패러다임을 제시한다. 노드에서는 앱이 곧 웹서버이다. - 이벤트 주도 프로그래밍 : 노드의 배경이 되는 철학이다. 어떤 이벤트가 일어날지, 그 이벤트에 어떻게 반응해야 할지 프로그래머가 이해해야 한다. UI의 클릭.. 2023. 3. 6.
[O'REILLY] Node & Express - 1장 : EXPRESS에 대하여 2021.05.01. 발행된 오라일리 노드&익스프레스 교과서를 핵심정리하고 복습하기 위한 포스팅이다. 1. 익스프레스 소개와 특징 - 익스프레스는 '웹과 모바일 앱에 빈틈없는 기능을 제공하는, 최소화되고 유연한 노드 웹 어플리케이션 프레임워크' 이다. - 자바스크립트(언어)를 기반으로하는 V8엔진(런타임)을 기반으로하는 NodeJS(서버용런타임)를 기반으로하는 프레임워크가 Express이다. - 특징 1) 최소화 : 유용한 기능을 제공하되, 최소한의 프레임워크를 제공하고, 익스프레스의 기능 중 필요한 것만 추가하고 필요하지 않다면 제거할 수 있도록 도와준다. 2) 유연성 : HTTP요청을 받고, HTTP응답을 반환하는 서버의 궁극적이고 근본적인 역할에 충실한다. 3) 웹 앱 프레임워크 : 익스프레스는 웹.. 2023. 3. 6.
Express - 5장 : Authentication - 1 (Session-based Auth) 1. Authentication 개요 1. session-based authentication - 로그인 시 cookie를 발행(session id가 적혀있다.) - 요청 시 user의 session id를 보내고 받는다. - 로그인 상태를 서버에 다 저장한다. 2. token-based (JsonWebToken) - JWT (REST원칙에 맞다) - 로그인 시 JSON Web Token을 발행. - 쿠키나 로컬스토리지에 저장. - 요청 시 user의 JWT를 헤더에 포함해서 보내고 받는다. - JWT토큰 유효성 검사 후 보내준다. - 유저의 로그인 상태를 저장할 필요가 없다. 3. Open Authentication(OAuth) - 다른 사이트의 프로필 정보를 가져온다. (구글, 페이스북, 카카오, 애.. 2023. 3. 3.
Express - 4장 : Mongoose 의 CRUD 1. CRUD란 ? - create - read - update - delete 2. Cheat Sheet Schema 세팅 var mongoose = require("mongoose"); var Schema = mongoose.Schema; var ProductSchema = new Schema({ name: { type: String, required: true }, brand: { type: String, required: false }, order: { type: Schema.Types.ObjectId, ref: "Order" } }); // This creates our model from the above schema, using mongoose's model method var Product.. 2023. 3. 3.