SW마에스트로 서류 합격!!
1차 코테와 2차 코테 그리고 면접이 남았지만
준비를 열심히 해서 전부 합격하고 이번 1년 불태워보자!
11강
캐시는 이전에 사용했던 데이터들을 보관하는 사용자의 저장공간, 서버에 재요청 했을때 시간과 비용 아낌
쿠키는 http통신의 특성(stateless)와 비연결성(connectionless)때문에 서버가 기억하지 못하는 사용자의 정보를
알기 위해 사용자에게 저장하는 크기가 작은 문자열 파일!
세션은 사용자가 사이트에 로그인했을때 일정기간 동안 서버에서 사용자에 대한 정보를 기록하고 보관하여
사용자를 관리하는 서버의 저장공간
cpu,웹 앱 서버등 여러곳에서 사용, 유튜브가 한국에 캐시 서버 운영- 한국 사용자 요청에 빠른 서비스 제공
cpu캐시 - 연산의 결과값이나 재사용할 데이터를 CPU캐시메모리에 저장해 RAM과 CPU의 속도차이를 줄이는 방법 - 캐시메모리가 너무 크면 전력소모 심함!
웹 캐시 - 사용자의 저장소에 데이터를 저장해서 빠른 서비스 제공, 서버는 전송부하 낮춤
서버가 사용자의 접속상태를 관리, 서버의 저장소 여유만큼 세션을 저장 가능
단점 -> 서버 부하 올수도 있음, 데이터베이스에서 매번 사용자조회, 로드밸런싱 처럼 여러개 서버 사용시 세션 관리 힘듬(사용자의 세션값 공유해야해서!)
클라이언트 단에서 저장하고 싶을때 데이터 저장하는 공간
쇼핑몰의 최근 본 상품 기록 처럼 서버에 굳이 저장할 필요없는 데이터를 임시 저장함
데이터에 접근가능한 유일한 키와 해당키로 저장하는 값으로 되어있음
데이터는 문자열!, 웹스토리지는 쿠키의 여러 단점을 보완하고자 나온 데이터 저장기술!
쿠키보다 저장용량, 개수, 보안에서 좋음 5mb이상도 가능!
웹스토리지는 데이터를 자동으로 서버에 전송하지 않기때문에 서버 부담이 적고 보안성 좋음
로컬스토리지(사용자가 삭제해야 삭제됨,탭 닫아도 유지되어야하는 데이터), 세션스토리지 (페이지 세션 끝나면 자동 데이터 삭제, 새로고침은 유지)
모듈 - 복잡한 코드를 여러 파일로 분산, 각각의 파일을 모듈
웹팩 - 최신 프론트엔드 프레임워크에서 많이 사용하는 모듈 번들러,
모듈번들러 - 웹 앱을 구성하는 자원(html css js 이미지 등)을 모두 각각의 모듈로 보고 이를 조합해서 하나의 결과물을 만드는 도구
웹팩은 작성한 코드들을 빌드하는 과정에서 사용!
각자 주어진 기능만을 독립적으로 수행하고 다른 모듈과 연관성 적어야 좋다!
상호 의존도를 낮추고, 독립적 기능수행하는 응집도가 높아야함!
export, import
css, js파일등이 여러개일 경우 각 파일 수만큼 서버에 요청하여 웹 자원을 얻어와야했던 반면,
존속성이 있는 파일들을 그룹화하여 하나의 파일로 묶어서 요청!-> 로딩에 대한 네트워크비용(서버요청횟수)을 줄일수가있다
웹팩 주요 구성 요소인 loader는 웹팩과 바벨을 연동!
ES6형식의 자바스크립트 파일을 ES5로 자동 변환 -> 구 브라우저에서도 사용가능!
로더는 http css font등의 파일을 js로 변환시켜 모듈로서 역할도 함!, 웹팩이 js모듈밖에 인식 못하기 때문에!!
번들링(존속성 있는 파일들을 그룹화하여 하나의 파일로 패키징하는 과정!)
// webpack.config.js
const path = require(“path”)
module.exports = {
entry: “./src/index.js”, // 웹팩이 파일을 읽어들이기 시작하는 부분
output: {
filename: “main.js”,
path: path.resolve(__dirname, “dist”),
},
mode: “production” // 배포용임을 설명
}
단일페이지로 구성된 웹또는 앱. 한페이지안에서 모든것을 응답한다는 의미!
기존방식 - 웹앱은 서버가 클라이언트 요청과 응답 때마다 새로운 페이지를 로드!, 속도 느림
SPA - 필요한 부분만 변경, 렌더링 역할을 클라이언트에서 한다(CSR)
그래서 CSR처럼 모든 정적 리소스를 받아와야해서 초기 로딩 속도는 조금 느림, 사용자 방문 안하는 곳까지 리소스 받으니까 조금 비효율?
SEO에 적합하지 않다! 단일페이지여서 최적화 정보를 기록할 수가 없기 때문이다!
SPA는 많은 콘텐츠를 제공하는 웹패이지 개발에 용이! 사소한 데이터 변화를 빠르게 해주기 때문에! -> REACT, VUE, Angular 등
(open system interconnctions) 개방형 시스템간 상호 연결
국제 표준화 기구인 OSI에서 개발한 모델, 네트워크에서 통신이 일어나는 과정을 7단계로 나눈것
응용계층 (Application Layer)
응용 프로세스간의 기능을 제공, 추상화된 계층
FTP, SMTP, DNS 등 여러 프로토콜 존재
표현계층(Presentation Layer)
인코딩이나 암호화 동작이 여기서 이뤄짐
세션계층(session layer)
양 끝단 프로세스가 통신을 관리하는 방법을 제공
동시 송수신, 반이중, 전 이중 방식 등이있음, 통신하는 사용자들 동기화
전송계층(Transfer layer)
엔드 투 엔드 사용자들이 신뢰성있게 데이터 주고 받게 해줌, TCP, UDP
TCP - 신뢰성 있는 연결, 비연결형 데이터 단위 세그먼트
UDP - 스트리밍 서미스 처렁 데이터를 빠르게 통신할때! 순서 없음! , 데이터 단위 데이터그램
네트워크 계층
여러개의 서버(노드)를 거칠때마다 경로를 찾아주는 역할, 라우터
경로 배정 기능을 라우터가 수행, 논리적인 IP 주소 있고 네트워크 계층에서 전송되는 데이터 단위 패킷
데이터 링크 계층
물리 계층에서 전송할때 데이터가 분실되는 물리적 오류 있을수 있음
데이터링크 계층에서 감지하고 제어 가능, 포인트 투 포인트 간의 신뢰성 있는 전송을 보장
송신 호스트와 수신 호스트간의 데이터 전송 속도 차이 있으면 흐름을 제어
예시는 스위치, 데이터단위 프레임이라 부름
물리 계층(Physical layer)
하드웨어 전송기술로 구성, 케이블, 허브 등이 있음 물리적으로 전송
네트워크 - 통신망, 관계 => 서로 연결하려면 규칙이나 체계가 필요! -> 네트워크상의 규칙이 TCP/UDP다!
TCP
데이터를 확실하고 안전하게 전달!, 일대일로 통신
컨트롤 플래그 -> TCP 헤더에는 6비트의 컨트롤 플래그가 있다 - 이를 통해 상대에게 통신상태를 전함!
핸드쉐이크 -> 통신을 할때 3way handshake를 함!
HTTP, SMTP등에서 사용
UDP
데이터를 빠르게 전달하는 것!, 일방적으로 데이터 보내고 봄, 실시간 전송 가능 및 여러 상대 동시 전송 가능
음악이나 동영상 스트리밍에서 사용
프로토콜 - 통신 장비간에 원활한 데이터 전송을 위해 만들어진 규칙!
3306 - mysql, 22- ssh, 53 - dns , 80-https
웹 브라우저에 www.naver.com을 누르면 우선 DNS서버에 해당 DNS 의 IP주소로 변환하여 해당 IP 주소를 가진 서버 컴퓨터로 찾아감
서버 컴퓨터가 사용자의 접속 목적에 따라 이정표 역할을 하는 것이 포트번호! -> 80이거나 생략이면 단순하게 웹페이지를 보여주는 것