11월 5일 학습일지
11월 5일
오늘 공부에 투자한 순수한 시간: 5시간
학습한 개념 : 클라이언트와 서버
<클라이언트>
1. 클라이언트는 영어로는 고객, 의뢰인이라는 뜻으로 컴퓨터에서는 서비스를 요청하는 쪽을 뜻한다.
이전에 공부했던 HTTP에서 요청과 응답 구조에서 요청을 하는 부분이 클라이언트라고 생각하면 된다.
가장 흔한 클라이언트는 웹 브라우저로 웹에서 다음 요청 사항을 지속적으로 요청하는 프로그램이기 때문이다.
1970~1980년대 컴퓨터 네트워크가 발전하며 생겨난 용어이다
2. 클라이언트는 누구 한명이 만든것이 아닌 여러 연구 흐름에 따라서 만들어진 것이다.
1960~1970년대 - 메인 프레임(대형 중앙 컴퓨터)와 여러 단말기(화면과 키보드만 있는 장치)가 연결되어 있었다.
단말기는 계산은 못하고 메인 프레임이 모든 일을 처리했다. 이 당시에는 클라이언트라는 말은 없었지만 메인 프레임이 클라이언트라고 생각하면 된다.
1970년대 - ARPANET(인터넷의 전신이 된 미국 연구용 네트워크)에서 컴퓨터끼리 서로 요청하고 응답하도록 발전하게 되었다.
PARC 연구소 등에서 RPC(원격 호출)방식이 연구되면서 요청하는 쪽과 응답하는 쪽의 구분이 명확해졌다.
1980년대 - 개인용 컴퓨터가 보급되기 시작하였다. 각자의 컴퓨터가 계산하는 능력을 가졌고 필요한 경우에만 서버에 요청하는 방식이 일반화 되었다. 이때부터 클라이언트 - 서버 라는 용어가 사용되기 시작했다.
1990년대~ - 웹에서 웹 브라우저가 가장 대표적인 클라이언트로 자리 잡으며 대중화가 시작되었다.
왜 만들어졌는가?
1. 이전에 사용하던 중앙 컴퓨터가 모든 일을 맡아서 하기에 부담이 너무 커서 여러 일을 나누기 위해서 만들게 되었다.
2. 비싼 자원을 서버 한 곳에 두고 자원을 공유하기 위해서 만들게 되었다
3. 정보를 서버에 모아두면 최신 상태를 유지하기에 좋으며, 백업과 보안의 관리가 편리해진다.
4. 사용자의 프로그램은 화면에 집중하고 힘들고 어려운 처리나 저장같은 역할은 서버에게 맡기기 위해서 만들게 되었다.
5. 다른 기종을 사용하더라도 다 같이 협력해서 사용하기 위해서 만들게 되었다.
ㄴ그러면 1970년대에는 개인용 컴퓨터는 들어오지 않았지만 PARC 연구소등은 각자의 컴퓨터를 사용한거야?
대부분의 기업이나 대학은 여전히 메인 프레임이나 미니컴퓨터를 사용하는 반면 PARC 연구소는 미래의 사무 환경을 미리 만들어 보자는 목표로 한 사람당 한 대의 컴퓨터를 사용할 수 있도록 도왔다.
- 알토(Alto) - 1973년 PARC가 만든 실험용 개인 컴퓨터
- 인더넷(Ethernet) - 1973년경 개발했으며 알토와 같은 컴퓨터들을 서로 연결하는 근거리 네트워크 기술
연결된 알토들이 파일 서버나 프린터 서버에 요청을 하고 사용하는 구조가 실제로 이루어졌다.
3. 클라이언트가 나오기 이전에는 중앙 컴퓨터 하나에 여러 단말기를 붙이던 방식으로 사용되었는데 한 컴퓨터에 여러 사람이 번갈아가며 사용한 방식이다.
클라이언트가 나오기 이전에 있었던 불편함
1. 메인 컴퓨터에 접속자가 늘고 처리해햐는 일이 늘어나면서 부하가 쌓이면서 응답이 느려졌다.
2. 단일 장애점(한 곳이 고장나면 전체가 멈추는 약점) 구조라서 중앙 컴퓨터가 고장이 나거나 점검을 하면 모든 사용자가 작업을 중단해야하는 문제가 있었다.
3. 중앙 컴퓨터에 성능이 부족하다면 메인 프레임으로 교체를 해야하는데 가격이 매우 비싸 일부만 늘리는 확장이 어려웠다.
4. 사용자쪽에서는 계산하는 기능이 없어 중앙 컴퓨터에 요청을 해야하는 번거로움이 있었다.
5. 화면과 사용이 글자의 명령어 중심이라서 빠르게 일을 처리하기에 문제가 있었다.
6. 컴퓨터 사용 시간이 귀해 순서를 기다리거나 시간에 맞춰서 사용할 수 있었다.
7. 서로 다른 컴퓨터끼리 통신 방식이 달라서 다른 컴퓨터에서 요청을 하고 결과를 받기가 쉽지 않았다
4. 기존에 문제점들이 대부분 해결이 되었는데
1. 중앙 컴퓨터 한대에서만 작업을 하여 부하가 쌓였는데 이를 방지하게 되었다
2. 사용자 스스로가 일부는 계산도 가능하게 되어 시간이 많이 단축되었다.
3. 이전에는 명령어로만 진행이 가능했는데 아이콘이 생기면서 더욱 풍부게 사용이 가능해졌다
4. 중앙 컴퓨터가 멈추면 진행이 되지 않았던 과거와는 다르게 중앙 컴퓨터가 멈춰도 진행이 가능해졌다
5. 데이터를 서버 한 곳에 모아 파일에 접근하기 쉬워졌다.
6. 다른 기종끼리도 협력이 가능하게 되어 프로토콜만 따르게 된다면 어디서든 사용이 가능해졌다.
5. 기존의 불편함을 이렇게 해결하게 되었는데
1. 역할 분담으로 클라이언트와 서버가 맡아서 하게 되면서 중앙 컴퓨터에 쌓이던 부하 문제를 해결하였다.
2. 개인용 컴퓨터가 대중화되면서 개인이 직접 계산할 수 있는 CPU(계산 장치)와 메모리가 생기게 되었다.
3. 각 기종이 달라도 프로토콜만 맞다면 기종에 맞게 사용할 수 있게 되었다.
4. 비싼 대형 컴퓨터를 평범한 서버 여러대로 바꾸면서 로드 벨런싱(요청을 여러 서버에서 고르게 나눠 주는 기술)으로 나누게 되어 하나의 서버가 문제가 생겨도 다른 서버로 대체가 가능해졌다.
5. 데이터는 이제 서버에 저장해서 개인 작업은 개인의 컴퓨터에서 진행하게 되었다.
<서버>
1. 서버(Server)는 영어로 봉사하는 사람, 시중을 드는 사람을 뜻하며, 1970~1980년대 네트워크가 발전하면서 클라이언트와 같이 사용됐다.
컴퓨터에서는 클라이언트가 서버에게 요청하면 서버는 그것에 응답하고 서비스를 제공한다.
서버의 핵심내용으로는
1. 서버는 기계의 이름이 아니고 역할의 이름이다.
2. 제공하는 서비스에 따라서 서버의 이름이 바뀐다.
- 웹 서버 : 웹 문서를 제공하는 서버
- 파일 서버 : 파일을 보관하고 제공하는 서버
- 메일 서버 : 이메일을 주고 받을 수 있도록 하는 서버
- 데이터베이스 서버 : 정보를 체계적으로 저장하고 검색할 수 있도록 하는 서버
3. 서버는 항상 클라이언트의 요청을 받고 움직일 수 있다. 이렇게 요청을 기다리는 것을 '리스닝'이라고 부르고, 포트는 이때 사용이 된다.
4. 하나의 컴퓨터에서 여러 작업을 동시에 돌릴 수 있다. 또는 하나의 서비스를 여러 대의 컴퓨터에서 돌릴 수도 있다.
2. 서버 또한 클라이언트처럼 누구 한 사람이 만든것이 아닌 컴퓨터 방식이 바뀌며 자연스럽게 생겨났다.
1960년대 - 한 컴퓨터를 여러 사람이 번갈아가며 사용하는 시스템인 '시분할 시스템'이 있었으며, 한 컴퓨터가 여러 사람에게 서비스를 제공하는 아이디어가 여기서 나왔다. 그러나 아직 서버라는 이름이 붙여지지는 않았다.
1970년대 - ARPANET(인터넷의 전신이 된 미국 연구용 네트워크)에서 컴퓨터 끼리 요청하고 응답하는 시스템을 만들었고, 여기에서 파일 전송 (FTP)나 원격 접속 (Telnet)처럼 서비스를 제공하는 도구가 생겨났다.
1980년대 - 이때부터는 개인용 컴퓨터가 대중화 되면서 이때부터 네트워크 파일 시스템인 NFS와 데이터베이스 서버가 대표적인 사례이다. 이때부터 서버라는 용어를 사용하기 시작했다.
1990년대 - 팀 버너스리가 웹을 만들게 되면서 NCSA HTTPd와 Apache가 웹 서버를 대중화 시켰고, 인터넷 서비스가 폭발적으로 늘어나면서 서버가 사회 기반 시설이 되었다.
왜 만들어 졌는가?
1. 대용량 저장장치나 프린터, 데이터베이스 같은 비싼 장비를 서버 한 곳에서 사람들과 나누어 사용하기 위해 만들어졌다.
2. 데이터를 서버 한 곳에 모으게 되면 최신 상태 유지나 백업, 보안 관리가 쉬워졌다.
3. 여러 사람이 동시에 같은 정보를 보며 고치거나 수정 할 수 있게 만들기 위해서 만들어졌다.
4. 개인 컴퓨터가 꺼지거나 자리를 옮기게 되어도 서버는 항상 켜져있어 24시간 안정적으로 사용하기 위해서 만들어졌다.
5. 무거운 처리나 저장은 서버가 맡고 사용자의 컴퓨터는 보다 가볍게 사용할 수 있도록 하기 위해서 만들어졌다.
3. 서버가 나오기 전에 있었던 불편함으로는
1. 컴퓨터마다 파일이 따로 저장되어 있어서 플로피 디스크(얇은 이동식 저장 디스크)나 테이프를 복사해서 직접 이동해야 했는데 이러한 이동 방식을 운동화를 신고 걸어가서 전달하는 말을 빗대어 만든 '스니커넷'이라고 불렸다.
2. 복사본이 사람마다 생기니까 최신 상태를 유지하기 힘들었다.
3. 프린터나 대용량 저장장치를 사용하려면 컴퓨터마다 따로 연결하거나 장비 옆에 컴퓨터를 직접 찾아가야하는 불편함이 있었다. 효율성도 떨어졌으며, 가격도 많이 늘게 되었다.
4. 데이터가 각자의 컴퓨터에 흩어져있어 관리나 보관이 어려웠다. 또 컴퓨터가 고장 나게되면 그 안에 있는 데이터도 함께 사라졌다.
5. 여러 사람이 같은 데이터를 동시에 보기 힘들었다.
4. 서버가 나온 이후에는
1. 파일과 데이터를 더이상 스니커넷하지 않고도 파일을 서버에 올려두면 어디서든 쉽게 확인 할 수 있게 되었다.
2. 이전에는 복사본이 많이 흩어져 무엇이 최신 버전인지 알기 어려웠지만 이후에는 쉽게 모두가 무엇이 최신 버전인지 알 수 있게 되었다.
3. 장비를 서버에 연결하고 여러 사람들이 함께 사용하게 되어 비용이 많이 줄었다.
4. 백업이나 보안 관리가 쉬워졌고 개인 컴퓨터가 고장이 나도 서버에는 데이터가 남아 있게 되었다.
5. 서버가 있으면 언제 어디서는 사용이 가능해졌다.
5. 기존의 불편함은 어떻게 해결되었나?
1. 파일이나 프린터, 데이터베이스 같은 비싼 장비를 전담 컴퓨터 한 곳에 모아 두고 사용자는 네트워크에 요청만 보내게 되어 요청과 응답 구조로 인해 스니커넷 방식을 사라지게 되었다.
2. 공유 데이터의 원본 하나만 서버에 두게 되어 사람들이 원본만 고치게 되면서 복사본이 더 이상 흩어지지 않았으며, 같은 데이터를 고치려는 충돌은 잠금 (한 사람이 수정하는 동안 다른 사람은 수정하지 못하도록 만들어 놓은 잠금 장치)이나 트랙잭션 (여러 작업을 하나로 묶어 전부 성공하거나 전부 취소되게 만든 방식)으로 조정하게 되었다.
3. 서버에서 리스닝을 하다가 요청마다 프로세스나 스레드(프로그램 안에서 일을 나눠 동시에 처리할 수 있도록 돕는 단위)를 하여 여러 사람의 요청을 동시에 처리하게 되었다.
4. 데이터가 서버에 모여 있어 한 곳에서 백업과 권한을 관리 하고 서버가 검사해서 허락된 사람만 접근 할 수 있도록 하고 있다.
5. 서버가 멈추면 모두가 멈췄던 약점을 이중화 (같은 역할의 서버를 여러 대 두어 한 대가 멈춰도 이어받을 수 있도록 하는 방식)과 로드 밸런싱으로 줄였다. 사용자가 늘면 서버도 같이 늘리는 식으로 확장하고 있고, 클라우드로 서버를 필요한 만큼 빌려 쓰게 되었다.
AI 대화 내역 링크: https://claude.ai/share/812f3eb7-d286-42ab-b716-7a88152c9cf0
오늘 잘한 점: 문제점이나 정리해야하는 부분을 눈에 더 잘 띄도록 일지작성을 하였고, 클로드에 어려운 단어는 옆에 뜻과 함께 알려달라고 요청하여 더 이해를 쉽고 빠르게 할 수 있게 되었다.
오늘 부족했던 점: 기존에 있는 틀보다 더 많은것을 질문하고 공부해야할거 같은데 아직 그 부분이 부족한거 같다.
오늘 총평: 어려운 단어의 뜻을 함께 알려달라고 해서 내용을 이해하는데 훨씬 수월해졌다. 막히는 부분이 없으니 진도도 전에 비해서 더 빠르게 나아가게 되었다. 그러나 기존에 틀에서 더 많은 내용을 질문하고 공부하는것이 약한것 같다는 생각이 들었다.
부족한 단어: 하이퍼링크, 링크, HTML, URL, HTTP, ENQUIRE, W3C, FTP, Usenet, Telnet, Archie, Gopher, 하이퍼텍스트, 하이퍼카드, 메멕스(Memex), 모자이크(Mosaic), link rot, 테드 넬슨, HTML Tags, 바이너리 형식, SGML, 검색 엔진, 스크린 리더, 자동 처리 도구, 로이 필딩, 헨릭 프리스틱 닐슨(Henrik Frystyk Nielsen), IETF, 인터넷 통신 방식(TCP/IP), 메서드, 데이터, 도메인, Head-of-Line Blocking, 멀티플렉싱, n-gram 모델, 트랜스포머, 클로드 섀넌, IBM 연구진, 요슈아 벤지오 연구팀, BERT, GPU, 단일 장애점, 시분할 시스템, 스니커넷, 플로피 디스크, Single Source of Truth
여기에 파일을 드롭하세요
