[Day11] 프로그램 웹 개발 이론 (20240708)
2024. 7. 9. 21:37ㆍ공부/DGTP TIL
- 다중 페이지 애플리케이션(MPA)
- MPA(Multi Page Application)는 웹 페이지에서 서버로 데이터를 요청하고 응답을 받을 때 매번 새로운 HTML 페이지를 받는 방식을 말합니다. 웹이 탄생했을 때부터 지금까지 사용되고 있는 디자인 패턴.
- 간단히 정리해서 그냥 페이지를 여러개 만드는 것.
- 장점
- 검색엔진 최적화(검색 엔진으로부터 웹사이트나 웹페이지에 대한 웹사이트 트래픽의 품질과 양을 개선하는 과정)에 용이.
- 탁월한 확장성(새로 만들면 되니까.)
- 단점
- 페이지 속도 저하와 웹사이트 전체 성능 문제
- 개발자 부담이 크고, 개발 기간이 김.
- 웹 사이트의 보안 및 유지·보수가 어렵다.(페이지가 여러개니까)
- 사족
- AJAX(새로 고침을 하지 않고 데이터를 받아오는 기술)가 등장하기 전까지 모든 웹 사이트에서 사용
- 이베이(eBay), 아마존(Amazon) 등의 글로벌 서비스에서 사용
- 단일 페이지 애플리케이션(SPA)
- AJAX의 등장으로 클라이언트에서 데이터를 요청할 때 새 HTML 페이지를 받지 않고 데이터를 갱신
- SPA(Single Page Application)는 웹 페이지에서 처음 응답받을 때 딱 한 번만 HTML, CSS, 자바스크립트 같은 자원을 내려받고 다음 요청부터는 응답받은 데이터로 필요한 부분만 변경하는 방식
- 응답 데이터는 XML, CSV, HTML 등의 형식으로 받을 수 있는데, JSON(JavaScript Object Notation, 제이슨) 데이터를 가장 많이 사용
- 응답받은 데이터를 웹 페이지에서 직접 변경. 렌더링을 클라이언트에서 함. CSR(Client Side Rendering, 클라이언트 사이드 렌더링)이라고도 함.
- 장점
- 웹 페이지 전체를 다시 로딩하지 않고 변경되는 부분만 업데이트
- 웹 페이지가 변경돼도 새로 고침이 발생하지 않아 사용자 경험(UX)이 향상
- 전체적인 편의성(유저/개발자) 향
- 단점
- 모든 페이지가 분리돼 있지 않아 검색 엔진 최적화에 매우 불리
- 하나의 웹 페이지 내에서 데이터가 변경되기 때문에 보안 측면에서 취약
- 웹 브라우저의 히스토리를 따로 관리하지 않으므로 URL(Uniform Resource Locator, 웹 주소) 개념이 없음
- 처음 페이지 로딩 SSR방식보다 느림.
- 검색엔진최적화에 대한 추가 보완 작업 필요.(ex:sitemap문서 작성)
- 사족
- DOM
- HTML, CSS 요소를 자바스크립트가 이해할 수 있도록 객체화해 제공하는 모델
- DOM 생성이 끝나면 웹 브라우저는 자바스크립트가 DOM에 접근할 수 있도록 브라우 저 API, DOM API와 같은 접근 방법을 제공
- 문제는 자바스크립트가 DOM에 직접 접근하면 내부적으로 연속적인 처리가 발생해 속 도나 성능 면에서 매우 불리
- SPA 디자인 패턴을 기반으로 한 자바스크립트 프레임워크(앵귤러, 리액트, 뷰)는 이 문 제를 해결하기 위해 DOM을 제어하는 알고리즘을 제공
- 앵귤러는 증가 DOM 방식의 알고리즘을, 리액트와 뷰는 가상 DOM 방식의 알고리즘을 제공
- DOM
- 서버 측 렌더링(SSR)
- SSR(Server Side Rendering, 서버 사이드 렌더링) 웹 페이지를 서버에서 렌더링 → 모든 데이터를 서버에서 생성한 후 클라이언트에 전달합니다.
- 장점:
- 서버에서 이미 렌더링한 데이터를 응답받기 때문에 초기 페이지 로딩 속도가 SPA(또는 CSR)보다 빠름.
- 검색 엔진 최적화에 유리.
- 단점:
- 초기 로딩 이후 페이지 이동시 속도가 다소 느림(페이지 이동 마다 클라이언트가 서버에게 필요로 하는 데이터를 요청하고 서버가 응답하는 방식이기 때문)
- 서버에서 렌더링이 발생하면 서버 부하가 증가합니다.
- 제대로 최적화되지 않으면 초기 로드 후 상호 작용이 느려질 수 있습니다.
쿠키와 세션
[Node.js_4기] Today_I_Learn : 쿠키와 세션 (24/01/25) (tistory.com)
이전에 작성한 내용에 추가
쿠키 속성(또는 구성요소) :
- 만료시간(expires,max-age), 범위(domain,path), 보안(secure)-https에서만 사용 가능한 쿠키
XSS 공격 방지(HttpOnly)
xss(Cross-Site Scripting 사이트 간 스크립팅) : 사용자가 이용하는 사이트에 악성코드를 심어 쿠키를 탈취하는 해킹 공격
HttpOnly 속성을 사용하여 클라이언트가 쿠키에 접근하지 못하도록 하여 방어
CSRF 공격 방지
CSRF(Cross-Site Request Forgery 사이트간 요청 위조) : 원치 않는 사이트로 쿠키를 보내게 하여 쿠키를 탈취하는 공격 방법.
인증된 사이트에 저장된 쿠키를 해커가 심어놓은 다른 사이트에 전송하는 방식
samesite 속성을 사용하여 방어
(strict : 다른 사이트로 쿠키 전송 불가)
(lax : 안전한 http 메서드(get)이고, 작업이 최상위 경로에서 이뤄지는 경우 외에는 사이트로 쿠키 전송 불가)
(none : 다른 사이트로 쿠키 전송 가능 - samesite 해놓을 이유가 없음. 쓰지 말자.)
HTTP의 비연결성 - 요청 없이 서버에서 응답을 보낼 수 없음.
웹 소켓
TCP/IP 4계층중 응용 계층에서 동작하며, 한 번 연결되면 끊어지지 않는다.
또한, 클라이언트의 요청 없이 서버에서 응답을 보낼 수 있다.
- 초기 연결 설정은 HTTP. 클라이언트와 서버가 웹 소켓을 지원하는지 사전에 알 수 없기 때문
- 요청 메시지 헤더에 Upgrade 값으로 websocket을 보내 서버가 지원하는지 확인
- 요청 받은 서버는 웹소켓을 지원하는 경우 응답에 101
'공부 > DGTP TIL' 카테고리의 다른 글
[Day25] 칸반보드 - Drag & Drop 방식과 기존 코드 비교 (240726) (0) | 2024.07.26 |
---|---|
[Day17] 이벤트 위임 (20240716) (0) | 2024.07.16 |
[Day10] JS 비동기 - promise, async, await (240705) (0) | 2024.07.05 |
[Dau8] 객체와 DOM (240703) (0) | 2024.07.03 |
[DAY 7] 2차원 배열 만들기 (240702) (1) | 2024.07.02 |