본 포스팅은 수업내용의 단순 정리글입니다.
01. 웹 구성 간 흐름 및 직무 종류
이번 포스팅은 웹 개발은 무엇인가에 대한 본질적인 질문부터 시작한다. 웹 개발은 결국 요청과 반환이라고 볼 수 있으며 웹을 이해하고 요구사항뿐 아니라 보안 등의 예외사항을 구현해내야하기 때문에 웹을 아는 것은 중요하다고 할 수 있다.
요청과 반환은 웹브라우저와 웹 서버라는 주체를 통해 이루어지고 있으며 요청반환 방법으로는 REST API, GraphQL, gRPC등이 있다.
웹 브라우저는 html, css, js로 이루어져 있으며, 웹 서버는 웹서버와 웹어플리케이션 서버로 나뉜다. 각각의 구성요소에 대해서도 살펴보자.
웹 브라우저 다른 사람과 공유하기 위해서는 인터넷이 필요하다. 인트라넷이 무엇인지 알아보며, ISP와 DNS에 대해 알아보자.
웹 브라우저를 통해 내게 필요한 정보만 검색할 필요성이 있다. 이를 알아보기 위해 웹 검색엔진과 SEO가 무엇인지, 웹페이지의 성능에 대한 지표에 대해서도 알아보자.
01. 들어가며 : 웹의 본질과 장점, 동작원리를 알아보자
01-01. 웹 개요 : 웹 개발은 무엇이며 왜 배우는가
무엇을 배웠는가?
굳이 앱 개발이 아닌 웹 개발을 선택한 이유를 말 할 수 있는 "웹에 대한 본질과 간단한 동작원리"에 대해 배웠다.
간단하게 말하면, 프론트엔드는 웹페이지의 그 자체를 말하며, 백엔드는 웹 페이지 내 표기할 데이터들을 말한다.
후에 자세히 말하겠지만 웹의 본질은 요청을 주고 결과를 받는 것이다.
따라서 프론트엔드 개발자든, 백엔드개발자든 웹에 대한 전반적인 이해가 필요하다.
02. 웹의 본질인 요청<->반환의 주체, 동작원리, 방법을 알아보자.
01-02. 웹 본질 : 요청 — 반환의 주체와 방법
무엇을 배웠는가?
웹의 요청과 반환이 이루어질 수 있는 방법 중 하나인 REST API와 웹의 요청과 반환이 이루어질 수 있는 서버구조인 단일서버구조(Monolithic), 다수서버구조(MSA)를 배웠다.
1) 요청<->반환의 주체 : 웹브라우저, 웹 서버
- 웹 서버의 개수에 따라 Monolithic과 MSA로 나뉜다.
- Monolithic : 단일 웹 서버로 다수 서비스 제공, 그렇기에 단일 이슈가 전체 이슈로 퍼질 수 있다.(SPOF Single Point of Failure)
- MSA : 다수 웹서버로 각각 개별 서비스 제공,
- 하나의 서비스 문제가 다른 서버 문제로 전파되지 않음(❓)
- 단점 : 서비스마다 서버가 많아지면 수많은 서버 속 어떤 서버의 어떤 api를 사용해야할지 정리정돈 버전관리 안됨.
- 이 단점을 보완하기 위해 API GW(Gateway)(‼️)가 등장(모든 서버에 대한 모든 api호출을 중앙화)
2) 요청<->반환의 방법 : REST API, GraphQL, gRPC 등
- REST API(Method동사 + URI/URL명사)
- URL, Location : https://aaron.com = 장소
- URI, Indicator : https://aaron.com/users/aaron/favorite-things = 장소 내 지정
- URI (Path) 에 들어가는 변수 (‼️)
- Path Variable : /hello/world
- Query Parameter : /hello?next=world
- Request Body = JSON : “{ category: ‘cat’, emotion: ‘smile’ }”
- URI (Path) 에 들어가는 변수 (‼️)
- HTTP Response Status
- 10X : 정보성 응답 ← Informational Response
- 20X : 성공 (응답 완료) ← Successful Response
- 30X : 리다이렉션 ← Redirection
- 40X : 권한 혹은 잘못된 접근 (유저의 잘못) ← Client Error
- 50X : 서버 내부 문제 ← Server Error
- GraphQL
- REST API의 각 비지니스 도메인마다 수많은 API들을 일일히 만들어야하는 단점 보완
- GraphQL 과 REST API 의 차이점 (❓)
- 심화 : gRPC, Queue, WebSocket, WebHook(‼️)
03. 웹 내 주체: 웹 브라우저 <-> 웹 페이지 <-> 웹서버 에 대해 알아보자.
01-03. 웹 내 주체 : 웹 페이지를 사이에 둔 웹 브라우저와 웹 서버
무엇을 배웠는가?
웹 내 주체인 웹브라우저, 웹 페이지, 웹 서버가 각각 어떤 구조인지, 서로에게 제공하기 위해 무슨원리로 동작 하는지 알아보았다.
1) 웹 등장
- 웹은 정보교환과 공동연구를 위해 개발되었다. 웹페이지는 논문, 실험결과 등의 문서였으며, 웹 브라우저는 그 논문을 읽을 수 있게 하는 리더기 였다. 웹 서버는 여러 컴퓨터, 즉 웹페이지 제공자의 역할을 했다.
2) 웹 페이지 (HTML + CSS + JS)
- 마크업 언어/마크다운언어
- 마크업 언어 : 문서를 구성하는 구조적 의미
- 마크다운 언어 : 쉽게 쓰는 마크업 파생 언어
- CSS(Cascading Style Sheet) 종속/우선순위
- 더욱 분명하게 선택자를 지정할 수록 우선순위가 높아진다.(Specific할수록)
- 최종 아래에 선언된 것이 우선순위가 높다 (!important는 예외)
- JS(문서 조작, 이벤트)
- 웹 브라우저 렌더링 절차
- DOM > CSSOM > Render Tree > Layout(Reflow) > Paint(Repaint)
- html이 바뀔 때마다 repaint가 실행되기 때문에 이를(직접적인 돔조작에 따른 repaint를) 효율적으로 개선하기 위해 react 탄생
- TTI(Time To Interactive) : html,css로드 뒤 js를 통해 마우스 이벤트 등이 비로소 적용됐을 때.
- DOM > CSSOM > Render Tree > Layout(Reflow) > Paint(Repaint)
- 웹서버(WS)와 웹 어플리케이션 서버(WAS) (❓❓❓)
- 웹 서버 : 정적 웹 리소스 반환
- 웹 어플리케이션 서버 : 정적 + 동적 웹 리소스 반환
04. 네트워크의 종류와 구조, 네트워크를 통해 웹 페이지가 통신되는 원리를 알아보자.(❓❓❓)
01-04. 인터넷과 인트라넷 그 사이의 ISP 와 DNS
무엇을 배웠는가?
웹이 공유되려면, 세상에 알리려면 외부 네트워크와 연결이 필요하다. 그 네트워크의 종류와 구조, 우리가 웹사이트 주소를 얻기위한 동작원리를 알아보았다.
05. 세계 모든 웹 페이지 정보들을 효율적으로 조회하기 위해 존재하는 웹 검색엔진과 웹 성능에 대해 알아보자
01-05. 웹 검색 엔진(구글)과 SEO 그리고 Core Web Vital
무엇을 배웠는가?
웹 서버들이 네트워크를 통해 연결되어 있고 우리는 세계 모든 웹 서버의 웹 페이지 정보들에 접근하려한다. 그렇다면 모든 웹페이지를 일일히 쳐서 웹페이지 정보들에 접근해야할까? 아니다. 이를 효율적으로 수행하기 위한 웹 검색엔진(구글)이 있다. 웹 검색엔진에 대해 알아보고 웹 성능에 대해서도 알아보았다.
- SEO(Search Engine Optimization)
- 검색 시 상위 노출 전략
- 웹페이지 내용이 관련된 내용이어야 하며,
- 이벤트 및 페이지 이동성능도 좋아야 한다.
- 고려요소 : good contents, Semantic Tag HTML, 키워드 및 메타태그, 성능 Performance Metrics, 웹 접근성'
- robots.txt, sitemap.xml
- 내(웹 서버)가 어떤 웹 페이지를 갖고있는지에 대한 맵과 = sitemap.xml
- 내(웹 서버)가 갖고있는 어떤 웹 페이지를 웹 크롤러로 허용하고 허용안할것인지 결정 = robots.txt
- 웹 페이지 성능(Performance Metrics : Core Web Vital)
- Load Time
- FCP : First Contentful Paint - 웹 페이지 내 가장 첫 의미있는 정보가 보여지는 순간까지의 시간
- LCP : Largest Contentful Paint - 웹 페이지 내 가장 큰 의미있는 정보가 보여지는 순간까지의 시간
- TBT : Total Blocking Time - 동기 실행 시 멈춘 시간들
- TTI : Time to Interactive - JS 자바스크립트가 모두 동작가능한 상태로 준비 완료되기까지의 시간
- TTI : Time to Interactive 완료된 바로 다음에 FCP : First Contentful Paint
- FID : First Input Delay - 이벤트 버튼 등을 누르고 그 이벤트 반영이 시작하기까지의 지연시간
- 크롬 > Lighthouse
- 크롬 lighthouse에서 웹페이지의 점수를 볼 수 있다.
'ASAC > 복습 내용정리' 카테고리의 다른 글
[ASAC 7기] Git에 관한 모든 것 (0) | 2024.12.30 |
---|---|
[ASAC 7기] Cookie, Storage, Session과 HTTPS와 CORS 보안 (2) | 2024.12.18 |
[ASAC 7기] HTTP Cache와 Proxy (0) | 2024.12.16 |
[ASAC 7기] 웹 개발 백엔드 : 운영체제, 서버, 배포방법론 (0) | 2024.12.12 |
[ASAC 7기] 프론트엔드 관점에서 웹 개발을 알아보자 (1) | 2024.12.11 |