일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- wecode#위코드
- 멘토님포함
- wecode
- Github웹호스팅 #HTML#CSS
- 벌써보고싶어38기
- 시멘틱 웹#시멘틱 태그#로멘틱성공적
- wecode#위코드#너무어려워#멘토님감사합니다
- Today
- Total
lflov
백엔드 공부 1 - 웹 서비스의 역사와 발전 본문
<학습목표>
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
info.cern.ch
인터넷과 웹이 불러온 혁신
1. 정보 유통의 발달
과거에는 정보를 전달하려면 직접 전달하였어야 했는데, 현재는 인터넷을 이용하여 가능하다
2. 유통(인터넷과 웹이 불러온 가장 큰 혁신)
정보의 유통이 혁신적으로 발전하며 많은 개발자들이 창업
자신들의 소프트웨어를 판매하기 시작하면서
.com붐이 시작되었습니다. 즉, 1세대 웹 서비스의 시작이 되었습니다(yahoo,google,amazone etc)
1세대 웹 - 정적인 웹
1세대 웹의 특징으로는
- 서버가 HTML페이지 전체를 클라이언트에 전송
- 당시의 기술 -> HTML,CSS -> 정적
- 단순한 정보 제공 위주
- 기능이 많지 않음
- User Interaction 요구 없음
- 동적인 로직이 없음
2세대 웹 - 동적인 웹
웹 서비스의 발전으로
- 동적인 2세대 웹 서비스가 출현
- 웹 기반의 언어 Javascript의 출현
- 단순한 정적페이지가 아닌 동적인 요쇼들이 요구
- 서버와 클라이언트 주체 동일
> 2세대 웹의 단점으로 서버에서 프론트엔드와 백엔드가 필요한 모든 코드를 동시에 한번에 전달을 해서 클라이언트와 소통하였다.
3세대 웹
SPA(single page application)방식이 등장
- 단일의 HTML 페이지로 전체 웹 서비스 구현
- 단일 HTML 페이지에 메인 Javascript 파일이 포함
- Javascript 가 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리
- 웹 페이지 렌더링에 필요한 Javascript 코드는 최초의 통신에서 한번에 송수신
- 그 이후로는 서버와 실시간으로 데이터를 주고 받으며 필요한 화면을 동적으로 구성
3-1 Morden Web System Architecture
웹 서비스의 복잡성 증가
- user interaction의 중요성이 증가(동시 접속자 수가 및 데이터의 양이 증가해서)
system architecture의 발전
- MSA(Micro Service Architecture)의 등장
-FE서버 / BE서버 분리
- 서비스 별로 Backend API서버의 세분화
- API Gateway를 통해 단일화된 주소를 통해 MSA 구조의 시스템 운영
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
- 데이터 엔지니어는 데이터 사이언티스트들과 함께 일하는 직군입니다.
- 주로 데이터 사이언티스트가 데이터를 분석할 수 있도록 데이터를 추출하고 가공해서 저장하는 일련의 파이프라인 시스템을 구현하는 역할을 담당합니다.
'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 |