lflov

백엔드 공부 1 - 웹 서비스의 역사와 발전 본문

node.js

백엔드 공부 1 - 웹 서비스의 역사와 발전

마젠토브힘내부왕 2022. 9. 26. 11:17

<학습목표>

1. 1,2,3 세대 웹의 차이점을 이해하고 웹 시스템 아키텍처에 대해서 설명할 수 있다.

2. 백엔드 개발자의 역할에 대해서 설명할 수 있습니다.

3. 앞으로 개발하게 될 API를 한 문장으로 정의할 수 있다.

4. 인스타그램 api 로 공부해보기

 

1. 인터넷이란?

 

인터넷과 웹의 구조

정의 : 여러 통신망을 하나로 연결한다는 Inter + Network의 합성어이다.

> 전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는 하나의 거대한 컴퓨터 통신망을 의미한다.

 

초기의 인터넷

> 미국과 소련의 냉전시대의 환경에서 소련의 핵무기에도 견고한 네트워크의 중요성이 부각되면서 ARPAnet 이 탄생하였다.

기존의 전화선으로 통신했던 중앙집중적인 방법은 큰 문제가 있었다. 바로, 전화국이 공격을 받아 피해를 입으면 통신이 불가하다는 점이다. 

이것을 극복하기 위해 ARPAnet은 또 다른 네트워크들의 연결성이 보완한다는 아이디어를 실현시켰습니다.

 

또한 하나의 메시지를 여러조각으로 분할하여서 주고받는 패킷 스위칭이란 개념도 도입하였다.

> 적의 공격에 의해서 손실된 일부의 데이터를 복원하기 위해서!

 

또한 수많은 네트워크 중에서 내가 원하는 목적지에 다양하게 파생될텐데 이를 안전하고 빠르게 전달할 수 있는 라우터의 개념이 탄생했다.

 

1983년 1월 1일 ARPAnet은 현대의 TCP/IP 패킷 송출 방법으로 전환했는데, 여기서 P에 주목해야한다.

 

p는 프로토콜의 약자입니다.

 

-프로토콜

https://developer.mozilla.org/ko/docs/Glossary/Protocol

 

프로토콜 - 용어 사전 | MDN

프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정

developer.mozilla.org

정의 : 프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정의하는 규칙의 집합을 프로토콜이라고 합니다.

 

- 웹이란?

영어로 한다면 Collection of information which is acessed via the Internet 이라고 한다.

 

인터넷이 전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는 하나의 거대한 컴퓨터 통신망이라고 한다면 

 

인터넷을 통해서 접근 가능한 수많은 정보의 집합을 의미한다.

 

그렇다면 웹사이트라는 말의 정의는 뭘까요? 바로 

 

정보의 집합을 보유하고 있는 정보들의 저장 공간이라고 말할 수 있다.

 

세계 여러 대학과 연구기관에서 상호간의 신속한 정보 교환과 문서 유실 방지를 위한 목적으로 프로그램을 고안하였는데,

> 인터넷이 등장하고 30년 뒤인 1990년에 유럽 입자 물리 연구소의 컴퓨터과학자인 팀 버너스리 가 인터넷기반 하이퍼텍스트 시스템인 세계 최초의 웹 브라우저인 WWW(world wide web)이라는 프로그램을 개발하였다.

 

여기서 hypertext html http의 발전이 이뤄졌다! 아래의 링크는 가장 처음 만들어진 웹사이트 링크이다

 

http://info.cern.ch/

 

http://info.cern.ch

 

info.cern.ch

 

인터넷과 웹이 불러온 혁신

 

1. 정보 유통의 발달

과거에는 정보를 전달하려면 직접 전달하였어야 했는데, 현재는 인터넷을 이용하여 가능하다

 

2. 유통(인터넷과 웹이 불러온 가장 큰 혁신)

정보의 유통이 혁신적으로 발전하며 많은 개발자들이 창업

자신들의 소프트웨어를 판매하기 시작하면서

.com붐이 시작되었습니다. 즉, 1세대 웹 서비스의 시작이 되었습니다(yahoo,google,amazone etc)

 

1세대 웹 - 정적인 웹

 

1세대 웹 통신 구조

1세대 웹의 특징으로는

- 서버가 HTML페이지 전체를 클라이언트에 전송

- 당시의 기술 -> HTML,CSS -> 정적

- 단순한 정보 제공 위주

- 기능이 많지 않음

- User Interaction 요구 없음

- 동적인 로직이 없음

 

 

2세대 웹 - 동적인 웹

 

2세대 웹이 통신 구조

웹 서비스의 발전으로 

- 동적인 2세대 웹 서비스가 출현

- 웹 기반의 언어 Javascript의 출현

- 단순한 정적페이지가 아닌 동적인 요쇼들이 요구

- 서버와 클라이언트 주체 동일

>  2세대 웹의 단점으로 서버에서 프론트엔드와 백엔드가 필요한 모든 코드를 동시에 한번에 전달을 해서 클라이언트와 소통하였다.

 

3세대 웹

 

SPA(single page application)방식이 등장

- 단일의 HTML 페이지로 전체 웹 서비스 구현

- 단일 HTML 페이지에 메인 Javascript 파일이 포함

- Javascript 가 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리

- 웹 페이지 렌더링에 필요한 Javascript 코드는 최초의 통신에서 한번에 송수신

- 그 이후로는 서버와 실시간으로 데이터를 주고 받으며 필요한 화면을 동적으로 구성

 

3-1 Morden Web System Architecture

 

Micro service Architecture

웹 서비스의 복잡성 증가

- user interaction의 중요성이 증가(동시 접속자 수가 및 데이터의 양이 증가해서)

 

system architecture의 발전

- MSA(Micro Service Architecture)의 등장

-FE서버 / BE서버 분리

- 서비스 별로 Backend API서버의 세분화

- API Gateway를 통해 단일화된 주소를 통해 MSA 구조의 시스템 운영

 

3-2 Modern Web Development Team

 

 

Modern Web Development Team

3-2-1. Product

  • Product manager(기획자)
    • 개발하고자 하는 서비스를 정의하고 기획하는 역할을 담당하는 직군
    • 우리나라에서는 PM 이 개발자의 상사 같은 지위를 가지고 있는 곳이 많은데, 미국 에서는 그렇지 않다.
    • PM 과 개발자는 담당하는 일이 다른 팀원 이지 서로 상하관계가 아니다.
  • Designer
    • 웹 시스템 개발에는 UI(User Interface) 및 UX (User Experience) 를 구현하는 역할을 담당
    • 사용자가 직접 경험하고 사용하는 서비스를 눈에 보기 좋게, 사용하기 편리하게 디자인하는 역할
  • Scrum Master / Project Manager
    • 프로젝트의 일정 및 출시 관리를 담당하는 역할
    • Scrum 개발론이 개발팀 에서 널리 사용 됨에 따라 scrum process 를 관리하고 코치하는 직군이 생김.
  • Tester
    • 시스템을 테스트하여 검증하는 역할을 담당하는 직군
    • QA (Quality Assurance) - 직접 manual testing을 실행하는 직군.
    • Software Engineer in Test / Test Automation Engineer - Manual testing이 아닌 자동 테스트 시스템을 전문으로 구현하는 개발자.

3-2-2. Frontend

  • Frontend Developer
    • HTML, CSS, JavaScript 로 프론트엔드 시스템을 구현하는 역할
    • 사용자와 가장 밀접하게 연결되어 있는 개발자
  • Publisher
    • HTML, CSS 만 담당하는 한국만의 고유 직군
    • 점차 없어지는 추세

3-2-3. Backend

  • Backend Developer
    • 백엔드 시스템을 개발하는 역할.
    • Backend 개발자들도 크게 2가지로 나뉨
      • Backend 에서 좀더 앞 쪽을 담당하는 (즉 API 개발을 담당하는) 개발자.
      • Backend에서도 완전 뒤쪽, 즉 데이터 수집, 분석, 관리 등의 데이터 관련 시스템을 개발하는 개발자.
      • (경력이 높아질 수록 좀 더 난이도가 있는 뒷 부분에 해당하는 시스템을 많이 구현.) → DevOps
  • Full Stack Developer
    • Frontend 와 Backend 를 모두 개발하는 개발자를 말합니다.
    • Node.js 를 통해 자바스크립트로 프론트, 백 둘 다 개발이 가능해지면서 풀스택 개발자 증가하고 있습니다.
    • 둘다 한다고 하니 멋있어 보이지만 개발 입문자는 추천하지는 않습니다.
    • 요즘 기술은 너무 발전해있기 때문에, 한 분야를 깊게 파는것이 중요합니다. 여러 분야를 넓게 하는 것은 나름의 장점이 있지만, 결국에 전문가가 되기는 어려운 면이 있습니다.
    • 선택과 집중. 한 분야의 전문가가 된 후에 필요한 정도로 나머지 분야에 대해 학습하는 것을 추천합니다.

3-2-4. Dev System / Data

  • DevOps
    • “Development”와 “Operation”의 합성어로, 직군이라기 보다는 개발 분야에서 나타나는 문화 혹은 추세를 말합니다.
    • 데브옵스는 이름 그대로 개발자가 시스템 개발뿐만 아니라 시스템 운영(operation)까지 담당하는 것을 이야기합니다.
    • AWS 등의 클라우드 서비스가 발달함에 따라 서버 구축 및 운영 등의 시스템 인프라스트럭처 구축과 관리를 하는 데 있어서 실제 하드웨어 서버를 직접 다루지 않다도 되게 되었습니다.
    • 자연스럽게 시스템 운영 담당자가 따로 필요없이 개발자들이 직접 시스템 인프라스트럭처를 구현하는 추세가 널리 퍼지게 되었습니다.
  • SysOps
    • 시스템 인프라스트럭처(system infrastructure)의 구현과 관리 및 운영을 담당하는 직군입니다. DevOps와 다르게 실제 하드웨어를 다룰 수 있는 직군입니다.
    • 서버를 직접 설치하고 운영시키며, 그 외 물리적인 네트워크 구축 및 운영 등 시스템 인프라스트럭처 운영에 필요한 모든 부분을 담당합니다.
    • 주로 직접 데이터 센터(data center)를 사용하여 시스템을 운영하는 회사에 필요한 직군입니다.
    • AWS 등의 클라우드 서비스가 널리 사용되며 데브옵스가 발전함에 따라 예전보다는 시스옵스 팀에 대한 수요가 많이 줄어들고 있는 추세입니다.
    • 실제로 넷플릭스 같은 대기업도 시스템 인프라스트럭처를 전부 AWS 상에서 구현해 놓았기 때문에 별도로 시스옵스팀이 없는 것으로 알려져 있습니다.
  • Data Scienist
    • 데이터 사이언티스트는 데이터 분석에 필요한 알고리즘과 모델링의 구현을 담당하는 직군입니다.
    • 웹 시스템의 규모가 커지고 빅데이터 기술이 발달하면서 많은 기업들이 방대한 양의 데이터를 수집할 수 있는 능력이 생겨 나게 되었습니다.
    • 그리고 이 방대한 양의 데이터를 분석하여 고객들의 니즈(needs)를 더 이해하고 파악함으로써 더 나은 서비스를 제공하고자 하는 기업들이 늘어나게 되었습니다.
    • 그에 따라 많은 양의 데이터를 분석해서 새로운 정보와 가치를 만들어 낼 수 있는 데이터 사이언티스트라는 직군이 생기게 되었습니다.
    • 데이터 사이언티스트들은 대부분 수학, 통계학, 물리학 등의 분야에서 석사 이상의 학위를 가지고 있고, 박사 학위를 가지고 있는 사람도 많습니다.
  • Data Engineer
    • 데이터 엔지니어는 데이터 사이언티스트들과 함께 일하는 직군입니다.
    • 주로 데이터 사이언티스트가 데이터를 분석할 수 있도록 데이터를 추출하고 가공해서 저장하는 일련의 파이프라인 시스템을 구현하는 역할을 담당합니다.

'node.js' 카테고리의 다른 글

Express와 TypeORM  (1) 2022.10.05
TypeORM & DB connection  (1) 2022.10.05
Express 초기설정?  (1) 2022.10.05
데이터베이스  (0) 2022.09.26
API  (1) 2022.09.26