- 인터넷의 첫 시작
- 웹의 첫 시작
- 인터넷과 웹이 불러온 혁신
1960년, 인류는 무시무시한 핵전쟁을 경험한다.
그때까지 군사의 통신 시스템은 중앙집중적으로, 핵 공격을 받으면 전체가 마비되는 치명적인 단점이 있었다.
이런 점을 보완하고자 컴퓨터 상호 연결 개념과 관련 기술들이 개발되었고, 그 결과 인터넷이 탄생했다.
인터넷이 분산 커뮤니케이션을 통해 물리적으로 떨어져 있는 서버끼리 연결될 수 있게 함으로써,
전쟁 등으로 인해 통신 시스템의 일부분이 파괴되더라도 그 부분을 제외한 다른 시스템끼리는 서로 정보를 주고 받을 수 있게 되었다.
군사 목적으로 탄생한 인터넷은 군대, 기업, 연구소 등 거대 기관에서 사용되다가,
1990년에 WEB이 출현하면서 일반 사람들도 점차 사용하게 되었다.
20세기 후반, 스위스에 위치한 유럽입자물리연구소에서 물리학자들은 서로 다른 컴퓨터와 운영체제로 협업하면서 소통의 불편함을 겪고 있었다. 이런 불편함을 해소하고자 당시 유럽입자물리연구소의 연구원이었던 팀 버너스리는 HTTP, HTML, URL 등을 최초로 고안하고 1990년 11월에 WWW(World Wide Web)를 탄생시켰다.
버너스리는 모든 이에게 평등한 접근성을 부여한다는 신념 아래, 이런 기술에 대해 별도의 특허를 발행하지 않았고, 곧 인터넷의 급격한 대중화가 시작되었다.
제일 처음 만들어진 웹사이트는 이곳에서 볼 수 있다.
인터넷과 웹이 탄생하면서 '유통 과정'에 가장 큰 혁신이 일어났다.
물리적인 매개체를 통해 소프트웨어를 유통했던 과거와 달리 컴퓨터와 인터넷만 있으면 움직이지 않고도 소프트웨어를 판매할 수 있게 되자, 2000년대 초 닷컴 버블(dot-com bubble)이 일어났다. 이 닷컴 버블을 통해 수많은 소프트웨어 회사가 창업하며 실리콘 밸리가 형성되었으며, 이중 야후, 구글, 아마존 등의 회사가 지속적으로 거대하게 성장하고 있다.
이 시기의 기술은 HTML과 CSS로 이루어져 정적이었다.
- 1 세대 웹 (정적 웹)
- 2 세대 웹 (동적 웹)
- 3 세대 웹 (F&B의 구분)
- 현대 웹 (급속한 규모 증가)
1 세대 웹은 전통적인 웹 서비스로, 웹 서버가 HTML 페이지 전체를 클라이언트 컴퓨터로 전송하는 것이 특징이다.
HTML과 CSS로만 이루어져 굉장히 정적이었기 때문에 사용자 상호작용이나 기능이 별로 요구되지 않았고, 단순한 정보 제공 위주의 서비스가 제공되었다.
웹 기반 언어인 JavaScript가 등장하며, 역동적으로 사용자와 상호작용을 하는 동적 웹이 출현했다.
웹 서버에서 전체 HTML 페이지를 클라이언트 컴퓨터로 전송하는 것은 1 세대와 동일하나, JavaScript를 통해 서버와 필요한 데이터만 주고 받게 되었다는 점이 2 세대 웹의 특징이다.
다만, 2 세대까지는 동일한 서버에서 HTML, 프론트 영역인 JavaScript, 백엔드 영역인 Data 모두를 전송했다.
점차 동적인 기능이 요구되며 JavaScript가 메인이 되고, HTML 및 CSS는 일부가 되는 SPA가 각광받게 된다.
SPA: (Single Page Application, 하나의 파일로 전체 사이트를 구현하는 웹 애플리케이션 혹은 웹 사이트.)
웹 서버에서 HTML 파일을 첫 한 번만 송수신하고 그 후 실시간 데이터만 송수신하는데,
이는 HTML 페이지에 포함된 JavaScript에서 데이터가 필요할 때, 이를 API 서버로부터 호출한 뒤 동적으로 화면을 재구성하는 방식이다.
다시 말해, JavaScript가 DOM을 통해 HTML 태그를 동적으로 생성하게 되었다.
이는 '사용자와 접하는 프론트 영역'과 '서버에서 정보를 관리하는 백 영역'을 명확하게 나누게 함으로써,
HTML 및 JavaScript와 같은 UI, UX 부분(프론트 영역)과 Data(백 영역) 부분을 구조적으로 분리되게 하고과
곧 프론트엔드 개발과 백엔드 개발도 구분되어 진행되는 시스템으로 발전했다.
즉, 프론트엔드 개발과 백엔드 개발이 구조적으로 분리되면서,
각 서버의 API, 기술 스택 사용, 업무가 분리되었다.
(아래의 5 문단은 사담입니다.)
강의 자료에 있는 그림에서 [Client API server, Frontend server, APIs, Databases] 등을 보고 멘붕이 왔다.
우선 API가 어떤 일을 하는지에 대해서조차 잘 정리가 되지 않은 상태였는데,
그 와중에 server가 Frontend server, Backend server 뿐만 아니라 Client API server도 있다고 하니 내가 알고 있는 server의 개념이 잘못된 건지 혼란스러웠다.
그래서 두 시간 동안 Web Interface, works APIs do, Frontend server, Client API 등에 대해 검색해봤는데도 개념이 잘 잡히지 않았다. 다른 동기분들 여러 명에게도 물어봤지만, 모두 잘 모르겠다는 답변이 돌아왔다.
결국 준이 오빠에게 물어보니, 그 부분은 프로젝트를 진행하면서 자연스럽게 익히게 되는 부분이고 추가적으로 배우게 될 여지가 있는 부분이라, 지금 잘 정리되지 않더라도 우선 넘어가고 당장 다음주에 시작하는 foundation 과정 (react 관련)을 준비하는 게 더 도움이 된다고 한다.
그래서 우선 [Client API server, Frontend server, APIs, Databases] 과 관련된 부분은 정리를 하지 않고, 현대 웹 시스템의 개괄적인 부분만을 정리하려고 한다.
사용자 수와 데이터의 양이 증적한 것은 물론이고, 사용자 상호작용의 중요성과 웹 서비스의 복잡성이 함께 대두되면서 3 세대 웹을 넘어 4 세대 웹(현대 웹)으로 들어섰다.
이전에는 문제가 되지 않았던 동시 접속자 수와 데이터의 양이 통제하기 힘들정도로 거대해지자, 시스템 구조가 훨씬 더 복잡해지고 커졌다.
이를 해소하기 위해 Frontend server와 Backend server가 분리된다.
Node.js 및 React 등의 JavaScript Engine과 Framework 및 Library의 발달이 이루어지면서 웹에서 더욱 복잡한 기능 구현이 가능해졌다.
Micro service architecture 등의 새로운 구조 개념이 발전하면서, API server들이 더 세분화되고 규모가 커졌다. 또한, 분석해야 하는 데이터의 양이 크게 늘어나면서 'Big Data' 분석 시스템이 Backend 시스템에 도입되었으며, 이런 Big Data를 통해 사람들의 Insight를 도출해내는 것이 앞으로의 도전 과제이다.
더욱이 최근 Machine leraning과 Artificial Intelligence 기술이 발달하면서, 많은 회사들이 관련된 시스템도 활용하게 되었다.
이런 추세를 따라 백엔드 시스템은 계속해서 방대해지고 있다.
4 세대 웹에서는 개개인이 실제 자아 뿐만 아니라 디지털 세계에서 활동하는 자아를 가지게 되었다.
더불어 어마어마한 정보에 의한 통제로 인해, 디지털 세계 뿐만 아니라 현실의 사람들에게 좋지 않은 방향으로 영향을 줄 수 있다는 디스토피아에 대한 우려도 높아져 가고 있다.
개발팀의 일반적인 구조와 구성원은 다음과 같다.