서버구축
서버란?
- 네트워크에서 다른 컴퓨터나 소프트웨어 같은 클라이언트에게 서비스를 제공하는 컴퓨터
클라이언트 / 서버 시스템
참고 블로그
- 서버는 단독으로 움직이지 않으며 불특정 다수의 컴퓨터에 일방적으로 서비스를 제공하는 것도 아니다. 서버는 클라이언트로부터 요청(Request)를 받아야 비로소 처리를 시작하여 서비스를 제공한다. 서버가 클라이언트에게 서비스를 제공할 때 다음과 같은 처리가 일어난다.
- 클라이언트가 서버에게 어떤 서비스를 요청
- 서버는 요청에 응답해 처리를 수행
- 서버는 처리 결과를 클라이언트에게 반환
- 클라이언트는 처리 결과를 받음
이처럼 서버와 클라이언트로 구성된 시스템을 '클라이언트/서버 시스템' 이라고 한다.
백엔드(Backend)와 서버
- 클라이언트(애플리케이션, 브라우저 등)의 요청을 컴퓨터가 수행할 수 있도록 하는 작업
- 서버는 클라이언트의 요청을 늘 수행할 수 있어야 하므로 365일 24시간 다운되지 않고 전원이 켜져있어야 함
- 서버가 다운됐을 때 : 장애, 에러 등의 특수한 상황으로 인해 서버가 클라이언트의 요청을 처리할 수 없는 상황
- 주로 리눅스(Linux)나 서버용 윈도우 운영체제(OS)를 사용
- CLI(Command Line Interface) 환경에서 운영하는 것이 대부분
- 클라이언트의 요청에 대해 안전하게 응답하기만 하면 되기 때문에 GUI 환경이 필요없을 뿐더러 컴퓨터는 GUI를 운영하는데에도 리소스가 소모됨
HTTP 프로토콜
프로토콜(Protocol)
- 사람과 사람이 대화할 때 서로 이해할 수 있는 공용 언어를 사용하는 것 처럼 컴퓨터와 컴퓨터도 서로 이해할 수 있는 언어를 사용해야한다.
- 사전적 정의는 정보를 주고받는 양식과 규칙의 체계 즉, 컴퓨터 네트워크에서 컴퓨터가 서로 정보를 주고받을 수 있도록 약속한 규칙
- 프로토콜 예시 :
HTTP
,HTTPS
,FTP
,SSH
,SMTP
등
HTTP 프로토콜
- Hypertext Transfer Protocol
- 인터넷 상에서 데이터를 주고 받기 위한 프로토콜(약속)
- 클라이언트는 서버에게 자원을 요청(
request
)하고, 서버는 클라이언트에게 요청을 처리해서 응답(response
)
서버 구축 방법
- 본인의 컴퓨터를 직접 서버로 구축하는 방법
- 일정 요금을 내고 외부 서버를 임대해 사용하는 방법(ex. 서버 호스팅, 웹 호스팅)
2.1 서버 호스팅 : 서버 한 대를 통째로 임대하는 방법
2.2 웹 호스팅 : 서버 한 대의 일정 저장공간만을 임대하여 다른 사용자들과 해당 서버를 공유하는 방법
서버 호스팅 vs 웹 호스팅
- 서버 호스팅
- 자체적인 관리 필요
- 컴퓨터의 작동 환경을 마음껏 유동적으로 설정 가능
- 웹 호스팅에 비해 가격이 비쌈
- 웹 호스팅
- 서버 호스팅에 비해 가격이 저렴
- 서버 자체를 웹 호스팅 사에서 운영, 쉽게 이용이 가능함
- 트래픽, 용량 등 사용상의 제약이 있을 수 있음
클라우드(Cloud)
- 언제, 어디서든 인터넷을 통해 접속 가능한 환경
Microsoft Office 365
, Dropbox
, Google Apps
등
클라우드 컴퓨팅(Cloud Computing)
-
서버, 네트워크 등의 인프라 전체를 임대해주는 서비스
-
클라우드에 구축된 인프라를 활용하는 서비스
-
가상화 기술을 사용해 마음대로 서버를 구축하여 운영할 수 있도록 함
-
AWS
,Microsoft Azure
, GCP
,NCP
등
가상화
- 클라우드에서 가장 중요한 기술
- 실체가 없는 것을 의미하지 않음
- 컴퓨터가 어떤 작업을 하기 위해 필요한 물리적인 장치를 소프트웨어로 대체(ex.
메모리
, 하드디스크
, 운영체제(OS)
등)
클라우드 서버
-
실제 물리적인 컴퓨터 한 대로 서버를 운영하는 것이 아닌 VM(Virtual Machine, 가상머신)으로 서버를 운영하는 방식
-
프로그램으로 컴퓨터(서버)를 하나 생성해 이용하는 방법
-
내가 서버를 관리할 수 있는 root
권한을 가짐
클라우드 서버의 장점
-
짧은 시간에 서버를 하나 만들 수 있다.
-
물리적인 컴퓨터의 한계를 넘어 무한대의 저장공간을 이용할 수 있다.
-
이론상 아무리 접속량이 많아도 다운되지 않는 서버를 만들 수 있다.
클라우드 유형
퍼블릭 클라우드
- 클라우드 서버 or 호스팅 공급자가 소유하고 관리
- 사용한 만큼 서비스 요금을 지불
프라이빗 클라우드
- 기업 내부에서 센터를 만듦
- 조직이 서비스를 운영하며, 조직 외부 사용자 접근 불가능
하이브리드 클라우드
- 퍼블릭/프라이빗 클라우드를 결합해 애플리케이션이 가장 적절한 위치에서 실행되도록 함
서버 설정
웹 서버(Web Server)
- 웹 서버는 클라이언트의 HTTP 요청을 받아 다양한 처리를 함
- 정적 파일을 전달하는 서버를 웹 서버라고 함
- 정적 파일(
static file
)이란?
- 이미지,
css
, javascript
파일과 같이 변경되지 않는 파일
- 클라이언트가 요청할 때 변하는 내용없이 응답하는 파일
| | |
---|
Apache (아파치) | Nginx (엔진엑스) | IIS (윈도우 서버) |
IP 주소와 도메인
IP(Internet Protocol)
- 인터넷 상에서 데이터를 주고받기 위한 통신 규약(약속)
- 스마트폰, 컴퓨터마다 운영체제, 프로그램마다 구현된 언어가 다르기에 네트워크에서 통신할 수 있도록 프로토콜(공통된 통신 규약)이 필요
IP 주소
- IP 통신에 필요한 고유 주소(Adress)
- 데이터를 주고 받기 위해 사용되는 주소(Address)
- CMD 창에서
ipconfig
명령어를 쳐서 내 IP확인 가능
IPv4
- 32비트, 8비트씩 끊어 0 ~ 255 사이의 10진수 숫자로 나타냄
- 각 숫자는 점(.) 기호로 구분
IPv6
- IPv4의 고갈로 채택된 방안
- 128비트, 4자리의 16진수 숫자 8개로 표기
- 각 숫자를 콜론(
:
) 기호로 구분
비트(bit)
- 컴퓨터는 0과 1로만 동작
- 컴퓨터가 이해하는 정보는 모두 0과 1로만 변환되어 메모리에 저장
- 2진수(binary)
- 비트(bit)
- 바이트(byte)
공인 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 갱신주기가 되었을 때 기기를 껐다 켰을 때 남아있는 IP를 골라 기기에 IP를 할당해주는 것
고정IP
- 변하지 않고 고정적으로 부여된 IP
- 사용자가 직접 IP 주소를 입력해 주소를 설정하는 방식
- IP를 한 번 부여 받으면 반납 전까지 해당 IP를 할당
도메인(Domain)
- 웹 브라우저를 통해 특정 사이트를 진입할 때, IP주소를 대신해 사용하는 주소
- 숫자로 이루어진 IP 주소를 기억하기 어려워 IP 주소에 이름을 부여함
- 네이버는 도메인 이름으로 접속할 수 있고, IP주소로 접속할 수 있음
- Domain : www.naver.com
- IP : 223.130.195.200
- 카페 24, 호스팅KR 등등
URL과 도메인(Domain)
- URL(Uniform Resource Locator), 웹 주소라고도 함
- 웹에서 리소스(HTML 페이지, CSS, 이미지 등)가 어디 있는지 알려주기 위한 주소
DNS(Domain Name System)
- 숫자로 이루어진 IP주소를 외우기는 어렵기에 사람이 외우기 편한 언어로 주소를 사용
- IP 주소와 도메인 주소가 같다고 지정해서, 사용자들이 도메인 주소를 검색했을 때 해당되는 IP주소로 바꿔서 연결 되도록 함
- 브라우저에서 URL 입력 ->
-> DNS가 도메인명에 연결된 IP 주소를 확인하여 브라우저에게 전달
-> 브라우저는 해당 IP주소로 서버에 접속(요청)
-> 서버는 클라이언트에게 응답
AWS(Amazon Web Service)
참고블로그
- 아마존 닷컴에서 개발한 클라우드 컴퓨텅 플랫폼
- AWS는 아마존에서 제공하는 클라우드 서비스로, 네트워킹 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비를 제공하고있다.
- 비즈니스와 개발자가 웹 서비스를 사용하여 확장 가능하고 정교한 애플리케이션을 구축하도록 지원하여준다.
- 현재 소규모 법인(회사) 및 개인 을 포함한 다양한 사용자들이 사용하고 있으며, 클라우드 컴퓨팅의 장점을 이용하기 위해 많은 거대 기업에서도 활용하고 있다.
AWS의 장점
저렴한 비용
- AWS는 사전 확약금이나 장기 약정 없이 저렴한 종량 과금제 방식으로 운영된다.
- 확장형 글로벌 인프라를 구축 및 관리하고, 더 저렴한 요금의 형태로 사용자에게 비용 절감 혜택을 고스란히 돌려준다.
- 자본비용을 가변비용으로 대체하여 시간대별로도 자원을 끌수있음.
속도 및 민첩성 개선
민첩성, 즉각적 융통성
- 몇 주 또는 몇 개월 동안 물리적인 서버를 구축하길 기다리는 대신 즉시 새로운 앱을 배포하고, 수요를 기준으로 축소할 수도 있다. 필요한 가상 서버가 한 대든 아니면 수천 대든, 가상 서버가 필요한 시간이 몇 시간이든 사용한 양만큼 비용이 청구된다. 즉 한 줄로 요약하면 설치가 빠르고 관리가 편하다는 것이다.
EC2(Elastic Compute Cloud)
- 독립된 컴퓨터를 임대해주는 클라우드 서비스
- 특징
- 컴퓨팅 요구사항의 변화에 따라 컴퓨팅 자원을 조절할 수 있다.
- 클릭 몇 번만으로 컴퓨터 한 대를 구성할 수 있다.
- 사용한만큼 지불할 수 있다.
EC2 유형
출처
RDS(Relational Database Service)
출처
- AWS 분산 관계형 데이터베이스
- RDS는 어플리케이션 내에서 관계형 데이터베이스를 간편하게 설정, 운영, 확장이 가능하도록 지원
- 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 소모적인 관리 작업을 자동화 가능
RDS 종류
- Amazon Aurora
- MySQL 및 PostgreSQL 호환 관계형 데이터베이스
- 상용 데이터베이스의 보안 , 가용성 및 안정성을 1/10 비용으로 제공
- PostgreSQL
- 오픈소스 관계형 데이터베이스로 기능이 제일 많고 , 성능이 제일 좋음
RDS 장점
1. 관리 용이성
- Amazon RDS를 사용하면 프로젝트 개념 정립부터 배포까지 모든 작업을 쉽게 처리할 수 있다.
- AWS Management Console, AWS RDS 명령줄 인터페이스 또는 간단한 API 호출을 통해 몇 분이면 프로덕션용 관계형 데이터베이스의 성능을 활용할 수 있다.
- 인프라를 프로비저닝하고 데이터베이스 소프트웨어를 설치 및 유지 관리할 필요가 없다.
2. 확장 가능
- 대부분의 경우 가동을 중단하지 않고 마우스 클릭 몇 번 또는API 호출만으로도 데이터베이스의 컴퓨팅 및 스토리지 리소스를 확장할 수 있다.
- 많은Amazon RDS 엔진 유형에서 하나 이상의 읽기 전용 복제본을 시작하여 기본 데이터베이스 인스턴스에서 읽기 트래픽을 오프로드하도록 지원한다.
3. 가용성 및 내구성
- Amazon RDS는 다른Amazon Web Services에서 사용하는 것과 동일한 안정성이 뛰어난 인프라에서 실행된다.
- 다중AZ DB 인스턴스를 프로비저닝하는 경우Amazon RDS에서 다른 가용 영역(AZ)에 있는 예비 인스턴스에 데이터를 동기식으로 복제한다.
- Amazon RDS에는 자동화 백업, 데이터베이스 스냅샷, 자동 호스팅 대체를 비롯해 중요한 프로덕션 데이터베이스의 안정성을 높여주는 여러 가지 기능이 있다.
4. DB 유연성
- Amazon RDS에서는 다양한 애플리케이션 성능 요구 사항에 맞게 데이터베이스 및 스토리지를 선택할 수 있다.
5. 보안
- Amazon RDS를 사용하면 데이터베이스에 대한 네트워크 액세스를 손쉽게 제어할 수 있다.
- Amazon Virtual Private Cloud(VPC)에서 데이터베이스 인스턴스를 실행할 수 있으므로 데이터베이스 인스턴스를 격리하고 업계 표준 암호화 IPsec VPN을 통해 기존 IT 인프라에 연결할 수 있다.
- 많은 Amazon RDS 엔진 유형에서 저장 중 암호화 및 전송 중 암호화를 지원한다.
6. 저렴한 비용
- 매우 저렴한 요금으로 실제로 소비한 리소스에 대해서만 비용을 지불한다. 또한, 선수금이나 장기 약정이 없는 온디맨드 요금 옵션이나, 훨씬 저렴한 시간당 요금이 적용되는 예약 요금 옵션을 활용할 수도 있다.
AWS에서 DB 사용법
EC2에 직접 설치
- 서버에 접속해 mysql 설치
- 사용자가 데이터베이스의 업데이트와 관리, 백업등을 모두 관리
RDS사용
- AWS에서 모든 것을 관리
- 데이터베이스 부분에 대한 모든 것은 신경쓰지 않고 개발에만 집중
- 부가적인 요금이 발생하며 요금 예측이 어려움
S3(Simple Storage Service)
- 내구성과 확장성이 뛰어난 스토리지 서비스
- 안전하고 가변적인 Object 무제한 저장공간을 제공
- 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있다.
S3용어
Bucket
: S3에서 생성되는 최상위 디렉토리와 객체를 저장하는 컨테이너
Object
: S3에서 저장되는 데이터로 파일과 메타 데이터로 이루어져 있다.
Key
: 객체를 찾기 위해 사용하는 고유 식별자로 "디렉토리 + 파일명"으로 명명
Region
S3특징
- 무한대의 객체를 저장할 수 있어, 스토리지의 확장 / 축소에 신경쓸 필요가 없다.
- 버킷마다 인증 시스템을 개별로 설정할 수 있어 보안에 좋다.
- 버전 관리 기능을 사용하면 사용자가 실수할 경우에도 복원이 가능하다.
- 사용자가 실제 사용한 만큼 요금을 책정한다.
즐겁게 읽었습니다. 유용한 정보 감사합니다.