본문 바로가기

Spring boot15

PLANIT 리팩토링 - CI/CD 구축하기 PLANIT, ' 관광정보 공공데이터를 사용한 여행 정보 제공 서비스'를 만들었다. 그 중 내가 대표적으로 담당한 기능은 hotplace 게시글 기능이었다. 다녀온 관광지에 대한 후기를 작성할 수 있고, 그 후기를 지역 별로 모아보는 기능이었는데, 전체 조회 페이지에서 후기글에 담겨져 있는 사진을 모두 보여주다보니 고화질 사진을 업로드 하지 못하고 업로드 할 수 있는 사진 크기를 제한해야만 했다. 그래서 파일 업로드 기능을 AWS S3 + Lambda를 사용해 개선하기로 마음 먹었고, 그 김에 미루어두었던 CI/CD 공부를 함께 하며 AWS를 사용한 배포 환경을 더 완벽하게 구축해두고, 이후에 리팩토링을 진행해보기로 했다! S3 + Lambda를 제외하고 전체적으로 생각한 Build flow는 다음과 같.. 2024. 1. 3.
Spring Filter 예외처리 vs Interceptor 예외처리 Spring 기본 예외처리 방식 - BasicErrorController 서비스를 이용하던 도중 예외가 발생했다면 우리는 접속한 환경에 따라 다른 에러 처리를 받게 될 것이다. 만약 우리가 웹페이지로 접속했다면 다음과 같은 whiltelabel 에러 페이지를 반환받는다. Spring은 만들어질 때(1.0)부터 에러 처리를 위한 BasicErrorController를 구현해두었고, 스프링 부트는 예외가 발생하면 기본적으로 /error로 에러 요청을 다시 전달하도록 WAS 설정을 해두었다. 그래서 별도의 설정이 없다면 예외 발생 시에 BasicErrorController로 에러 처리 요청이 전달된다. 참고로 이는 스프링 부트의 WebMvcAutoConfiguration를 통해 자동 설정이 되는 WAS의 설정.. 2023. 5. 2.
Spring이 동시요청을 처리하는 방법 Spring과 멀티 스레드 멀티 스레드란, 일반적으로 하나의 프로세스에 하나의 스레드가 작업하는 것과 달리 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 것을 말한다. 우리가 웹 애플리케이션을 이용할 때 여러 Client의 요청이 날아왔을 때, 모든 사용자가 자신이 원하는 작업을 원활히 할 수 있는 이유는 멀티 스레드 때문이다. 만약 싱글 스레드 환경이라면, 웹 애플리케이션에 접속해 요청을 전달한 최초 사용자에게 응답을 보내기 전까지는 다른 사용자들이 해당 서비스를 이용할 수 없을 것이다. 때문에 대다수의 웹 서버는 멀티 스레드를 이용한다고 하며, Spring의 Tomcat 역시 이에 속한다. 즉, 요약하자면 Spring의 Tomcat을 포함한 대다수의 웹 서버는 멀티 스레드 방식을 따르고.. 2023. 5. 2.
Spring과 POJO POJO란 상속/implements 받아 메서드가 추가된 클래스가 아닌 일반적으로 우리가 알고 있는 getter, setter 같이 기본적인 기능만 가진 자바 객체를 말한다. 즉, 특정 기술에 종속되지 않는 순수한 자바 객체를 말한다. public class User { private int id; private String name; private String email; public int getId() { return id; } public String getName() { return name; } public String getEmail() { return email; } public void setId(int id) { this.id = id; } public void setName(Strin.. 2023. 5. 1.
Spring Filter vs Interceptor vs AOP 자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등의 공통적으로 처리해야 할 업무들이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 이러한 이유 때문에 공통 부분은 빼서 따로 관리를 하는 것이 좋다. 이러한 공통 처리를 위해 활용할 수 있는 기술은 Filter, Interceptor, AOP가 있다. Filter 필터(Filter)는 J2EE 표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet.. 2023. 5. 1.
Servlet과 Front Controller Servlet 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술을 말한다. 쉽게 말해 클라이언트의 요청에 맞춰 동적인 결과를 만들어 주는 자바 웹 프로그래밍 기술이라고 할 수 있는 것인데, WAS내의 서블릿 컨테이너에서 동작하며, 요청(Request)을 받으면 요청에 맞는 로직을 실행하고 클라이언트에게 HTTP 형식으로 응답(Response)하게 된다. 클라이언트가 웹 서버에 요청하면 웹 서버는 그 요청을 톰캣과 같은 WAS에 위임한다. 그러면 WAS는 각 요청에 해당하는 서블릿을 실행한다. 그리고 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송한다. 1. 클라이언트 요청 2. HttpServletRequest, HttpSe.. 2023. 5. 1.