728x90
반응형
반복학습이 중요합니다. 다시 작성해보겠습니다.
Internet
자주 사용하는 인터넷이 과연 무엇일까요?
사전적인 의미로는 여러 통신망을 하나로 연결한다는 inter + network 입니다.
전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는 하나의 거대한 컴퓨터 통신망
-> 컴퓨터 네트워크를 의미합니다.
1960년대, 인터넷의 탄생
1950 - 모뎀(modem)
- 미 국방부가 방공(적의 항공기나 미사일의 공격을 막음) 시스템을 구축하기 위해 개발
- 통신 기술과 컴퓨터 기술의 결합
- 컴퓨터에서 사용하는 디지털 데이터를 전화선이 활용할 수 있는 아날로그 신호로 바꿈으로써 광범위하게 설치되어 있는 전화선을 통해 컴퓨터 통신을 가능하게 하는 장치
- Modem = modulation(변조) + Demodulation(복조)
- *변조 : 디지털 데이터 → 아날로그 신호
- *복조 : 아날로그 신호 → 디지털 데이터
- 점차 일반인들도 사용할 수 있는 네트워크가 구축되기 시작
1969 - 아르파넷(ArpAnet)
-. 2차 세계 대전의 종료, 강력한 컴퓨터 통신 시스템 설계의 필요성
- 미국(자본주의 진형) vs 소련(사회주의 진영)
- 우주 경쟁(인공위성 발사) + 핵 미사일 개발 경쟁
- 소련의 핵 공격에도 생존할 수 있는 컴퓨터 통신 시스템 설계의 필요성
-. 모뎀을 컴퓨터 통신망의 주요 장치로 활용하는 문제점
- 비용 소요
- 장거리 전화시스템을 이용해 컴퓨터 통신망을 구성하는 데에는 많은 비용이 소요
- 전화가 데이터의 전송보다는 음성을 전달하는 데 최적화되어 있기 때문
- 중앙 집중적 연결방식
- 모뎀은 중앙집중적 연결 방식을 취하고 있어 한 전화국이 파괴되면 그 전화국이 연결해 주는 모든 통신이 두절되는 단점
- 전시 상황에서는 매우 심각한 문제, 이를 극복하기 위해 미 국방부는 모뎀 방식이 아닌 새로운 컴퓨터 통신망을 모색하기 시작
- 모뎀의 대안책으로 탕생한 아르파넷
- ARPAnet = ARPA + 분배 네트워크 + 패킷 스위칭 + 라우터
- ARPA ( Advanced Research Projects Agency)
- 스푸트니크 충격의 여파로 국방연구를 보다 체계적으로 수행하기 위해 1958년 미 국방부에 의해 설립된 기관
- *스푸트니크 충격 : 소련이 세계 최초의 인공위성인 스푸트니크 1호의 발사에 성공 -> 소련의 과학 기술이 앞서있다는 충격, 소련이 본토에서 핵미사일을 쏘면 막을 수 없다는 핵전쟁의 공포
- ARPA ( Advanced Research Projects Agency)
- Distribution Network(분배 네트워크)
- 하나의 컴퓨터가 다른 컴퓨터와 적어도 두 가지 이상의 경로를 통해 접속되는 네트워크 방식
- 특정한 데이터를 전송하는 한 경로가 적의 공격에 의해 파괴된다 할지라도 여분의 경로를 통해 전달될 수 있음
- Packet Switching (패킷 스위칭)
- 한 메세지를 여러 개의 조각(패킷)으로 분할하는 것
- 데이터가 패킷으로 분할되어 전송되기 때문에 적의 공격에 의해 데이터가 손상된 경우에도 전체 데이터가 아닌 해당 부분만 보내면 됨
- Router(라우터)
- 패킷 데이터로 구성된 정보를 주고 받을 때 다양한 경로를 검색하여 수신처 주소로 정확하게 전달시켜 주는 장치
- 아르파넷을 이용한 최초의 통신(1969)
- ARPAnet = ARPA + 분배 네트워크 + 패킷 스위칭 + 라우터
1983 - TCP/IP & 인터넷
- 네트워크 기술에 대한 관심도 증가, 다양한 네트워크의 등장
- 1971년 - 전자우편(e-mail) 개발
- 1972년 - 워싱턴 제 1회 국제컴퓨터통신학술회의, 아르파넷의 시연
- ARPAnet 이외의 새로운 네트워크의 구축 (ex. Telnet, Usenet, Bitnet, etc)
- TCP/IP - 인터넷의 기술적 표준
- 다양한 네트워크가 등장하면서 그것들을 서로 연결하기 위한 표준(기준)의 필요
- 프로토콜(Protocol)
- 통신시스템이 데이터를 교환하기 위해 사용하는 규약
- 다양한 프로토콜 중 TCP/IP 가 인터넷의 표준 프로토콜로 선정
- TCP : Transmission Control Protocol
- IP : Internet Protocol
- 인터넷의 탄생
- 이후 인터넷은 TCP/IP 를 통해 서로 연결된 네트워크를 의미하게 됨
Web
- 웹이란?
- "Collection of information which is accessed via the Internet."
- 월드 와이드 웹(World Wide Web)은 인터넷 네트워크에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간
- 간단히 줄여서 웹(Web)이라고 부름
- 1990년, 웹의 탄생
- 인터넷이 등장하고 30년 뒤인 1990년에 유럽 입자 물리 연구소(CERN)의 컴퓨터과학자인 팀 버너스리(Tim Berners-Lee)가 인터넷 기반 하이퍼텍스트 시스템인 세계 최초의 웹 브라우저인 WWW(World Wide Web)이라는 프로그램 개발[그림 1-4] 세계 최초의 웹 브라우저 WWW
- 세계의 여러 대학과 연구기관에서 상호간의 신속한 정보 교환과 문서 유실 방지를 위한 목적으로 프로그램 고안
- 초창기 월드와이드웹(World Wide Web)은 웹 브라우저의 이름
- 1990년 웹이 출현하며 인터넷 통신이 대중적으로 사용 되기 시작
- 인터넷을 사용하는 컴퓨터들 간의 정보 공간이라는 의미로 발전
- 결국 월드 와이드 웹의 발전에 따라 월드와이드웹 브라우저는 후에 혼돈을 피하기 위해서 Nexus라는 이름으로 변경
- 인터넷에서 웹으로 발전
- 웹은 기본적으로 Hypertext를 통해서 정보를 전달. 이를 가능하게 하기 위해서 팀 버너스리(Tim Berners-Lee)는 HTML과 HTTP 개발
- Hypertext
- 연결된 순서에 관계없이 사용자들이 원하는 정보에 접근할 수 있도록 제공되는 텍스트
- 당시의 인터넷 문서들은 독립적인 개체로 존재
- 기존의 다양한 네트워크를 연결한 검색이 불가능
- Hypertext가 Internet과 결합하여 HTML의 주요 구성요소로 발전
- HTML
- Hypertext는 HTML(Hypertext Mark-up Language)로 작성
- HTTP
- 곧 이어 Hypertext 연결 규약인 HTTP (Hyper Text Transfer Protocol) 탄생
- HTML을 주고 받을 수 있게 됨
- 웹의 등장과 인터넷의 대중화
- 웹 서버라는 프로그램을 만들고 그 프로그램이 설치돼 있는 컴퓨터에 info.cern.ch 라는 주소를 부여
- “Home of the first website”
- 우리가 일반적으로 생각하는 인터넷의 대중화는 이렇게 웹이 등장하면서 시작됨.
인터넷과 웹이 불러온 혁신
- 유통 - 인터넷과 웹이 불러온 가장 큰 혁신
- 정보 유통의 발전
- 예전에는 소프트웨어를 구입 하려면 물리적인 매개체가 필요
- ex. 신문 - 물리적인 신문 배달 → 인터넷 신문
- 웹 기반의 SW 서비스의 시작
- 정보의 유통이 혁신적으로 발전하며 많은 개발자들이 창업
- 인터넷에 본인들이 만든 SW 를 올려서 판매 시작
- 실리콘 밸리, 닷컴붐(Dot-com bubble) (2000년대)
- Yahoo, Google, Amazon, etc
- 1세대 웹 서비스의 시작
- 1세대 웹 서비스 → 정적인 사이트(ex. Yahoo 2000)
- 정보 전달이 목적
- 이 때의 기술은 HTML, CSS 가 전부
Web Archirtecture History
Client & Server
- Client
- 고객
- 웹 서비스를 사용하는 고객 → Web Browser
- cf. Browser - Chrome, Safari, Internet Explorer, etc
- Server
- 제공자
- 웹 서비스를 제공하는 서버
1세대 웹 - 정적인 웹
- 1세대 웹 - 정적인 웹
- 단순한 정보 제공 위주
- 기능이 많지 않음
- User Interaction 요구 없음
- 로직(동적) 없음
- HTML, CSS 자체가 정적
- 서버가 HTML 페이지 전체를 클라이언트에게 전송
2세대 웹 - 동적인 웹
- 웹서비스의 발전 - 동적인 웹
- 동적인 2세대 웹 서비스의 출현
- 웹 기반의 언어 자바스크립트의 출현
- 단순한 정적 페이지가 아닌 다이나믹한 요소들이 요구
- 서버와 클라이언트가 HTML 페이지와 JavaScript 로직을 통해 필요한 데이터를 주고 받으며 User Interaction 구현
- 아직 프/백 구분 없이 동일한 서버
- 자바스크립트의 역할 증대, 하지만 JavaScript 는 일부분에서만 사용
- 동일한 서버에서 HTML, CSS, Javascript, 그리고 Data 전부가 클라이언트로 전송되는 형태
- 프론트엔드 / 백엔드 구분 없음
2-4. 3세대 웹
- SPA (Single Page Application) 방식 등장
- 단일의 HTML 페이지로 전체 웹 서비스 구현
- 단일 HTML 페이지에 메인 Javascript 파일이 포함
- JavaScript 가 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리
- 웹 페이지 렌더링에 필요한 Javascript 코드는 최초의 통신에서 한번에 송수신
- 그 이후로는 서버와 실시간으로 데이터를 주고 받으며 필요한 화면을 동적으로 구성
- 프론트엔드와 백엔드 개발의 분리
- 기존에는 서버가 페이지 구성에 필요한 모든 요소(HTML, JavaScript, Data)를 매번 전송
- SPA 의 등장 (FE)
- 웹 페이지 렌더링에 필요한 Javascript 코드는 최초의 통신에서 한번에 송수신
- 그 이후로는 서버와 실시간으로 데이터를 주고 받으며 필요한 화면을 동적으로 구성
- 자연스럽게 웹 브라우저가 필요한 서버와의 통신은 데이터 전송 및 연산 작업이 대부분이됨 (BE)
- 서버의 분리 & 업무의 분리 → 프론트엔드와 백엔드 개발의 분리
3. Modern Web Development
3-1. Modern Web System Architecture
- 웹서비스의 복잡성 증가
- User Interaction 의 중요성 증가
- 사용자 수
- 데이터의 양 증가
- 이전에 겪지 못한 두 가지 문제
- 1)동시 접속자 수
- 2)데이터의 양
- System Architecture 발전
- FE 서버 / BE 서버 분리
- BE API 서버의 세분화
- 데이터 요청 분산 처리 (API Gateway)
3-2. 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
- 데이터 엔지니어는 데이터 사이언티스트들과 함께 일하는 직군입니다.
- 주로 데이터 사이언티스트가 데이터를 분석할 수 있도록 데이터를 추출하고 가공해서 저장하는 일련의 파이프라인 시스템을 구현하는 역할을 담당합니다.
4. Summary
- 인터넷(Internet)이란 전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는 하나의 거대한 컴퓨터 통신망입니다.
- 웹(Web)이란 인터넷 네트워크를 이용하여 통신되는 정보의 집합입니다.
- 1세대 웹의 특징은 웹 서버가 HTML 페이지 전체와 CSS를 클라이언트에 전송하는 구조입니다.
- 2세대 웹의 특징은 동일한 서버에서 HTML, CSS, Javascript, 그리고 Data 전부가 클라이언트로 전송하는 구조입니다.
- 3세대 웹의 특징은 SPA(Single Page Application)의 등장으로 단일 HTML 페이지와 메인 Javascript 파일로 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리할 수 있게 됩니다.
- 현대 웹 시스템 아키텍처에서는 동시 접속자 수와 데이터 양의 증가로 Micro Service Architecture 구조를 갖습니다.
- 현대 웹 시스템 개발에는 PM, Designer, Scrum Master, Tester, Frontend Developer, Backend Developer, Full Stack Developer, DevOps, SysOps, Data Sientist, Data Engineer 직군이 필요합니다.
반응형
'코딩 개발 > Javascript' 카테고리의 다른 글
Node.js (사용 이유) (0) | 2022.10.25 |
---|---|
API (1) | 2022.10.23 |
Javascript - event (0) | 2022.10.22 |
Javascript - Object (0) | 2022.10.22 |
JavaScript - async 와 defer의 차이(feat.드림코딩) (0) | 2022.10.21 |