오늘은 드디어 백엔드에 대해서 배웠습니다...! 사실 프론트엔드를 하면서 조금 포스팅이 밀렸는데 이번주 내로 다 정리해서 올리는 것을 목표로...
그 전에 까먹지 않도록 이번주에 배운 내용부터 포스팅을 하도록 하겠습니다!
1.서버와 백엔드
우선 서버... server 많이 사용하는 말인데 어떤 의미일까요?
서버란 클라이언트에게 네트워크를 통해 서비스를 제공하는 "컴퓨터"를 의미합니다!
그래서 클라이언트는 프론트엔드, 서버는 백엔드라고 간단하게 생각해 볼 수 있어요!
클라이언트는 사람이 될수도, 컴퓨터가 될수도 있어요.
서버 하나에 여러개의 클라이언트가 연결되어있을 수 있습니다.
클라이언트(프론트엔드)와 서버(백엔드)는 어떤 관계일까요?
한번 회원가입을 하는 상황을 예를들어서 설명해보도록 하겠습니다. 위의 그림은 반드시 항시적으로 기억해보도록 약속~
회원가입을 하는 경우를 예를 들어서 생각해봅시다!
우선 클라이언트가 회원정보를 입력(input)하고 회원정보를 query를 통해 database에 저장
result를 다시 서버에 전달->웹 브라우저에 서버가 응답을 하고 그 응답을 사용자가 확인할 수 있도록 합니다.
따라서, 클라이언트는 쉽게 말해 요청을 하는 컴퓨터, 백엔드(서버)는 응답을 하는 컴퓨터
그렇다면 서버는 어떤 조건을 만족해야 할까요? 서버는 클라이언트의 요청을 늘 수행할 수 있어야 하므로 365일 24시간 다운되지 않고 전원이 켜져있어야 합니다.
백엔드와 서버에서는 주로 리눅스와 서버용 윈도우 운영체제를 사용하기 때문에 GUI환경보다는 CLI환경에서 운영하는 것이 적절하겠죠?
서버용 OS에는 리눅스와 서보용 윈도우 운영체제 이외에도 어떤것들이 있는지 궁금해서 한번 찾아보았는데요,서버 운영체제 비교 Linux, Windows, Ubuntu, RedHat, Debian 등 (velog.io)
한번 살펴보시면 좋을 것 같습니다ㅎㅎ
2. HTTP프로토콜
http프로토콜은 Hypertext Transfer Protocol의 약자인데요, 여기서 프로토콜이 뭘까요? 프로토콜이란 컴퓨터와 컴퓨터가 서로 데이터를 주고받을 수 있도록 약속한 규칙을 의미해요. 프로토콜의 종류에는 http,https, ftp, ssh, smtp가 있다고 합니다. https는 http에서 보안기능이 추가된 것이고, ssh는 원격으로 접속할 때 필요한 규칙으로 네트워크 상에 있는 다른 컴퓨터에 로그인하거나 원격스템에서 명령실행, 파일복사를 가능하게 해주는 서비스를 말합니다.
프로토콜에 대해서 자세히 알아보고싶다면,,,프로토콜(Protocol)이란? - 정의, 기본 요소, 종류, 기능 (tistory.com)
여기를 방문해서 알아보면 좋을 것 같습니다 ㅎㅎ
3.서버 구축 방법
전통적으로 서버를 구축하는 방법은 크게 두가지로 나누어 볼 수 있는데요.
1) 본인의 컴퓨터로 직접 서버를 구축하는 방법
2) 일정 요금을 내고 외부서버를 임대해 사용하는 방법
이렇게 두가지로 볼 수 있습니다.
하지만 1)방법을 이용하면 서버는 24시간 열려있어야하는데 많은 에러사항과 유지관리에 어려움이 있기 때문에 대부분 2)방법을 사용합니다.
2)방법에는 두가지가 있는데 서버호스팅과 웹호스팅으로 나누어 볼 수 있어요. 표로 정리해볼게요!
서버 호스팅(단독주택) | 웹호스팅(아파트) |
서버 한대를 통째로 임대하는 것 | 서버 한 대의 일정공간만을 임대하여 다른 사용자들과 해당 서버를 공유 |
자체적인 관리 필요->개발자 마음대로 관리 가능 | 서버 자체를 웹 호스팅 사에서 운영, 쉽게 이용이 가능함 |
컴퓨터의 작동환경을 마음껏 유동적으로 설정 가능 | 트래픽, 용량 등 사용상의 제약이 있을 수 있음(개발자가 마음대로 할 수 없음) |
웹 호스팅에 비해 가격이 비쌈 | 서버호스팅에 비해 가격이 저렴 |
4. 클라우드로 서버 구축하기
요즘에는 클라우드컴퓨팅을 통해서 서버를 구축하는 것을 많이 사용합니다.
클라우드 익숙하긴 한데 정확히 어떤걸까요? 클라우드란, 언제 어디서든 인터넷을 통해 접속 가능한 환경을 뜻합니다. 우리가 많이 사용하는 구글 드라이브 같은 것들을 예로 들 수 있겠죠?
이런 클라우드서비스를 통해 서버도 구축할 수 있는데 이것을 "클라우드 컴퓨팅"이라 합니다. 클라우드 컴퓨팅은 가상화기술을 사용해 마음대로 서버를 구축하여 운영할 수 있도록 하는 것인데요, 서버, 네트워크 등 인프라 전체를 임대해주는 서비스입니다. 어?? 그런데 가상화?? 가상화란 실체가 없는 것을 가상화라 하는 것이 아니라 물리적인 장치를 소프트웨어로 대체했다는 것입니다. 메모리,하드디스크, 운영체제 등을 클라우드컴퓨팅에서 가상화 했다고 볼 수 있겠죠?
"클라우드서버"란 실제 물리적인 컴퓨터 한 대로 서버를 운영하는 것이 아닌 virtual machine(가상 머신)으로 서버를 운영하는 방식을 뜻합니다. 즉, 프로그램을 컴퓨터(서버)를 하나 생성해 이용하는 방법이죠! 내가 서버를 관리할 수 있는 root권한(모든권한을 가진 계정)을 가지니까 서버호스팅의 장점도 가진거라 볼 수 있겠죠?
클라우드 서버의 장점은 짦은 시간 내에 서버 하나를 만들 수 있고(실제로 네이버클라우드플랫폼(NCP)를 통해서 서버를 구축하는데 20분정도 걸립니다) 물리적인 컴퓨터의 한계를 넘어 무한대의 저장공간을 이용할 수 있습니다(근데 이렇게 하면 이용요금을 많이 내긴 해야겠죠?ㅋㅋ) 그래서 이론상 아무리 접속량이 많아도 다운되지 않는 서버를 만들 수 있게 됩니다.
클라우드 유형에는 '퍼블릭','프라이빗','하이브리드' 세가지 종류가 있는데요, 이름에서부터 감이 오시죠?
퍼블릭 클라우드(사용량 기반 모델)은 클라우드서버 또는 호스팅 공급자가 소유하고 관리하며, 사용한 만큼만 서비스 요금을 지불합니다(그래서 사용량 기반 모델이라 합니다)
프라이빗 클라우드는 기업 내부에서 센터를 만들어서 조직이 서비스를 운영하며, 조직 외부 사용자가 접근이 불가능합니다.
하이브리드 클라우드는 위의 둘을 결합해 애플리케이션이 가장 적절한 위치에서 실행되도록 합니다.
저는 위에서 언급했듯이 NCP를 통해서 서버를 구축해 보았는데요,
이렇게 설저애 보았습니다.
OS 이미지 타입을 보시면 centOS와 ubuntu 두가지로 나누어지는 것을 볼 수 있는데요, 우분투 CentOS 비교 / Compare Ubuntu CentOS (tistory.com)
이러한 차이가 있다고 합니다ㅎ
그 다음으로 서버이름도 정해보았는데요, 사진에 나와있지는 않지만 서버 이름은 🚫한글 금지, 공백 문자 금지🚫입니다!!
그 다음 PUTTY를 통해 제가 사용하는 윈도우 운영체제에서 서버에 접속해 보았습니다.
아! 비밀번호 너무 복잡하니까 바꿀 수 있는데요! 이때, putty 터미널을 이용해 서버에 접속하여 passwd를 입력하고 변경할 비밀번호를 입력하면 됩니다. 근데 터미널에서는 ctrl+v가 먹지 않으니 복붙하고싶다면 우클릭을 하면 됩니다!
다음으로 FileZilla라는 소프트웨어도 설치해보았는데요... 설치하다가 중간에 자꾸 실패해서 혹시나 저와 같이 중간에 설치하다가 자꾸 중단되는 분들은파일질라(FileZilla) 다운로드 및 설치 / 파일질라 설치 오류 (tistory.com)
여기를 참고해 보시면 좋을 듯 합니다..
5.서버 설정
자 이제 서버를 구축했으니 설정해봐야겠죠?
그 전에 webserver 와 web application sever(was)의 차이를 먼저 알아보도록 합시다!
웹 서버는 정적파일을 전달하는 서버입니다. 여기서 정적파일은 변화가 없는 파일로 이미지, css, javascript파일과 같이 변경되지 않는 파일 즉, 클라이언트가 요청할 때 변하는 내용이 없이 응답하는 파일을 말합니다.
그럼 동적파일은 클라이언트가 요청할 때 변하는 내용이 있는 파일을 말하는 거겠죠? 예를 들어 로그인을 하면 **님 안녕하세요! 라는 화면이 뜨게할 때 클라이언트마다 조금의 내용을 바꾸기 위해 전체 페이지를 다시 복붙할 수 는 없으니 그 부분만 템플릿화가 되면 되는데 이런걸 하는게 was라고 보면 됩니다!
즉, 정적파일을 전달하는게 웹서버, 동적파일을 전달하는게 was라고 보면 되는거죠!
오늘은 웹서버에 대해서 다뤄볼 텐데요, 웹서버에는 아파치, 엔진엑스, 윈도우서버 등이 있습니다. 이 중에서 저희는 아파치를 설치해 보았습니다! 아파치는 http표준을 준수하도록 구축된 오픈소스 형식의 웹서로 오래 사용되어 온 만큰 거의 모든 OS에서 실행이 가능하고, 다양한 모듈(기능)을 갖고 있다고 해요! 서버는 CLI환경이기때문에 당연히 명령어로 설치해야 겠죠?
# apt-get update
# apt-get install apache2
아파치를 설치하고~ NCP에서 구축한 서버의 공인 IP를 할당받은 걸 통해서 웹브라우저에서 이제 ip를 통해서 우리가 html파일에 접속할 수 있게 됩니다~~
6.IP주소와 도메인
그런데 매번 IP주소를 외우고 있을 수도 없고, 숫자를 외우는 것 보다는 의미있는 이름을 정해서 외우는게 편하겠죠? 그래서 사용하는것이 도메인네임입니다! 우리가 네이버를 접속할 때에도 도메인 네임을 외워서 접속하지 IP주소를 외우고 있지는 않죠 ㅎ
그럼 IP의 의미부터 알아볼까요?
IP(Internet Protocol): 프로토콜이 규약이니까 인터넷 상에서 데이터를 주고 받기 위한 통신규약이라고 볼 수 있습니다.
스마트폰, 컴퓨터마다 운영체제, 프로그램마다 구현된 언어가 다르기 때문에 네트워크에서 통신할 수 있도록 프로토콜(공통된 통신규약) 이 필요합니다. 이때, IP통신에 필요한 고유 주소를 IP주소라고 하고, window에서는 cmd에서 "ipconfig"를 입력해서 IP주소를 확인해 볼 수 있습니다!
현재 사용되고 있는 IP주소는 IPv4와 IPv6가 있는데요, 먼저 IPv4의 경우는 32비트를 8비트씩 끊어 0~255사이의 10진수 숫자로 나타낸 것있습니다. 그럼 2^32 약 43억개의 주소체계를 사용할 수 있겠죠? 그렇지만 현재 우리가 사용하는 기기들만 생각해도 한 사람당 스마트폰, 개인 pc, 태블릿 등등 여러기기를 사용하기 때문에 43억개의 주소체계로도 부족해서 나오게 된 것이 IPv6 입니다! 이는 128비트, 4자리 16진수 숫자 8개로 표기합니다. 또 v4와 v6의 차이점은 v4에서는 각 숫자를 (.)으로 구분했다면, v6의 경우에는 (:)으로 구분한다는 것 입니다!
아 그리고 1byte=8bit 이건 알아두어야 합니다!(사실 이번주 CS스터디에서 공부했었던 내용이라 반가웠어요 ㅎㅎ)
IP는 공인IP와 사설IP로 구분할 수 있습니다!
공인 IP
-외부에 공개되어 있는 IP
-서버 구축을 사용하고 우리가 서버에서 사용하는 것도 공인 IP
-공개되어 있기 떄문에 누구나 검색, 접근 가능
-전 세계에서 어떤 주소도 중복되지 않음
사설IP
-로컬IP,가상IP라고 불리며, 특정네트워크 안에서만 사용되는 외부에서 접근 할 수 없는 IP
-큰 단위로 공인 IP를 할당하고 그 안에 있는 PC나 가정/회사 내에서만 통신하는 IP할당
-IP v4주소 부족 문제를 해결하기 위해 등장했던 방안 중 하나
-사내 LAN이나 가정 LAN에서 사용되는 IP주소
또 유동IP와 고정 IP로도 구분해볼 수 있습니다
유동IP
-변하는 IP->IP주소를 임시로 발급
-기기에 고정적으로 IP를 부여하지 않고 IP갱신 주기가 되었을 때 기기를 껐다 켰을 때 남아있는 IP를 골라 기기에 IP를 할당해주는 것
고정IP
-변하지 않고 고정적으로 부여된 IP
-사용자가 직접 IP주소를 입력해 주소를 설정하는 방식
-IP를 한 번 부여받으면 반납 전까지 해당 IP를 할당
7.도메인(Domain)
자 위에서 IP에 대해 충분히 알아봤으니 이제 도메인에 대해서 알아봅시다!
웹 브라우저를 통해 특정 사이트를 진입할 떄, IP주소를 대신해 사용하는 주소를 도메인이라 합니다.
우리가 숫자로 이루어진 IP주소를 기억하기는 어렵죠? 그래서 그 IP주소 대신에 사용하는 것이 도메인 입니다!
네이버의 경우 도메인 이름으로 접속할 수도 있고, IP주소로도 접속할 수 있습니다.
그럼 네이버의 IP주소를 한번 알아볼까요?
C:\Users\김세은>nslookup naver.com =>여기에서 처럼 nlookup (도메인네임)을 입력하면 도메인의 IP주소를 알 수 있습니다.
서버: kns.kornet.net
Address: 168.126.63.1
권한 없는 응답:
이름: naver.com
Addresses: 223.130.195.200 =>네이버의 IP주소들...
223.130.200.107
223.130.195.95
223.130.200.104
네이버의 ip주소는 여러개임
URL과 도메인
URL(unifrom resource locator), 웹주소라고도 합니다
-웹에서 리소스(HTML, 페이지, 이미지 등)이 어디 있는지 알려주기 위한 주소
=>파라미터: 클라이언트가 요청한 데이터를 전달하는 방법
도메인이 URL보다 더 큰개념이다!
8.DNS(Domain Name System)
-숫자로 이루어진 IP주소를 외우기는 어렵기 떄문에 사림이 외우기 펴한 언어로 주소
IP주소와 메인 주소가 같다고 지정해서, 사용자들이 도메인 주소를 검색했을 때 해당되는 IP주소로 바꿔서 연결하도록 함
'[새싹X코딩온]웹 풀스택' 카테고리의 다른 글
[새싹X코딩온]웹 풀스택 6주차(8/23)회고록|데이터베이스, MYSQL, SQL문법 (0) | 2023.08.24 |
---|---|
[새싹X코딩온]웹 풀스택 4주차(8/21)회고록|폼 유효성검사, 파일전송하기 (0) | 2023.08.23 |
[새싹X코딩온]웹 풀스택 2주차(7/24)회고록|JavaScript(1)-html파일에 JS불러오는 방법 및 기본문법(형변환까지) (1) | 2023.08.06 |
[새싹X코딩온]웹 풀스택 2주차(7/24)회고록|CSS(8)-animation (0) | 2023.08.02 |
[새싹X코딩온]웹 풀스택 2주차(7/24)회고록|CSS(7)-display (0) | 2023.08.02 |