💡 프록시(Proxy) : '대리', '대신' 이라는 뜻을 가지며, 프로토콜에 있어서는 대리 응답 등에서 사용하는 개념이다. 💡 프록시서버 : 클라이언트와 서버 사이에 존재하며, 중계기로서 대리로 통신을 수행하는 것을 Proxy라고 하며, 그 중계 기능을 하는 주체를 Proxy Server라고 한다. 💛 프록시 서버 종류 포워드 프록시 : Client 와 Server 사이에 위치하여 요청을 중계하며, 요청과 응답은 Proxy Server를 거친다. 클라이언트를 감추는 효과가 있다. 💛 리버스 프록시 : 포워드 프록시와 마찬가지로 요청과 응답이 Proxy Server로 이동하는데, 포워드 프록시와 다르게 Server들이 주로 내부망으로 구성되며 프록시에게만 연결을 허용한다. 즉 서비스를 위한 보안 채널을 ..
💡 웹 서버 : 정적인 컨텐츠 (html, css, js)를 제공하는 서버이다. ex) Apache, Nginx 💛 역할 HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스하는 기능을 담당한다. 요청에 따라 아래의 두 가지 기능 중 적절하게 선택하여 수행한다. 기능 1) 정적인 컨텐츠 제공 WAS를 거치지 않고 바로 자원을 제공 기능 2) 동적인 컨텐츠 제공을 위한 요청 전달 클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response)한다. 클라이언트는 일반적으로 웹 브라우저를 의미한다. 💡 WAS(Web Application Server) : DB 조회나, 어떤 로직을 처리해야 하는 동적인 컨텐츠를 제공..
💡 SSL(Secure Socket Layer) 이란? : SSL은 Certificate Authority(CA)라고 불리는 곳에서 서버와 클라이언트의 인증을 하는데 사용됨. 즉 웹 서버와 클라이언트의 통신 암호화 프로토콜이다. HTTP 프로토콜 상위에 통신 시 보안을 위한 SSL 관련 프로토콜이 있는 방식이다. SSL이 적용되지 않은 통신의 경우, 위 그림과 같이 평문(Plain Text)가 그대로 전송된다. 만약 제 3자가 어떠한 방식으로든 통신 패킷을 탈취할 경우, 그 내용을 쉽게 확인할 수 있다. SSL을 적용할 경우 요청을 암호화해서 보내므로 통신 패킷이 탈취되도 복호화 키가 없으면 원래 내용을 알 수 없기 때문에 이러한 부분이 기술적으로 해결된다. 👉 HTTPS VS HTTP : HTTP는 H..
💡 자바 백엔드 웹 기술 역사 🧡 과거 기술 🧡 현재 사용 기술 애노테이션 기반의 스프링 MVC 등장 @Controller MVC 프레임워크의 춘추 전국 시대 마무리 스프링 부트의 등장 스프링 부트는 서버를 내장 과거에는 서버에 WAS를 직접 설치하고, 소스는 War파일을 만들어서 설치한 WAS에 배포 스프링 부트는 빌드 결과( Jar)에 WAS 서버 포함 -> 빌드 배포 단순화 🧡 최신 기술 - 스프링 웹 기술의 분화 Web Servlet - Spring MVC Web Reactive - Spring WebFlux 🧡 최신 기술 - 스프링 웹 플럭스(WebFlux) - 쓰레드의 수를 코어의 갯수와 같게 맞추거나 +1개정도로 맞춰서 최소 쓰레드로 최대 성능을 낸다. 그러므로 쓰레드 컨텍스트 스위칭 비용을..
💡 HTML, HTTP API, CSR, SSR 🧡 정적 리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공 주로 웹 브라우저 🧡 HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달 웹 브라우저 : HTML 해석 🧡 HTTP API HTML이 아니라 데이터를 전달 주로 JSON 형식 사용 다양한 시스템에서 호출 - 데이터만 내려줌! ✔ 다양한 시스템 연동 주로 JSON 형태로 데이터 통신 UI 클라이언트 접점 앱 클라이언트(아이폰, 안드로이드, PC 앱) 웹 브라우저에서 자바 스크립트를 통한 HTTP API 호출 React, Vue.js같은 웹 클라이언트 서버 to 서버 주문 서버 -> 걸제 서버 기업 간 데이터 통신 🧡 SSR - 서버 사이드 렌더링 : 서버에서 최종 HT..
💡 동시 요청 - 멀티 쓰레드 - 호출하는 것이 바로 쓰레드! 🧡 쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 어플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 🧡 요청마다 쓰레드 생성 장단점 장점 동시 요청을 처리할 수 있다. 리소스(CPU, 메모리)가 허용할 때까지 처리 가능 하나의 쓰레드가 지연되어도, 나머지 쓰레드는 정상 동작한다. 단점 쓰레드는 생성 비용이 매우 비싸다. 고객의 요청이 올 때마다 쓰레드를 생성하면, 응답 속도가 늦어진다. 쓰레드는 컨텍스트 스위칭 비용이 발생한다. 코어당 하나의 쓰레드 정도만 수행 가능한데,..
💡 서블릿 🧡 HTML Form 데이터 전송 POST 전송 - 저장 🧡 서버에서 처리해야 하는 업무 웹 어플리케이션 서버 직접 구현 🧡 서버에서 처리해야 하는 업무 서블릿을 지원하는 WAS 사용 - 비즈니스 로직 제외한 모든걸 서블릿에서 다 해줌. 🧡 서블릿 특징 urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행 HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRqeust HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse 개발자는 HTTP 스펙을 매우 편리하게 사용 - 웹 브라우저가 웹 어플리케이션 서버에 요청을 하면 request, response 객체를 생성한다. 🧡 서블릿 HTTP 요청, 응답 흐름 HTTP 요청 시 WAS는..
💡 웹 서버, 웹 어플리케이션 서버 🧡 웹 - HTTP 기반 🧡 모든 것이 HTTP HTTP 메시지에 모든 것을 전송 HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버 간에 데이터를 주고 받을 때도 대부분 HTTP 사용 지금은 HTTP 시대! 🧡 웹 서버 (Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 HTTP 프로토콜로 서로 데이터를 주고받을 수 있는 것 정적(파일) HTML, CSS, JS,이미지, 영상 EX) NGINX, APACHE 🧡 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공 가능) 프로그램 코드..
💡 학습 내용 정리 인터넷 네트워크 인터넷 통신 IP(인터넷 프로토콜) TCP, UDP PORT DNS URI와 웹 브라우저 요청 흐름 URI 웹 브라우저 요청 흐름 HTTP 모든 것이 HTTP 클라이언트 서버 구조 Stateful, Stateless 비 연결성(connectionless) HTTP 메시지 HTTP 메서드 HTTP API를 만들어보자 -> HTTP API 만들기 첫 시도 HTTP 메서드 - GET, POST HTTP 메서드 - PUT, PATCH, DELETE HTTP 메서드 속성 HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 HTTP API설계 예시 HTTP 상태 코드 HTTP 상태코드 소개 2XX 성공 3XX 리다이렉션1 - 영구 리다이렉션 3XX 리다이렉션2 - 일시 리다이..