들어가기전에
백엔드구조 와 Node.js 그리고 DB에 관하여 실습을 다루며, 배워본다.
강의를 보며 나의 주관적인 생각이 들어가 정리한것임으로 반드시 '내가 적은것이 맞다' 라는 것이 아니므로 읽어보시고 이상한부분이 있다면 저에게 알려주시거나 꼭 다른곳도 검색해서 찾아보기를 바랍니다.
목차
1. 학습 주제
- 백엔드 구조
- Node.js 소개 및 예제 구현
- URL 모듈 알아보기
- 데이터베이스, Docker, mariaDB 알아보기
2. 주요 메모 사항 소개
3. 공부하며 어려웠던 내용
학습 주제.1
백엔드 구조
웹 서버, 웹 어플리케이션 서버, 데이터베이스 이 3개를 통틀어서 백엔드라고 지칭하고 있다.
웹 서버의 역할
웹 서버(Web Server)는 정적 페이지에 대해 대응한다.
동적 페이지에 대한 처리는 직접 처리하지 않고, 웹 어플리케이션 서버에게 전달한다.
* 정적 페이지란, 화면의 내용/데이터 등 변동이 없는 페이지를 말한다.
* 동적 페이지란, 데이터 처리/연산을 통해 화면의 내용, 데이터가 변하는 페이지를 말한다.
웹 어플리케이션 서버와 데이터베이스
웹 어플리케이션 서버(Web Application Server)는 동적 페이지를 처리한다.
필요한 데이터 연산을 위해 데이터베이스와 연결되어 있으며, 데이터 조회/수정/삭제에 대한 처리를 요청한다.
* 데이터베이스란, 데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체를 말한다.
학습 주제.2
Node.js 소개 및 예제 구현
Node.js란
자바스크립트를 스트립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼
즉, Node.js를 이용해서 자바스크립트언어로 백엔드를 구현할 수 있다.
웹 서버의 실행 및 종료
//서버 생성
const http = require('http');
const server = http.createServer();
//서버 실행
server.listen(8888, () => { // 포트 설정
console.log('Server is running on port 8888'); // 서버실행 하면 콘솔을 출력
});
//5초 후 서버 종료
setTimeout(function() {
console.log('서버 종료');
server.close();
},5000);
require() : 외부모듈 불러오는 함수
require('http') : require()함수로 http 모듈 불러오기
* http: node.js의 기본 설치 시 포함돼있는 내장 모듈 중 하나로써, 웹 서버와 클라이언트를 만들고 통신 할 수 있다.
createServer() : http모듈에서 제공하는 메서드 중 하나로써, HTTP 서버 객체를 생성하는 데 사용
listen() : 지정된 포트에서 클라이언트 요청을 받을 수 있도록 만드는 역할
- listen('포트 번호') : 서버가 클라이언트의 요청을 받을 포트 번호 예) listen(8888) : 8888 이라는 특정 번호에서만 작동
- listen('포트 번호', 호스트 주소or콜백함수) : 호스트 주소는 서버가 바인딩될 네트워크 인터페이스를 나타냄 / 콜백함수는 서버가 시작되었을 때 실행
close() : http서버 종료 / 요청을 더 이상 받지 않고 현재 진행 중인 연결을 종료
end() : HTTP 요청 또는 응답을 종료 / 요청(req)이나 응답(res)의 본문이 완료되었을 때 호출
request : 요청에 대한 처리를 수행하는 이벤트 핸들러
response : 응답에 대한 처리를 수행하는 이벤트 핸들러
* 이벤트핸들러(EventHandler) : 이벤트가 발생했을 때 실행하는 함수
모듈화 해보기
// server.js
function start() {
//서버 생성
const http = require('http');
const server = http.createServer();
//서버 실행
server.listen(8888, () => { // 포트 설정
console.log('Server is running on port 8888'); // 서버실행 하면 콘솔을 출력
});
//5초 후 서버 종료
setTimeout(function () {
console.log('서버 종료');
server.close();
}, 5000);
}
exports.start = start; // start()함수 내보내기
// index.js
let server = require('./server');
server.start();
1. server.js의 파일에서 start함수를 외부파일에서 사용할 수 있게 만들어 놓은 후
2. index.js 파일에서 require함수를 사용해 server.js의 파일경로를 가져와 server함수에 넣어주고
3. server.js에서 내보냈던 start함수를 index.js에서 호출할 수 있다.
학습 주제.3
URL 모듈 알아보기
Uniform Resource Locator
웹 페이지가 어디있는지 "위치"를 알려주는 주소 즉, 웹 페이지 주소를 뜻한다.
Node.js의 URL 모듈
URL을 파싱하고 조작하기 위한 기능을 제공하는 내장 모듈로써, URL의 각 부분을 쉽게 추출하거나 조작 가능
주로 웹 서버나 웹 애플리케이션에서 클라이언트로부터 받은 URL을 분석하여 필요한 정보를 추출하는 데 사용
또는 URL을 생성하고 조작하여 특정 기능을 수행하는 데에도 활용될 수 있습니다.
URL에서 호스트, 경로, 쿼리 문자열 등을 추출해보기
const url = require('url');
const urlString = 'https://www.example.com/search?q=node.js&page=1';
// URL 문자열을 파싱하여 URL 객체로 변환
const parsedUrl = url.parse(urlString, true);
console.log(parsedUrl.host); // "www.example.com"
console.log(parsedUrl.pathname); // "/search"
console.log(parsedUrl.query); // { q: 'node.js', page: '1' }
학습 주제.4
데이터베이스, Docker, mariaDB 알아보기
데이터베이스(Database; DB)
데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체
데이터를 구조화하여 관리함으로써 데이터 중복을 막고, 효율적으로 빠른 데이터 연산이 가능
DBMS(DataBase Management System)
데이터베이스를 운영하고 관리하기 위해 DBMS를 통하여 데이터베이스를 사용
DBMS의 종류
운영 회사는 다르지만, 데이터베이스에 연상을 요청하기 위해 사용 되는 주요 명령어는 대부분 동일하다.
SQL (Structured Query Language)
데이터베이스에 연산을 요청하기 위해 사용 되는 언어로 데이터를 CRUD(생성, 조회, 수정, 삭제) 등과 같은 기능을 수행할 수 있다.
* CRUD : 기본적인 데이터 처리 기능인 Create(생성), Read(조회), Update(수정), Delete(삭제)를 묶어서 일컫는 말
이름 | 조작 | SQL |
Create | 생성 or 삽입 | INSERT |
Read (or Retrieve) | 조회 or 인출 | SELECT |
Update | 수정 or 갱신 | UPDATE |
Delete (or Destroy) | 삭제 or 제거 | DELETE |
도커(Docker)
컨테이너 기반 가상화 플랫폼으로, 소프트웨어를 개발, 배포 및 실행하기 위한 오픈 소스 도구
도커를 사용하면 애플리케이션과 해당 종속성을 빠르게 패키징하고 실행이 가능하여, 개발 환경의 일관성을 유지하고 배포 프로세스를 간소화할 수 있다.
도커(Docker)의 주요구성
도커 엔진(Docker Engine)
- 도커 컨테이너를 생성하고 관리하는 핵심 컴포넌트로써, 컨테이너화된 애플리케이션을 실행하고 관리하는 데 사용
도커 이미지(Docker Image)
- 컨테이너를 실행하는 데 필요한 파일 시스템과 실행 환경을 포함하는 템플릿. 이미지는 응용 프로그램 코드, 라이브러리, 종속성 및 기타 설정을 포함한다.
도커 컨테이너(Docker Container)
- 도커 이미지의 인스턴스. 컨테이너는 격리된 환경에서 실행되며, 호스트 시스템의 리소스를 공유하지만 서로 영향을 주지 않는다.
도커 레지스트리(Docker Registry)
- 도커 이미지를 저장하고 공유하는 데 사용되는 저장소로써, 공개적으로 사용 가능한 Docker Hub 외에도, 조직이나 개발팀 내에서 프라이빗한 도커 레지스트리를 구축할 수도 있다.
주요 메모 사항 소개
정적 페이지
- 화면의 내용/데이터 등 변동이 없는 페이지
동적 페이지
- 데이터 처리/연산을 통한 화면의 내용, 데이터가 변하는 페이지
데이터베이스
- 데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체
Node.js란
- 자바스크립트를 스트립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼
공부하면서 어려웠던 내용
Node.js의 기본적인 웹 실행 및 종료
처음보는 단계에서 모듈화까지 해보고 url을 활용해서 router도 분리해보고나니 여기서 저기 들어가고 머리가 이만저만 복잡해져서 상당히 이해하는데 어려움을 느끼곤 한다..
'클라우딩 어플리케이션 엔지니어링 TIL' 카테고리의 다른 글
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day7 (0) | 2024.04.25 |
---|---|
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day6 (0) | 2024.04.24 |
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day3 (0) | 2024.04.18 |
[클라우딩 어플리케이션 엔지니어링 TIL] TIL(Today I Learned) - Day2 (0) | 2024.04.17 |