CS 노트

비전공자를 위한 이해할 수 있는 IT 지식: 3장 정리

yourhm 2024. 7. 8. 15:20
책 '비전공자를 위한 이해할 수 있는 IT 지식' 3장을 읽으면서 학습한 내용을 요약, 정리한 포스팅입니다.

 

 

네트워크

 

 

 

 

1. LAN(Local Area Network): 컴퓨터가 연결된 작은 지역 (=근거리 통신망)

2. MAN(Metropolitan Area Network): 여러 LAN이 연결된 조금 더 큰 지역 (=도시권 통신망)

3. WAN(Wide Area Network): 여러 MAN이 연결된 가장 큰 지역 (=광역 통신망)

 

- 컴퓨터의 네트워크를 통해 컴퓨터들끼리 서로 소통할 수 있다. 즉, 서로 무언가를 요청하고 응답할 수 있다.

- 요청하고 응답할 때 반드시 필요한 것이 있다. 바로 IP주소. 네트워크상 어디에 위치하는지 알 수 있는 일종의 컴퓨터 주소인 셈이다. IP주소는 위치에 따라 컴퓨터에 따라 고유하다. 그래서 내 노트북을 그대로 사용하더라도 집에서 카페로 이동하면 IP주소가 달라질 수 있다.

 

 

서버와 클라이언트

우리가 24시간 언제든지 카카오톡으로 사진을 서로 주고 받을 수 있는 이유는 카카오톡을 운영하는 회사의 컴퓨터가 24시간 켜져있기 때문이다. 또한 카카오톡의 컴퓨터로 수많은 사람들의 요청이 몰릴 수 있으므로 카카오톡은 컴퓨터 한 대가 아닌 여러 컴퓨터를 연합군처럼 만들어 놓는다. (클라이언트가 소규모일 경우에는 한 대의 컴퓨터로 서버가 모든 역할을 소화할 수도 있지만, 대규모일 경우에는 여러 대의 컴퓨터로 서버를 두고 각각 역할을 세분화할 것이다.) 만약 카카오톡의 컴퓨터들이 꺼진다면 우리는 카카오톡을 이용할 수 없게 된다. 여기서 관점에 따라 컴퓨터를 정의해볼 수 있다.

 

- 카카오톡에 사진을 업로드 또는 다운로드해달라고 요청하는 컴퓨터를 ⇒ '클라이언트' 라고 한다.

- 요청에 맞춰 사진을 저장해주거나 보내주는 등 응답하는 컴퓨터를 ⇒ '서버' 라고 한다.

 

무언가를 요청하는 우리의 입장에서 이 클라이언트 컴퓨터는 바로 앞에 있어서 직접 볼 수 있고 만질 수 있다. 그래서 다른 말로는 '프론트 엔드'라고 한다. 반면 우리의 요청에 대해 응답하고 제공하는 컴퓨터를 서버라고 하는데 이는 우리가 볼 수 없는 곳, 즉 고객의 뒤에 있기 때문에 다른 말로 '백 엔드'라고도 한다.

 

 

서버 구축 시 많이 선택하는 OS: 리눅스(Linux)

- 리눅스는 운영체제(OS)의 한 종류라고 생각하면 된다.

- 서버를 구축할 때, 즉 서버 컴퓨터에서 서버 프로그램을 돌릴 때 OS를 선택해야하는데, 보통 리눅스 위에서 돌리는 경우가 많다. (사실 서버 프로그램에는 웹 서버, 애플리케이션 서버 등등 세부적인 구분이 있지만, 지금 단계에서는 서버 프로그램이라는 큰 틀로 이해하고 넘어가자.)

- 그렇다면 왜 서버를 구축할 때 리눅스를 선택할까?

 

1. 무료

리누스 토발스 라는 사람이 리눅스를 만들었고 이를 무료로 배포했다. 아무나 수정해도 괜찮고, 수정한 것을 팔아도 괜찮다고 했다. 24시간 365일 쉬지않고 돌아가야하는 서버를 구축할 때 비용이 들지 않는 다는 것은 엄청난 장점이 된다.

 

2. 우수한 보안성

대부분의 서버들을 리눅스위에서 돌리는 만큼 전세계의 수많은 기업이나 개인의 정보를 지키기위해 수많은 공격을 방어하며 보안성을 키워왔다. 시스템에 부족한 부분이나 보안 취약성을 여러 사람이 파악할 수 있고 빠른 대처가 가능하여 보안성이 높다고 할 수 있다.

 

3. 안정성

많이 사용되는 만큼 버그도 많이 발생했을테지만, 수많은 사용자들에 의해서 수정되었다. 그래서 리눅스는 매우 안정적이며 충돌이 잘 발생하지 않는다. 또한 리눅스는 윈도우와 달리 업데이트 또는 패치 이후에 OS를 재부팅할 필요가 없다고 한다. 기업에서 사용하는 웹서버는 24시간 365일 쉬지 않고 돌아가야하는데 OS가 재부팅된다면 웹서버를 다시 가동하고 서버를 안정화시키는데 꽤 많은 시간을 들여야 한다. 따라서 리눅스는 웹서버에 적합한 OS라고 할 수 있다.

 

 

리눅스 기반 다양한 배포판

나무위키(리눅스 배포판 이미지)

 

 

- 리눅스를 운영체제(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