본문 바로가기

프로그래밍258

HTTP, CSR, SSR + 자바 웹 기술 역사 HTTP API 다양한 시스템 연동 1. 주로 JSON 형태로 데이터 통신 2. UI 클라이언트 접점 - 앱 클라이언트(아이폰, 안드로이드, PC) - 웹 브라우저에서 자바스크립트를 통한 HTTP API 호출 - React, Vue.js 같은 웹 클라이언트 3. 서버 to 서버 - 주문 서버 => 결제 서버 - 기업간 데이터 통신 SSR - 서버 사이드 렌더링 - HTML 최종 결과를 서버에서 만들어서 웹 브라우저 전달 - 주로 정적인 화면에 사용 - 관련 기술: JSP, 타임리프 => 백엔드 개발자 CSR - 클라이언트 사이드 렌더링 - HTML 결과를 자바 스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용 - 주로 동적인 화면에 사용. 웹 환경을 마치 앱처럼 필요한 부분부분 변경한다. 예) 구.. 2023. 8. 1.
쓰레드 풀, 멀티 쓰레드 환경 쓰레드 1. 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 2. 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 3. 쓰레드가 없다면 자바 어플리케이션 실행이 불가능 4. 쓰레드는 한번에 하나의 코드 라인만 수행 5. 동시 처리가 필요하면 쓰레드를 추가로 생성 요청 마다 쓰레드 생성 장점 - 동시 요청을 처리할 수 있다. - 리소스(CPU, 메모리)가 허용될 때 까지 처리 가능 - 하나의 쓰레드가 지연 되어도 나머지 쓰레드는 정상 작동한다. 단점 - 쓰레드 생성 비용은 매우 비싸다. (고객의 요청이 올 떄마다 쓰레드를 생성하면, 응답 속도가 늦어진다) - 쓰레드는 컨텍스트 스위칭 비용이 발생한다. - 쓰레드 생성에 제한이 없다. (고객 요청이 많이와서 CPU 할당량을 .. 2023. 8. 1.
웹 서버, 웹 어플리케이션 서버, 서블릿 웹 서버(Web Server) 1. HTTP 기반으로 동작 2. 정적 리소스 제공, 기타 부가기능 3. 정적 HTML, CSS, JS, 이미지, 영상 예) NGINX, APACHE 웹 어플리케이션 서버(WAS, Web Application Server) 1. HTTP 기반으로 동작 2. 웹 서버 기능 포함 (+ 정적 리소스 제공 가능) 3. 프로그램 코드를 실행하여 어플리케이션 로직 수행 - 동적 HTML, HTTP, API(JSON) - 서블릿, JSP, 스프링 MVC 예) 톰캣(Tomcat), Jetty, Undertow 웹 서버, 웹 어플리케이션 서버(WAS 차이) 1. 웹 서버는 정적 리소스 파일, WAS는 어플리케이션 로직 2. 사실 둘의 용어도 경계도 모호함 - 웹 서버도 프로그램을 실행하는 .. 2023. 8. 1.
프록시 캐시, no-cache vs must-revalidate 프록시 캐시 Cache-Control 캐시 지시어 - 기타 1. Cache-Control: public 응답이 public 캐시에 저장되어도 된다. 2. Cache-Control: private 응답이 해당 사용자만을 위한 것이다. private 캐시에 저장해야 한다. (기본값) 3. Cache-Control: s-maxage 프록시 캐시에만 적용되는 max-age 4. Age: 60 (HTTP 헤더) 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간 캐시를 원서버에서 미리 적재를 해놓거나 누군가 자주 접근한 리소스인 경우 빠르게 접근이 가능하다. 캐시 무효화 1. Cache-Control: no-cache, no-store, must-revalidate 2. Pragma: no-cache HTTP .. 2023. 8. 1.
캐시 기본 동작, 조건부 요청 캐시 기본 동작 캐시가 없을 때 1. 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 2. 인터넷 네트워크는 매우 느리고 비싸다. 3. 브라우저 로딩 속도가 느리다. 4. 느린 사용자 경험 캐시 적용 1. 캐시 덕분에 캐시 가능 시간 동안 네트워크를 사용하지 않아도 된다. 2. 비싼 네트워크 사용량을 줄일 수 있다. 3. 브라우저 로딩 속도가 매우 빠르다. 4. 빠른 사용자 경험 캐시 시간 초과 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고 캐시를 갱신한다. (네트워크 다운로드) 검증 헤더와 조건부 요청 캐시 유효 시간이 초과해서 서버에 다시 요청하는 상황은 다음과 같다. 1. 서버에서 기존 데이터를 변경함 2. 서버에서 기존 데이터를 변경하지 않음 검증.. 2023. 8. 1.
쿠키(Cookie) 쿠키 1. Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답) 2. Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달 쿠키 미사용시, 로그인 한 이후에도 사용자 정보가 저장이 안 되는 모습을 볼 수 있다. 모든 요청과 링크에 사용자 정보를 포함하면? 귀찮고 보안 이슈 발생, 브라우저 종료 후 다시 열면? 예) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure 1. 사용처 - 사용자 로그인 세션 관리 - 광고 정보 트래킹 2. 쿠키 정보는 항상 서버에 전송됨 - 네트워크 트래픽 추가 유발 - 최소한의 정보만 사용(세션 i.. 2023. 8. 1.
헤더 일반 정보, 특별 정보 헤더 일반 정보 1. From: 유저 에이전트의 이메일 정보 2. Referer: 이전 웹 페이지 주소 3. User-Agent: 유저 에이전트 애플리케이션 정보 4. Server: 요청을 처리하는 오리진 서버의 소프트웨어 정보 5. Date: 메시지가 생성된 날짜 From 유저 에이전트의 이메일 정보 1. 일반적으로 사용되지 않음 2. 검색 엔진 같은 곳에서 주로 사용 3. 요청에서 사용 Referer 이전 웹 페이지 주소 1. 현재 요청된 페이지의 이전 웹 페이지 주소 2. a => b로 이동하는 경우, b를 요청할 때 Referer: a를 포함해서 요청 3. Referer 정보를 통해 유입 경로 분석 가능 4. 요청에서 사용 User-Agent 유저 에이전트 애플리케이션 정보 예시)user-agen.. 2023. 8. 1.
Content Negotiation, 전송 방식 협상(콘텐츠 네고시에이션) 클라이언트가 선호하는 표현 요청 1. Accept: 클라이언트가 선호하는 미디어 타입 전달 2. Accept-Charset: 클라이언특 선호하는 문자 인코딩 3. Accept-Encoding: 클라이언트가 선호하는 압축 인코딩 4. Accept-Language: 클라이언트가 선호하는 자연언어 *협상 헤더는 요청시에만 사용한다. 전송 방식 설명 단순 전송 압축 전송 분할 전송 범위 전송 출처: HTTP 웹 기본 지식 강의(김영한) 2023. 8. 1.
HTTP 헤더 HTTP 헤더 1. HTTP 전송에 필요한 모든 부가정보 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리정보 등 2. 표준 헤더가 많다. https://en.wikipedia.org/wiki/List_of_HTTP_header_fields 3. 필요시 임의의 헤더 추가 가능 예) helloworld: hihi HTTP BODY RFC7230 버전(최신) 1. 메시지 본문(message body)을 통해 표현 데이터 전달 2. 메시지 본문을 페이로드(payload)라고 한다. 3. 표현은 요청이나 응답에서 전달할 실제 데이터 4. 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공 - 데이터 유형(html, json), 데이터 길이, 압축 정보 등등.. 2023. 8. 1.
상태코드 400, 500 4xx (Client Error) 1. 클라이언트의 요청에 잘못된 문법 등으로 서버가 요청을 수행할 수 없음. 2. 오류의 원인이 클라이언트에게 있다. 3. 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에 똑같은 재시도가 실패한다. 400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음 1. 요청 구문, 메시지 등등 오류 2. 클라이언트는 요청 내용을 다시 검토하고, 보내야 한다. 예) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때 401 Unauthorized 클라이언트가 해당 리소스에 대한 인증이 필요함 1. 인증(Authentication) 되지 않음 2. 401 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설.. 2023. 8. 1.