목록이론 (33)
오봉이와 함께하는 개발 블로그
MVC 패턴 - 개요 서블릿, JSP 문제 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하면 너무 많은 역할을 하게 되는데, 결과적으로 유지보수가 너무 어려워지는 문제가 생긴다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 고쳐야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 한다. HTML 코드 하나 수정해야 하는데 수 많은 자바 코드가 함께 있거나 비즈니스 로직 하나를 수정해야 하는데 수 많은 HTML 코드가 함께 있다고 생각하면 골치 아프다. 변경의 라이프 사이클 또, 둘 사이 변경의 라이프 사이클이 다르다는 점이 문제다. 예를 들어 UI를 변경하는 일과 비즈니스 로직을 변경하는 일은 각각 다르게 발생할 가능성이 매우 높고 대부분..
자바 백엔드 웹 기술 역사 과거 기술 서블릿 - 1997 TCP/IP 연결, 멀티 쓰레드 등 신경 쓸 부분이 너무 많아서 탄생 자바 코드로 짜야하기 때문에 동적인 HTML 생성이 어렵다. JSP - 1999 HTML, 자바 코드 모두 작성가능 HTML 생성은 편리하지만, 비즈니스 로직까지 너무 많은 역할을 담당했다. JSP 한 파일에 너무 많은 코드가 있어 유지보수 거의 불가능 서블릿, JSP 조합 MVC 패턴 사용 모델, 뷰, 컨트롤러로 역할을 나누어 개발 비즈니스 로직과 화면을 나눠서 개발했다. MVC 프레임워크 춘추 전국 시대 - 2000년 초 ~ 2010년 초 MVC 패턴 자동화, 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능을 지원하기 시작 스트럿츠, 웹워크, 스프링 MVC(과거 버전)..
HTML, HTTP API, CSR, SSR 정적 리소스 웹 서버에서 제공한다. 이미 생성된 리소스 파일(HTML 파일, CSS, JS, 이미지, 영상 등)을 제공한다. 주로 웹 브라우저에서 요청한다. HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달한다. 뷰 템플릿(JSP, 타임리프 등)을 통해 생성한다. 웹 브라우저는 HTML을 해석한다. HTTP API HTML이 아니라 데이터를 전달한다. 주로 JSON 형식을 사용한다. 다양한 시스템에서 호출한다. 다양한 시스템에서 호출한다. 데이터만 주고 받는다 UI가 필요하면 클라이언트가 별도로 처리한다. 앱, 웹 클라이언트, 서버 to 서버에서 사용한다. HTTP API 정리 주로 JSON 형태로 데이터를 통신한다. UI 클라이언트 접점이 있다...
웹 서버, 웹 애플리케이션 서버 웹은 HTTP 기반으로 통신을 한다. HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송 가능하고 모든 것을 HTTP 메시지에 전송한다. 서버간 데이터를 주고 받을 때도 대부분은 HTTP를 사용한다. 웹 서버(Web Server) HTTP 기반으로 동작한다. 정적 리소스, 기타 부가 기능을 제공한다. HTML, CSS, JS, 이미지, 영상 등의 파일 등이 정적 리소스다. 특정 디렉토리에 정적 리소스를 두면 서버는 요청한 클라이언트에 서빙을 한다. 대표적으로 Nginx, Apache가 있다. 웹 애플리케이션 서버(Web Application Server - WAS) HTTP 기반으로 동작한다. 웹 서버 기능을 대부분..
캐시와 조건부 요청 헤더 캐시 제어 헤더 Cache-Control : 캐시 제어 Pragma : 캐시 제어(하위 호환) Expires : 캐시 유효 기간(하위 호환) Cache-Control 캐시 지시어(directives) Cache-Control: max-age 캐시 유효 시간 초 단위 입력 Cache-Control: no-cache 캐시를 하지 않는다. 하지만 no-cache여도 데이터는 캐시해도 된다. 그러나 항상 원래(origin) 서버에 변경된 것이 없는지 검증을 하고 사용해야 한다. If-Modified-Since(혹은 If-Unmodified-Since) or If-Match(혹은 If-None-Match)를 통해 항상 검증하고 사용해야 한다는 뜻 캐시 서버나 프록시 서버에서 검증받으면 안..