Web

백엔드 기초 쌓기

codingtori 2024. 7. 8. 18:40

Node.js

- 서버 단에서 자바스크립트를 실행할 수 있는 자바스크립트 런타임                                        **런타임 : 코드가 실행되는 환경

각 계층이 각 하단에 있는 API를 사용하는 계층의 집합으로 설계되어 있음

 

싱글 스레드

-> 콜 스택이 하나만 있음

 

이벤트 기반 아키텍처

-> 구현방법 : 반응자 패턴 (= 이벤트 디멀티플렉서 + 이벤트 큐) 

이벤트를 추가하는 주체와 해당 이벤트를 실행하는 주체를 분리하는 구조  -> 이벤트 루프 필수 (libuv)

 

V8 : 오픈 소스 자바스크립트 엔진; 자바 스크립트 코드를 실행하도록 해줌                     

**엔진 : 사용자가 작성한 코드를 실행하는 프로그램

libuv : 이벤트 루프 및 운영체제 계층 기능을 사용하도록 API 제공함

 

 

Express

- Node.js에서 가장 많이 사용되는 웹 프레임워크

 

 

서버의 종류

1. 웹 서버

파일이나 이미지 같은 정적인 파일을 서비스; 요청된 웹페이지나 정보를 제공하는 서버

2. WAS(: Web Application Server)

동적인 웹 애플리케이션을 실행하는 데 사용되는 서버; 웹 프레임워크를 실행시켜 요청받은 데이터를 처리하는 역할을 함

-> 데이터 처리

 

 

백엔드 아키텍처

아키텍처 : 계획(종합적으로 분석, 계획, 정리한 것); 총체적이고 종합적이고 상세하게 개발을 준비하는 것

아키텍처의 종류

1. 계층형 아키텍처

: 소프트웨어를 몇 가지 계층으로 나누어서 만드는 방식

각 계층은 주어진 역할을 수행하며, 의존성이 단방향

장점: 복잡도가 낮고, 계층 내에서 관련 코드의 응집도가 높음, 테스트가 쉽다

단점: 애플리케이션의 규모가 클 경우 계층이 거대해지며 유지보수가 힘들고, 개발 속도가 떨어짐, 배포도 어려움

ex) TCP/IP

 

2. 이벤트 기반 아키텍처

: 이벤트의 상태 변화에 대응하는 소프트웨어 설계 패턴

모든 요청을 비동기로 처리함                                                      **비동기 : 흐름이 멈추지 않고 동시에 여러 가지 작업처리가능

[구성]

- 프로듀서 : 이벤트 발생시킴             - 브로커 : 이벤트 전달                       - 컨슈머 : 이벤트 받음

 

3. 마이크로서비스 아키텍처

: 시스템을 여러 개의 작은 서비스로 나누어 관리하는 설계방식

독립적으로 개발, 배포, 운영되며, 서로 구조적으로 분리되어 있음; 대규모 시스템 구축에 유용

 

이외에도 다양한 아키텍처가 있음.............

 


 

require() : 모듈을 읽어오는 함수

const http = require("http");

▽  http 모듈을 불러와서 http 변수에 할당함

 

 

createServer() : 서버 인스턴스를 만드는 함수; 콜백함수를 인수로 받음

콜백함수 : http 서버로 요청이 들어오면 해당 요청을 처리할 함수; 요청 처리에 사용할 요청(req)와 응답(res)객체를 인수로 받음

○ req : 경로로 들어오는 모든 요청을 담고 있다; request; 클라이언트로 오는 HTTP 요청

○ res : 요청에 대한 응답을 보냄; response; 서버가 클라이언트에 보내는 HTTP 응답

 

 

http 주요 상태 코드

코드 메시지 설명
200 OK 요청 처리 성공
400 Bad Request 요청 실패. 클라이언트의 요청에 문제가 있음
404 Not Found 페이지를 찾을 수 없음
500 Internal Server Error 서버 에러

 

 

라우팅

: URL경로(path)에 따라서 다른 응답을 주는 것

 

URL 구성요소

○ 프로토콜                                ○ 호스트명                            ○ 경로                                ○ 해시

 

 

쿼리 스트링(query string)

: HTTP 요청을 보낼 때 사용자가 원하는 값을 보내는 방식; ?key=value 형식으로 사용 + 여러 개일 경우 &로 연결

 

 

리팩터링(refactoring)

: 동작 결과를 변경하지 않으면서 코드의 구조를 재조정하는 작업; 가독성을 높이고 유지보수를 편하게 하는 목적

 

 

 

 

 

 

 

 

 

출처: Node.js 백엔드 개발자 되기