프로그래머스 데브코스

[클라우딩 어플리케이션 엔지니어링 TIL] 9. 백엔드 기초

모든 것을 처음 시작하는 초짜 개발자 2024. 4. 22. 20:57

1.학습 주제

  • 백엔드란?
  • 포트번호와 HTTP 상태코드
  • 데이터베이스
  • 도커와 SQL

2.주요 메모 사항 소개

백엔드란?

    • 백엔드: 웹 서비스에서 서버측에서 프론트엔드로부터 전달받은 데이터와 요청을 내부 데이터와 연산을 활용하여 처리하고 프론트엔드에 결과를 전송
    • 구조

백엔드 구조

  • 웹서버: 정적 페이지에 대응. 동적 페이지에 대한 처리는 직접하지 않고 웹 어플리케이션 서버에게 전달.
  • 웹 어플리케이션 서버: 동적 페이지 처리. 필요한 연산을 위해 데이터베이스에 연결되어 있으며 데이터 조회/수정/삭제에 대한 처리 요청
  • Node JS: 자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼. 이를 통해 백엔드를 구현 가능

서버 작동 간소화

//index.js
let server = require('./server');//server.js을 모듈로 받아온다.
let router = require('./router');//router.js을 모듈로 받아온다.
let requestHandler = require('./requestHandler');//requestHandler.js을 모듈로 받아온다.

server.start(router.route, requestHandler.handle);
//server.start 함수에 router.route, requestHandler.handle을 인수로 넣는다.
//server.js
let http = require('http'); //node js에서 정의하는 내장 모듈 http을 가져온다.
let url = require('url');//node js에서 정의하는 내장 모듈 url을 가져온다.

function start(route, handle){
    function onRequest(request, response){
        let pathname = url.parse(request.url).pathname;
        //google.com/search을 넣을 때 /search를 반환
        route(pathname, handle, response);//라우터에 pathname과 handle을 넣는다.
    }
    
    http.createServer(onRequest).listen(8888);//http://localhost:8888/로 서버를 생성한다.
}

exports.start = start; //index.js에서 사용할 수 있도록 export 해준다.
//router.js
function route (pathname, handle ,response){
    if(typeof handle[pathname] == 'function'){//pathname이 handle에 있으면 handle 함수를 작동한다.
        handle[pathname](response);
    }
    else{ //pathname이 handle에 없으면 404를 보내고 화면에 'NOT FOUND'을 띄운다.
        response.writeHead(404, {'Content-Type': 'text/html'});
        response.write('NOT FOUND');
        response.end();
    }  
}

exports.route = route;//route 밖에서 route함수를 사용할 수 있도록 export 해준다.
//requestHandle.js
function main(response) {//작동하면 Main Page라고 표시되는 화면을 띄운다.
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.write('Main Page');
    response.end();
}

function test(response) {//작동하면 Test Page라고 표시되는 화면을 띄운다.
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.write('Test Page');
    response.end();
}

let handle = {};
handle['/'] = main; // 아무것도 없으면 main함수를 실행시킨다.
handle['/test'] = test;// /test가 있으면 test함수를 실행시킨다.

exports.handle = handle;//외부에서 handle에 접근할 수 있도록 export한다.

 

포트번호와 HTTP 상태 코드

  • 포트번호: 운영 통신 체제의 종단점. 통신을 하고 싶으면 포트 번호가 같아야 한다. 대표적으로 HTTP(80), HTTPS(443)이 있다.
  • HTTP 상태 코드:특정 HTTP 요청이 성공적으로 완료되었는지 알려줌. 100번대, 200번대, 300번대, 400번대, 500번대로 나누어져 있으며 대표적인 번호는 200(정상),404(클라이언트가 원하는 것을 찾지 못함), 500(서버 이상)이 있다.

404 에러

데이터베이스

  • 데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체. 데이터를 구조화하여 관리함으로써 중복을 막고, 효율적이고 빠른 연산을 가능하게 함.
  • DBMS(DataBase Management System): 데이터베이스를 운영하고 관리하기 위한 프로그램. 대표적으로 ORACLE, MYSQL이 존재.

도커와 SQL

  • 도커: 커널 컨테이너 기술을 이용하여 만든 컨테이너 기술 중 하나. 애플리케이션을 환경에 구애받지 않고 실행할 수 있는 기술.
  • SQL: 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어.
    • 기본 명령어 
SHOW DATABASES; //데이터 베이스를 확인

CREATE DATABASE TEST; // TEST 데이터베이스 생성

USE TEST; //TEST 데이터베이스에 입장

CREATE TABLE test_table
(
	id INT,
    name VARCHAR(30);
); // 숫자를 요소로 받는 id, 길이가 30인 알파벳까지 요소로 받는 name을 컬럼으로
   // 가지는 이름이 test_table인 테이블표 생성
   
SELECT 컬럼 FROM 테이블명 (WHERE 조건); //테이블에서 데이터를 조회, 조건을 넣으면 조건에 맞는 데이터만 조회 가능
									  
                                      
INSERT 컬럼명1, 컬럼명2,... INTO 테이블명 //테이블에 데이터를 입력
VALUES(컬럼1데이터, 컬럼2데이터,....);

UPDATE 테이블명 SET 컬럼명 = 변경값 (WHERE 조건);//테이블에서 데이터를 수정,조건 비입력 시 값이 전체 데이터 변경
                                             
DELETE FROM 테이블명 (WHERE 조건); //테이블에서 데이터 삭제,조건 비입력 시 전체 데이터 삭제

3. 공부하며 느낀 점

백엔드의 기초에 대해서 배웠다. django에 대해서 배울 때는 거의 대부분이 django에서 기본적으로 제공했던지라 하나하나 다 만드는 과정이 새롭게 느껴졌다.

4.출처