본문 바로가기

분류 전체보기58

[Web] HTML -> Servlet, JSP -> Spring 🎈 Servlet이란? 위와 같은 HTTP 규약에 맞는 요청과 응답을 개발자가 직접 작성하지 않고 메서드 호출로 편리하게 사용할 수 있도록 해주는 프로그램. Servlet Container: 서블릿들을 담고 있는 컨테이너. 서블릿의 생성, 호출, 소멸의 생명주기를 관리. ex) Apache Tomcat 클라이언트가 요청을 하면 서블릿 컨테이너는 서블릿 객체를 생성하고, 초기화하고, 요청에 대한 처리를 반복한다. 생성과 초기화는 한 번만 한다. dynamic web project 생성하고 maven 프로젝트로 변경 서블릿 생성. 서블릿과 매핑할 디폴트 url은 클래스 명이고 url을 변경할 수 있다. BoardController BoardController com.test.board.controller.B.. 2024. 3. 20.
AWS CodeDeploy, Docker 이용한 무중단 배포 🎈 배포 구조 기능과 관련된 부가적인 외부 API 등은 제외하고 대략적인 구조는 다음 그림과 같게 된다. 배포는 Github Actions, Codedeploy를 통해서 하고, 요청이 왔을 때는 AWS ALB에서 SSL 처리를 하고, NginX에서는 blue, green 중 작동 중인 포트로 요청을 보내는 방식으로 무중단 배포가 구현된다. 배포 흐름 1. 깃허브 디폴트 브랜치에 변경 내용 커밋 2. Github workflow가 java 프로젝트를 빌드 3. Codedeploy, S3 접근이 가능한 IAM 키를 알고 있는 Github workflow가 S3에 빌드 파일을 업로드하고, Codedeploy로 배포 요청 4. Codedeploy가 appspec.yml에 따라 지정한 hook 시점에 script.. 2024. 2. 28.
Spring Filter & Interceptor 핵심 로직: 관심 사항을 분리함으로써 코드를 간결하게 작성할 수 있음. 관심 사항을 분리하기 위해 스프링 AOP를 사용할 수도 있지만 웹과 관련된 관심사항은 필터나 인터셉터를 이용하는 것이 좋다. 🎈 서블릿 필터 J2EE 표준 스펙으로 Servlet API 2.3부터 등장하였고 Dispatcher Servlet에 요청이 전달되기 전, 후에 부가작업을 처리하는 객체. - 요청이 들어올 때는 서블릿 전에 필터가 실행, 응답을 보낼 때는 서블릿이 실행된 다음에 필터가 동작함. 즉, 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너(서블릿 컨테이너)에 의해 관리되는 것(스프링 빈으로 등록은 된다). Filter의 역할 Filter는 클라이언트의 요청과 서버의 응답을 중간에서 가로채는 역할을 합니다. 요청이 서블릿.. 2024. 2. 28.
Spring RestTemplate vs WebClient 🎈 RestTemplate vs Webclient RestTemplate thread-per-request 모델에 기반하는 Java Servlet API를 사용함.-> Synchronous & Blocking 클라이언트가 응답을 받을 때까지 thread가 블럭 상테임. 메모리와 CPU cycle을 소모하는 것으로 인한 block code의 단점이 발생함. 결과적으로 애플리케이션이 많은 스레드를 생성하고, 이것은 사용 가능한 메모리를 모두 점유하거나 스레드 풀을 소모할 수 있음. WebClient Spring Reactive 프레임워크가 제공하는 Asynchronous, non-blocking 방식을 사용함. RestTemplate은 각 HTTP 요청마다 thread를 호출하고, WebClient는 HTT.. 2024. 2. 27.