#왜 나 혼자 공부하냐ㅋ
규모에 따른 운영
- 서버 = 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 검퓨터 시스템, 프로그램, 장치
- 현대의 애플리캐이션은 웹 애플리케이션의 형태로 배포된다 이는 인터넷에 연결되고,
인터넷을 이용하는 사람들에게 노출된 서버(=컴퓨터)가 존재함을 의미함
ex) https://www.codestates.com/course/devops에 접속한다 생각하면,
https://www.codestates.com/는 DNS 서비스를 통해 IP주소(인터넷 상 유일한 주소)로 변환
course/devops를 통해 웹 서버의 규칙(라우팅)에 따라 자원을 접속자에게 제공
<수직 확장, 수평 확장, 분산 시스템>
HTML 페이지를 제공하는게 쉽게 느껴지겠지만 만약
Q.
- 자원이 여러 곳에 나뉘어 있어서, 한 대가 아닌 여러 대의 컴퓨터로부터 자원을 수집한 후 이를 한 페이지로 정리해서 보여줘야 할 경우
- 동시에 수천명이 한 대의 서버에 접속해서 HTML 페이지를 요구할 경우
- 서비스를 제공하는 단일 서버가 인프라 문제(하드웨어 고장, 네트워크 유실, 천재지변 등)로 갑작스럽게 서비스를 제공할 수 없는 경우
- 머신 러닝, 빅 데이터 처리와 같이 여러 대의 컴퓨팅 자원을 이용해 통해 만들어진 결과를 한 페이지로 정리해서 보여줘야 할 경우
A.
- 이런 저런 일들을 하는 100줄의 코드 대신, 한가지 일만 하는 20줄의 함수를 다섯번 조합한 형태가 문제 해결이 쉬운 것과 비슷
목적에 따라 자원을 분리하면, 단일 서버에서 생기는 복잡한 문제가 보다 단순해짐
2.3. 규모의 확장이 필요함
(수직 확장 - Vertical Scaling, Scale Up과 수평 확장 - Horizontal Scaling, Scale Out
- <수직 확장>: 서버의 성능(CPU, RAM, 스토리지, 네트워크 I/O)을 높임
- <수평 확장>: 더 많은 서버를 도입
- 트래픽의 양이 적음 = 수직 확장 / 트래픽의 양이 많음 = 그냥 수평 확장
ex) 6명이서 차를 타고 여행을 감
아반떼 > 스타렉스 = 수직 확장 / 아반떼 > 2 아반떼 = 수평 확장
- <분산 시스템>