Server
- 클라이언트에게 네트워크를 통해 서비스를 제공하는 컴퓨터

Backend & Server
- 클라이언트 (애플리케이션, 브라우저 등) 의 요청을 컴퓨터가 수행할 수 있도록 하는 작업
- 서버는 클라이언트의 요청을 늘 수행할 수 있어야 하므로 365일 24시간 다운되지 않고 전원이 켜져 있어야 함
- 서버 다운 = 장애, 에러 등의 특수한 상황으로 인해 서버가 클라이언트의 요청을 처리할 수 없는 상황
- 리눅스 (Linux) 나 서버용 윈도우 운영체제를 사용
- CLI (Command Line Interface) 환경에서 운영하는 것이 대부분
- 클라이언트의 요청에 대해 안전하게 응답만 하면 되기 때문에 GUI 환경이 필요 없음 + 컴퓨터는 GUI를 운영하는 데에도 자원이 소모됨
HTTP 프로토콜
- Hypertext Transfer Protocol
- 인터넷 상에서 데이터를 주고받기 위한 프로토콜
- 클라이언트 → 서버 : 자원 요청 (request)
- 서버 → 클라이언트 : 요청을 처리해서 응답 (response)
서버 구축 방법
- 본인의 컴퓨터를 직접 서버로 구축
- 일정 요금을 내고 외부 서버리를 임대해서 사용
2-1. 서버 호스팅
- 서버 한 대 (물리적으로 존재하는 컴퓨터 한 대) 를 통째로 임대
- 컴퓨터의 작동 환경을 마음껏 유동적으로 설정 가능
- 자체적인 관리 필요
- 웹 호스팅에 비해 가격이 비쌈
2-2. 웹 호스팅
- 서버 한 대의 일정 저장 공간만을 임대하여 다른 사용자들과 해당 서버를 공유
- 서버 호스팅에 비해 가격이 저렴
- 서버 자체를 웹 호스팅 사에서 운영하여 쉽게 이용 가능
- 트래픽, 용량 등 사용상의 제약이 있을 수 있음
Cloud
- 언제, 어디서든 인터넷을 통해 접속 가능한 환경
- MS Office 365, Dropbox, Google Apps 등
Cloud Computing
- 서버, 네트워크 등의 인프라 전체를 임대
- 클라우드에 구축된 인프라를 활용하는 서비스
- 가상화 기술을 사용해 마음대로 서버를 구축하여 운영할 수 있도록 함
- AWS, MS Azure, GCP, NCP 등
가상화
- 클라우드에서 가장 중요한 기술
- 실체가 없다는 의미 ❌
- 컴퓨터가 어떤 작업을 하기 위해 필요한 물리적인 장치를 소프트웨어로 대체
Cloud Server
- 실제 물리적인 컴퓨터 한 대로 서버 운영 ❌
- VM (Virtual Machine) 으로 서버 운영 ⭕
- 프로그램으로 컴퓨터 (서버) 를 하나 생성해 이용하는 방법
- 내가 서버를 관리할 수 있는 root 권한을 가짐
- 장점
- 짧은 시간 안에 서버를 만들 수 있음
- 물리적인 컴퓨터의 한계를 넘어 무한대의 저장 공간을 이용할 수 있음
- 이론상 아무리 접속량이 많아도 다운되지 않는 서버를 만들 수 있음
클라우드 유형
퍼블릭 클라우드
- 클라우드 서버 or 호스팅 공급자가 소유하고 관리
- 사용한 만큼만 서비스 요금을 지불
- AWS, NCP 등
프라이빗 클라우드
- 기업 내부에서 센터를 만듦
- 조직이 서비스를 운영하며, 조직 외부 사용자 접근 불가능
하이브리드 클라우드
- 퍼블릭 + 프라이빗 클라우드를 결합해 어플리케이션이 가장 적절한 위치에서 실행되도록 함
Sever 설정
Web Server
- 웹 서버는 클라이언트의 HTTP 요청을 받아 다양한 처리를 함
- 정적 파일을 전달하는 서버를 웹 서버라고 함
- 정적 파일 : 이미지, css, javascript 파일과 같이 클라이언트가 요청할 때, 내용의 변화 없이 응답하는 파일
- Apache, Nginx, IIS 등
IP 주소와 도메인
IP (Internet Protocol)
- 인터넷상에서 데이터를 주고받기 위한 통신 규약
- 스마트폰, 컴퓨터마다 OS가 다르고, 프로그램마다 구현된 언어가 다름
→ 네트워크에서 통신할 수 있도록 프로토콜 필요
- IP 주소
- IP 통신에 필요한 고유 주소
- 데이터를 주고받기 위해 사용되는 주소
- IPv4
- 총 32비트
- 8비트씩 끊어 0~255 사이의 10진수 숫자로 나타냄
- 각 숫자는 . 기호로 구분
- IPv6
- IPv4의 고갈로 채택된 방안
- 총 128비트
- 4자리의 16진수 숫자 8개로 표기
- 각 숫자는 : 기호로 구분
공인 IP vs 사설 IP
공인 IP (Public IP)
- 외부에 공개되어 있는 IP
- 서버 구축을 사용하고 우리가 서버에서 사용하는 것도 공인 IP
- 공개되어 있기 때문에 누구나 검색, 접근 가능
- 전세계에서 어떤 주소도 중복되지 않음
사설 IP (Private IP)
- 로컬 IP, 가상 IP라고 불리며, 특정 네트워크 안에서만 사용되는 외부에서 접근할 수 없는 IP
- 큰 단위로 공인 IP를 할당하고, 그 안에 있는 PC나 가정 / 회사 내에서만 통신하는 IP 할당
- IPv4 주소 부족 문제를 해결하기 위해 등장했던 방안 중 하나
- 사내 LAN이나 가정 LAN에서 사용되는 IP 주소
유동 IP vs 고정 IP
유동 IP
- 변하는 IP - IP 주소를 임시로 발급
- 기기에 고정적으로 IP를 부여 ❌
- IP 갱신 주기가 되었을 때 or 기기를 껐다 켰을 때, 남아있는 IP를 골라 기기에 IP를 할당해주는 것
고정 IP
- 변하지 않고 고정적으로 부여된 IP
- 사용자가 직접 IP 주소를 입력해 주소를 설정하는 방식
- IP를 한번 부여받으면, 반납 전까지 해당 IP를 할당
Domain
- 웹 브라우저를 통해 특정 사이트를 진입할 때, IP 주소를 대신해 사용하는 주소
- 숫자로 이루어진 IP 주소를 기억하기 어려워 IP 주소에 이름을 부여함
- 네이버는 도메인 이름으로도 접속할 수 있고, IP 주소로도 접속할 수 있음
- Domain : www.naver.com
- IP : 223.130.195.200
URL
- URL (Uniform Resource Locator)
- 웹에서 리소스 (HTML 페이지, CSS, 이미지 등) 가 어디 있는지 알려주기 위한 주소
DNS (Domain Name System)
- 숫자로 이루어진 IP 주소를 외우기는 어렵기 때문에 사람이 외우기 편한 언어로 주소를 사용
- IP 주소와 도메인 주소를 같다고 지정
→ 사용자들이 도메인 주소를 검색했을 때, 해당되는 IP 주소로 바꿔서 연결되도록 함
- 브라우저에서 URL 입력 → DNS가 도메인명에 연결된 IP 주소를 확인하여 브라우저에 전달 → 브라우저는 해당 IP 주소로 서버에 접속 (요청) → 서버는 클라이언트에게 응답