개발자를 위한 IT 용어 정리 - 2

박경현·2023년 2월 21일
0

SW마에스트로 서류 합격!!

1차 코테와 2차 코테 그리고 면접이 남았지만
준비를 열심히 해서 전부 합격하고 이번 1년 불태워보자!

개발자가 되기 위한 IT용어들 -2

11강

캐시/쿠키/세션

캐시는 이전에 사용했던 데이터들을 보관하는 사용자의 저장공간, 서버에 재요청 했을때 시간과 비용 아낌

쿠키는 http통신의 특성(stateless)와 비연결성(connectionless)때문에 서버가 기억하지 못하는 사용자의 정보를
알기 위해 사용자에게 저장하는 크기가 작은 문자열 파일!

세션은 사용자가 사이트에 로그인했을때 일정기간 동안 서버에서 사용자에 대한 정보를 기록하고 보관하여
사용자를 관리하는 서버의 저장공간

캐시

  • cpu,웹 앱 서버등 여러곳에서 사용, 유튜브가 한국에 캐시 서버 운영- 한국 사용자 요청에 빠른 서비스 제공

  • cpu캐시 - 연산의 결과값이나 재사용할 데이터를 CPU캐시메모리에 저장해 RAM과 CPU의 속도차이를 줄이는 방법 - 캐시메모리가 너무 크면 전력소모 심함!

  • 웹 캐시 - 사용자의 저장소에 데이터를 저장해서 빠른 서비스 제공, 서버는 전송부하 낮춤

  1. 사용자가 웹서버에 데이터를 요청하면 사용자의 캐시에서 도메인과 일차하는 캐시 데이터를 찾는다
  2. 사용자의 캐시에 원하는 데이터가 없거나 캐시기간이 만료되었으면 서버에 데이터를 요청! ( Cache Miss)
  3. 사용자의 캐시에 요청한 데이터가 존재하면 재검사 설정이 되어있는지 판단!(Cache Hit)
  4. 재검사 설정이 되어있지 않은 캐시면 데이터는 최신버전인지 검사하지 않고 사용자에게 기존 저장된 캐시데이터로 응답!
  5. 재검사 설정 되어있는 캐시면 데이터가 최신버전인지 서버에 재검사 요청
  6. 캐시 버전 번호와 마지막 수정날짜를 서버의 데이터와 비교 했을때 일치하므로 사용자에게 응답코드를 주어 사용자의 캐시 데이터 사용
  7. 일치하지 않으면 서버에 데이터를 요청

쿠키

  • 최대 4kb문자열, 유효날짜와 만료시간 존재, 쿠키는 http에서만 사용가능
    https에서만 사용가능한 보안쿠키,
    세션에서 사용자의 session ID값을 가지고 있는 쿠키(브라우저 종료시 사라짐)
  1. 사용자가 사이트에 처음 방문해서 서버에 웹피이지를 요청
  2. 웹 서버에서 쿠키 속성들을 설정하여 사용자에게 전송해서 브라우저가 사용자의 쿠키 저장공간에 저장
  3. 사용자가 다시 서버에 똑같은 웹페이지를 요청 -> 이번에는 http헤더에 웹페이지의 도메인과 일치하는 쿠키들을 포함해서 전송
  4. 웹서버는 사용자를 파악, 원하는 서비스 제공

세션

서버가 사용자의 접속상태를 관리, 서버의 저장소 여유만큼 세션을 저장 가능

  • 세션 id를 사용자와 서버가 주고 받으므로
    중간에 세션 id를 빼앗겨도 세션 id만으로 개인 정보 모름!
    일정기간 지나면 세션 만료되서 보안에 좋음!
    서버에서 사용자 관리 가능

단점 -> 서버 부하 올수도 있음, 데이터베이스에서 매번 사용자조회, 로드밸런싱 처럼 여러개 서버 사용시 세션 관리 힘듬(사용자의 세션값 공유해야해서!)

  1. 사용자가 서버에 로그인
  2. 서버에서는 사용자의 로그인 정보와 데이터베이스에 저장된 사용자의 정보를 비교
  3. 사용자가 존재하면 세션id와 일부 정보를 서버의 세션 저장소에 보관, 서버에서는 저장한 세션 id값을 사용자에게 세션쿠키로 전달
  4. 사용자가 서버에 다시 접속할때 세션 id를 같이 보내면 서버에서는 세션id를 찾아 사용자 파악 후 원하는 서비스 제공

웹스토리지 - 쿠키를 보완하기 위해 나옴!

클라이언트 단에서 저장하고 싶을때 데이터 저장하는 공간
쇼핑몰의 최근 본 상품 기록 처럼 서버에 굳이 저장할 필요없는 데이터를 임시 저장함

데이터에 접근가능한 유일한 키와 해당키로 저장하는 값으로 되어있음
데이터는 문자열!, 웹스토리지는 쿠키의 여러 단점을 보완하고자 나온 데이터 저장기술!
쿠키보다 저장용량, 개수, 보안에서 좋음 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

단일페이지로 구성된 웹또는 앱. 한페이지안에서 모든것을 응답한다는 의미!

기존방식 - 웹앱은 서버가 클라이언트 요청과 응답 때마다 새로운 페이지를 로드!, 속도 느림
SPA - 필요한 부분만 변경, 렌더링 역할을 클라이언트에서 한다(CSR)

그래서 CSR처럼 모든 정적 리소스를 받아와야해서 초기 로딩 속도는 조금 느림, 사용자 방문 안하는 곳까지 리소스 받으니까 조금 비효율?
SEO에 적합하지 않다! 단일페이지여서 최적화 정보를 기록할 수가 없기 때문이다!

SPA는 많은 콘텐츠를 제공하는 웹패이지 개발에 용이! 사소한 데이터 변화를 빠르게 해주기 때문에! -> REACT, VUE, Angular 등

OSI 7계층

(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/UDP다!

TCP

데이터를 확실하고 안전하게 전달!, 일대일로 통신

컨트롤 플래그 -> TCP 헤더에는 6비트의 컨트롤 플래그가 있다 - 이를 통해 상대에게 통신상태를 전함!
핸드쉐이크 -> 통신을 할때 3way handshake를 함!
HTTP, SMTP등에서 사용

UDP

데이터를 빠르게 전달하는 것!, 일방적으로 데이터 보내고 봄, 실시간 전송 가능 및 여러 상대 동시 전송 가능
음악이나 동영상 스트리밍에서 사용

프로토콜 - 통신 장비간에 원활한 데이터 전송을 위해 만들어진 규칙!

포트(Port) - 0 - 65535번까지 65536개 사용가능

3306 - mysql, 22- ssh, 53 - dns , 80-https
웹 브라우저에 www.naver.com을 누르면 우선 DNS서버에 해당 DNS 의 IP주소로 변환하여 해당 IP 주소를 가진 서버 컴퓨터로 찾아감

서버 컴퓨터가 사용자의 접속 목적에 따라 이정표 역할을 하는 것이 포트번호! -> 80이거나 생략이면 단순하게 웹페이지를 보여주는 것

URI - 인터넷에 있는 많은 자원을 구별하기 위한 문자열

  • 고유의 IP를 사용자가 기억하기 힘들기 때문에 쉽게 기억 가능한 문자열인 URI을 사용!
    스키마://호스트/경로
    스키마 -> 사용자간의 프로토콜 규칙
    호스트 -> ip혹은 도메인으로 자원 주소
    경로 -> 포트나 쿼리 스트링 등을 나타냄

IP - 실제 컴퓨터가 연결된 네트워크의 주소

DNS - 도메인 네임과 ip를 서로 변환하는 역할

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글