책 '비전공자를 위한 이해할 수 있는 IT 지식' 3장을 읽으면서 학습한 내용을 요약, 정리한 포스팅입니다.
네트워크
1. LAN(Local Area Network): 컴퓨터가 연결된 작은 지역 (=근거리 통신망)
2. MAN(Metropolitan Area Network): 여러 LAN이 연결된 조금 더 큰 지역 (=도시권 통신망)
3. WAN(Wide Area Network): 여러 MAN이 연결된 가장 큰 지역 (=광역 통신망)
- 컴퓨터의 네트워크를 통해 컴퓨터들끼리 서로 소통할 수 있다. 즉, 서로 무언가를 요청하고 응답할 수 있다.
- 요청하고 응답할 때 반드시 필요한 것이 있다. 바로 IP주소. 네트워크상 어디에 위치하는지 알 수 있는 일종의 컴퓨터 주소인 셈이다. IP주소는 위치에 따라 컴퓨터에 따라 고유하다. 그래서 내 노트북을 그대로 사용하더라도 집에서 카페로 이동하면 IP주소가 달라질 수 있다.
서버와 클라이언트
우리가 24시간 언제든지 카카오톡으로 사진을 서로 주고 받을 수 있는 이유는 카카오톡을 운영하는 회사의 컴퓨터가 24시간 켜져있기 때문이다. 또한 카카오톡의 컴퓨터로 수많은 사람들의 요청이 몰릴 수 있으므로 카카오톡은 컴퓨터 한 대가 아닌 여러 컴퓨터를 연합군처럼 만들어 놓는다. (클라이언트가 소규모일 경우에는 한 대의 컴퓨터로 서버가 모든 역할을 소화할 수도 있지만, 대규모일 경우에는 여러 대의 컴퓨터에 서버를 두고 각각 역할을 세분화할 것이다.) 만약 카카오톡의 컴퓨터들이 꺼진다면 우리는 카카오톡을 이용할 수 없게 된다. 관점에 따라 아래와 같이 정의해볼 수 있다.
- 카카오톡에 사진을 업로드 또는 다운로드해달라고 요청하는 역할 ⇒ '클라이언트(Client)' 라고 한다.
- 요청에 맞춰 사진을 저장해주거나 보내주는 등 응답하는 역할 ⇒ '서버(Server)' 라고 한다.
무언가를 요청하는 우리의 입장에서 클라이언트는 바로 앞에 있어서 직접 볼 수 있다. 그래서 다른 말로는 '프론트 엔드'라고 한다. 반면 우리의 요청에 대해 응답하고 제공하는 역할을 서버라고 하는데 이는 우리가 볼 수 없는 곳, 즉 고객의 뒤에 있기 때문에 다른 말로 '백 엔드'라고도 한다.
클라이언트와 서버는 물리적인 장비 자체를 지칭하기보다는 ‘역할(Role)’을 기준으로 부르는 개념으로 생각하자.
서버 구축 시 많이 선택하는 OS: 리눅스(Linux)
‘서버를 구축한다’는 말은 컴퓨터에 서버 역할을 할 수 있는 소프트웨어(와 환경)를 설치하고 설정하는 것을 의미한다. 즉, ‘서버를 만든다’는 건 하드웨어를 만든다는 뜻이 아니라, 서버 역할을 수행할 준비를 시킨다는 의미인 것이다. 서버는 보통 수행하는 기능 및 역할에 따라 분리하여 구축한다. 예시로 웹 서버, 애플리케이션 서버, DB 서버, 메일 서버, 파일 서버 등이 있다.
서버를 구축할 때, 즉 서버 컴퓨터에서 서버 프로그램을 돌릴 때 OS를 선택해야하는데, 보통 리눅스 위에서 돌리는 경우가 많다. (서버 프로그램에는 웹 서버, 애플리케이션 서버 등등 세부적인 구분이 있지만, 지금 단계에서는 서버 프로그램이라는 큰 틀로 이해하고 넘어가자.) 리눅스는 운영체제(OS)의 한 종류라고 생각하면 된다. 그렇다면 왜 서버를 구축할 때 리눅스를 선택할까?
1. 무료
리누스 토발스 라는 사람이 리눅스를 만들었고 이를 무료로 배포했다. 아무나 수정해도 괜찮고, 수정한 것을 팔아도 괜찮다고 했다. 24시간 365일 쉬지않고 돌아가야하는 서버를 구축할 때 비용이 들지 않는 다는 것은 엄청난 장점이 된다.
2. 우수한 보안성
대부분의 서버들을 리눅스위에서 돌리는 만큼 전세계의 수많은 기업이나 개인의 정보를 지키기위해 수많은 공격을 방어하며 보안성을 키워왔다. 시스템에 부족한 부분이나 보안 취약성을 여러 사람이 파악할 수 있고 빠른 대처가 가능하여 보안성이 높다고 할 수 있다.
3. 안정성
많이 사용되는 만큼 버그도 많이 발생했을테지만, 수많은 사용자들에 의해서 수정되었다. 그래서 리눅스는 매우 안정적이며 충돌이 잘 발생하지 않는다. 또한 리눅스는 윈도우와 달리 업데이트 또는 패치 이후에 OS를 재부팅할 필요가 없다고 한다. 기업에서 사용하는 웹서버는 24시간 365일 쉬지 않고 돌아가야하는데 OS가 재부팅된다면 웹서버를 다시 가동하고 서버를 안정화시키는데 꽤 많은 시간을 들여야 한다. 따라서 리눅스는 웹서버에 적합한 OS라고 할 수 있다.
[참고] 서버를 구축하는 2가지 방식
방식 | 설명 |
1. 온프레미스(On-Premise) | 직접 물리적 서버 컴퓨터에 구축 (회사, 집, 학교 등) |
2. 클라우드(Cloud-based) | AWS, GCP, Azure 같은 클라우드 서비스 위에 구축 (가상 서버 사용) |
리눅스 기반 다양한 배포판
- 리눅스를 운영체제(OS)의 한 종류라고 생각하면 된다고 했지만, 리눅스는 사실 컴퓨터 운영체제 커널의 일종인 Linux 커널, 또는 Linux 커널을 사용하는 운영체제를 가리킨다. (커널에 대한 이해는 일단 스킵하고 넘어가자.)
- Linux 커널을 사용하는 수많은 배포판들이 있다.
1. 우분투(Ubuntu)는 데비안(Debian) 계열 리눅스 배포판이다.
2. 레드햇 리눅스(Red Hat Linux)는 Red Hat에서 만든 리눅스 배포판이다.
3. 안드로이드(Android)는 Google에서 만든 리눅스 배포판이다. (모바일 운영체제로 개량해서 발전시킴)
Windows 와 macOS
Windows나 macOS가 개발되기 전에는 사람들이 컴퓨터를 사용할 때 명령어를 직접 입력해야만 사용할 수 있었다. 명령어가 어렵고 불편해서 당시 컴퓨터는 명령어를 쓸 수 있는 소수의 사람들만이 사용했다. 하지만 마이크로소프트와 애플이 Windows와 macOS를 만들면서 판도가 바뀌었다. 일반인들도 사용하기 쉽게 바탕화면이라는 개념과 폴더/파일이라는 개념을 만들었다. 즉 두 운영체제에서는 명령어를 입력할 필요없이 알기 쉽게 표현된 그래픽을 통해 컴퓨터를 조작할 수 있게 된 것이다. 이를 GUI(Graphical User Interface) 운영체제라고 일컫는다.
다시 서버로 돌아가서 얘기해보면, 서버를 구축할 때는 이런 GUI가 딱히 필요없다. 서버 프로그램은 24시간 365일 안정적으로 돌아가는게 중요하기 때문에 대다수의 리눅스 배포판들은 GUI 없이 명령어로만 동작시킨다.
개인 서버를 운영하면 힘든 이유
24시간 365일 돌아가야하는 서버의 특성상, 개인이 집에서 서버를 직접 운영한다면 여러가지 리스크가 존재한다. 많은 전력 소모로 인해 비용이 많이 발생할 수 있고, 유지보수도 어렵고 보안에도 취약하다. 그래서 이 모든 일들을 대신해주는 서비스가 나타나기 시작했다.
호스팅(Hosting)
: 서버 컴퓨터의 전체 또는 일정 공간을 이용할 수 있도록 임대해주는 서비스를 말한다. 사용자가 직접 서버를 구입하고 운영할 필요없이 호스팅 업체가 미리 준비해놓은 서버를 빌려 사용하는 형식이다.
[참고] 대표적인 호스팅 업체
- 국내: 가비아, 카페24
- 해외: AWS
[참고] 클라우드에 서버를 구축하는 것과 호스팅 서비스를 이용하는 것은 뭐가 다른 거지?
클라우드 서버 구축
: “내가 직접 서버를 통째로 빌려서 설치부터 운영까지 다 한다.”
호스팅 서비스 이용
: “누가 미리 다 만들어 놓은 서버 공간을 빌려서 웹사이트만 올린다.”
항목 | 클라우드 서버 | 호스팅 서비스 |
정의 | 사용자가 직접 구성하고 관리하는 가상 서버 (VM) | 이미 구성된 서버 공간을 제공하는 서비스 |
유연성 | 매우 높음 (OS 선택, 환경 구성 자유로움) | 제한적 (제공된 설정 범위 내에서만 가능) |
접근 권한 | 루트(root) 포함 전체 시스템 제어 가능 | 제한적. 보통 파일 업로드나 DB 접속 정도 |
예시 | AWS EC2, Google Compute Engine, Azure VM | 카페24, 가비아 웹호스팅, 블루호스트 등 |
사용 대상 | 개발자, DevOps, 서버 관리 능력이 있는 사용자 | 비개발자, 웹사이트 운영자, 중소기업 등 |
설치 가능한 것 | 직접 웹서버, DB서버, 프레임워크 설치 가능 | 보통 기본적인 웹/DB 환경만 제공됨 |
특징 | 내 맘대로 환경을 구성할 수 있으나 직접 관리해야 할 게 많음 (보안, 업데이트, 설정 등) | 보안/서버 유지관리는 호스팅 업체가 해주기 때문에 이용이 쉽고 가격도 저렴하지만 커스터마이징 제한적임 |
'CS 노트' 카테고리의 다른 글
[책] 비전공자를 위한 이해할 수 있는 IT 지식: 5, 6장 정리 (0) | 2024.07.29 |
---|---|
[책] 비전공자를 위한 이해할 수 있는 IT 지식: 4장 정리 (0) | 2024.07.15 |
[책] 비전공자를 위한 이해할 수 있는 IT 지식: 2장 정리 (0) | 2024.07.06 |