카카오 클라우드 스쿨 11월 17일

최재유·2022년 11월 17일
0

Node

Module

  • 독자적으로 실행가능한 단위 (파일) - 함수, 클래스 로 나뉨
  • Package : 1개 이상의 파일로 구성된 배포 단위 (실행이랑 아무상관x)
    npm은 여기에 해당
  • Program : 유사한 기능들을 묶어서 실행가능하도록 만든 파일의 집합
  • Process : 실행중인 프로그램
  • Thread : 독자적으로는 실행할수 없는 Porcess 내의 작업 단위

웹 서버

1)Web Server

  • 다른 곳에서 URL을 이용해서 사용할 수 있도록 해주는서버

2)Web Application Server

  • URL과 작업을 매핑해서 URL을 호출하면 작업을 수행하도록 해주는 서버

3)APPlication Server

  • 작업을 해주는 서버

node를 이용한 웹서버 만들기-

  • 실제로는 대부분 이방법을 사용하지 않고 express 모듈을 이용하는 경우가 많음

1)최근의 Web

  • Semantic Web 개념 등장: 로봇이 정보 자원의 뜻을 이해하고 논리적 추론까지 가능, 명확한 의미 전달이 중요 , Rest API속도의 변화
  • 인공지능 : 자신만의 컨텐츠 나 정보를 구성할 수 있도록 하는 사용자의 권한이 증가
  • 블록체인

2)WoA(Web Orented Architecture)

  • 사용자의 요구 사항 변경 - 여러 디바이스를 사용하고 디바이스끼리 끊어짐이 없는(Seamless)서비스 요구가 증대되면서 이를 구현하기 위한 방법으로 웹 기술이 각광받음
  • 기술의 변화 -인프라 측면에서는 클라우드 나 가상화 기술이 각광을 받고 있고 소프트웨어 측면에서는 WOA(전체 시스템 아키텍쳐를 웹을 중심으로 설계)

3)Framework 를 이용한 애플리케이션 개발

웹서비스 구축 방식

1) 정적 웹 서비스

  • 요청이 오면 요청에 해당하는 HTML 페이지를 찾아서 출력하는 방식

2) CGI(Common Gateway Interface)

  • 클라이언트의 요총아 오면 서버가 작업을 수행해서 결과를 전송하거나 화면을 전송하는 방식
  • Perl 이 시초
  • 이 방식은 사용자의 요청을 별도의 프로세스로 만들어서 처리
    하나의 요청을 전부 처리 하기 전까지는 다른 요청을 처리 할 수 없음
  • Perl 이나 ASP가 이런형태로 동작

3) Application SErver 방식

  • 사용자의 요청을 Thread를 만들어서 처리
  • 여러 사용자의 요청을 한꺼번에 처리하는 것 처럼 처리
    java -> Servelet(JSP) > Spring Framework
    c# -> asp.net
    JavaScript -> node.js FrameWork
    PHP -> Laravel Framwork
    Python -> Flask 나 Django Framework
    RUby - Rails

4)웹 프로그그래밍의 구조

  • 웹 브라우저<-> 웹 서버 <-> 애플리케이션 서버 (Controller, Service, Responsitory ) <-> 데이터 저장소
  • 언어나 프레임워크는 애플리케이션 서버를 만들기 위한 기술
  • Serverless 는 서버가 없는 것이 아니고 서버를 직접 구현할 필요가 없는 것
  • ☆☆웹 브라우저에서 서버에게 요청 하는 것을 request라고 하고 서버가 웹 브라우저에게 대답하는 것을 response 라고 합니다.☆☆

3.HTTP 모듈

  • 내장 모듈이므로 별도로 설치할 필요없음

1)서버 생성

  • http모듈. createServer((request, reponse) => {
    내용
    });

2)서버 실행

  • 서버객체listen(포트번호, 아이피주소); // 아이피 주소는 현재 컴퓨터에 여러 개의 IP가 존재하는 경우 작성

3)서버 종료

+서버객체.close();

4)서버에 발생하는 이벤트

  • request: 클라이언트의 요청이 있을 때
  • connection : 클라이언트가 접속했을 때
  • clienError : 클라이언트 오류가 발생했을때

5)request 객체

  • url: 요청한 url
  • method: 요청 방식(GET, POST, PUT, PATCH, DELETE, OPTION 등)

6)웹 서버 만들고 직접 응답을 생성하기

  • JS 파일을 추가한 후

7) 메소드 요청 방식

  • GET: 서버 자원을 가져오려고 할 때 사용 (조회-Read)
  • POST: 서버에 자원을 새로 등록하고자 할 때 사용(또는 뭘 써야할 지 애매할 때) (삽입 - CREAT)
  • PUT: 서버의 자원을 요청에 들어있는 자원으로 치환하고자 할 때 사용 (수정 - UPDATE)
  • PATCH: 서버 자원의 일부만 수정하고자 할 때 사용(수정 - UPDATE, 권장하지 않음)
  • DELETE: 서버의 자원을 삭제하고자 할 때 사용 (삭제 - DELETE)
  • OPTIONS: 요청을 하기 전에 통신 옵션을 설명하기 위해 사용

9)REST(Representational State Transfer ) API

  • 서버의 자원을 정의하고 자원에 대한 URL을 지정하는 방법
  • URL 과 Method 만으로 작업을 예측할 수 있도록 하는것
    URL은 /member 이고 Method 는 POST 라면 회원 가입
  • 클라이언트의 종류에 상관업이 동일한 작업은 동일한 URL로 처리
  • 클라이언트 애플리케이션을 서버 애플리케이션과 분리해서 구현하고 서버는 클라이언트의 뷰를 만들지 않고 데이터를 전송합니다.
    클라이언트

10)XSRF(Cross-Site Request Forgery)

  • CSRF 라고도 하는데 쿠키 만으로 인증하는
  • 서비스의 취약점을 이용해 사용자가 모르게 해당 서비스에 특정 명령을 요청하는 공격

express 모듈

1)exptress 모듈

  • 내장 모듈이 아님 - 설치가 필요
  • http 모듈을 가지고 웹 서버를 만들 수 있는데 가독성이 떨어지고 확장성이 떨어짐
  • http 모듈 보다는 코드 관리가 용이하고 편의성이 높은 모듈
  • 이 모듈을 제외하고 웹 서버를 생성해주는 모듈은 여러가지가 있고

package.json

{
  "name": "wodb",
  "version": "1.0.0",
  "description": "npmwebserver",
  "main": "app.js",
  "scripts": {
    "start": "nodemon app"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cookie-parser": "^1.4.6",
    "express": "^4.18.2",
    "express-session": "^1.17.3",
    "morgan": "^1.10.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.20"
  }
}

브라우저 접속확인

http://localhost:3000 (포트번호)

0개의 댓글