🍿 강의수강

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 8. 예외 처리와 오류 페이지 - DispatcherType과 인터셉터

1. DispatcherType과 인터셉터실습LogInterceptorpackage me.progfrog.exception.interceptor;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import lombok.extern.slf4j.Slf4j;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import java.util.UUID;@Slf4jpublic class LogInterceptor implements HandlerInter..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 8. 예외 처리와 오류 페이지 - DispatcherType과 필터

1. DispatcherType1. WAS(여기까지 전파!!) 2. WAS(/error-page/500 다시 요청) -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러(/error-page/500) -> View예외가 발생해서 WAS까지 전파된다.WAS는 오류 페이지 경로를 찾아서 내부에서 오류 페이지를 호출한다. 이때 오류 페이지 경로로 필터, 서블릿, 인터셉터, 컨트롤러가 모두 다시 호출된다.그런데, 로그인 인증 체크 같은 경우를 생각해 보면, 이미 필터나 인터셉터에서 로그인 체크를 모두 완료했다.따라서 서버 내부에서 오류 페이지를 호출한다고 해서 해당 필터나 인터셉터가 한번 더 호출되는 것은 매우 비효율적이다.결국 클라이언트로부터 발생한 정상 요청인지, 아니면 오류 페이지를 출력하기 위한 내부 요청..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 8. 예외 처리와 오류 페이지 - 서블릿 예외처리

1. 프로젝트 생성 우선, 스프링이 아닌 순수 서블릿 컨테이너는 어떻게 예외 처리를 하는지 알아보자!서블릿은 다음 2가지 방식으로 예외 처리를 지원한다.Exception(예외)response.sendError(HTTP 상태 코드, 오류 메시지) 2. Exception(예외)개요자바 직접 실행자바의 메인 메서드를 직접 실행하는 경우 main이라는 이름의 쓰레드가 실행실행 도중에 예외를 잡지 못하고, 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료됨 웹 애플리케이션웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행됨애플리케이션에서 예외가 발생했는데, 예외를 잡지 못하고 서블릿 밖까지 예외가 전달된다면...?WAS(여기까지..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 7. 로그인 처리 2 - 필터, 인터셉터

1. 서블릿 필터 - 소개등록, 수정, 삭제, 조회 등 모든 컨트롤러 로직에서 공통으로 로그인 여부를 확인해야 한다.이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(cross-curring concern)라고 한다.등록, 수정, 삭제, 조회 등 여러 로직에서 공통으로 '인증'에 대해서 관심을 가지고 있다.공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL의 정보들이 필요한데, 서블릿 필터나 스프링 인터셉터는 HttpServletRequest를 제공한다.필터는 서블릿이 지원하는 수문장이다! 필터 흐름필터를 적용하면 필터가 호출된 다음..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션6. 로그인 처리 1 - 쿠키, 세션

1. 패키지 구조 설계hello.logindominitemmemberloginwebitemmemberlogin도메인이 가장 중요하다!도메인: 화면, UI, 인프라 등 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함향후 web을 다른 기술로 바꾸어도, 도메인은 그대로 유지할 수 있어야 한다.이렇게 하려면, web은 domain을 알고 있지만 domain은 web을 모르도록 설계해야 한다.web은 domain에 의존하지만, domain은 web을 의존하지 않는다.즉, web 패키지를 모두 삭제해도 domain에는 전혀 영향이 없도록 의존관계를 설계하는 것이 중요하다. 아키텍처와 의존성1. 아키텍처(architecture)란?소프트웨어 시스템의 아키텍처란, 시스템을 구축했던 사람들이 만들..

🍿 강의수강/카프카활용

[카프카활용] 챕터 8. Docker

1. Docker 개요 [도커] 어바웃 가상화 그리고 도커 핵심 정리0. 강추 추천 강의 개발자를 위한 쉬운 도커 | 데브위키 - 인프런데브위키 | 현업 개발자가 도커를 사용한 경험을 녹여낸 새로운 커리큘럼으로 기존 교재 및 강의와 차별된 강의를 제공합니다.progfrog.tistory.com 2. 전체 프로젝트 Docker 이미지 생성./gradlew clean build -x test ./gradlew이 명령어는 현재 디렉토리에 있는 Gradle Wrapper를 실행합니다. Gradle Wrapper는 프로젝트에 포함된 Gradle 버전을 사용하여 Gradle 빌드를 실행하는 스크립트입니다. 이것은 프로젝트가 Gradle을 설치하지 않은 경우에도 Gradle 빌드를 가능하게 합니다.clean이 옵션은..

🍿 강의수강/카프카활용

[카프카활용] 챕터 7. Nginx

개요이번에는 프록시 서버를 구현해보자!원래는 프로젝트 내에서 Spring Clound Gateway를 사용해서 프록시 서버를 구현하려고 하였으나,코틀린 버전 이슈가 있었고범용적으로 사용되는 프록시 서버 중에 가장 많이 사용되는 것이 Nginx그래서 Nginx를 프록시 서버로 사용해보려고 하고, Docker를 사용해서 Nginx 컨테이너를 띄우면, 요청을 보냈을 때 요청을 프록시를 해서 다른 서버로 보내는 역할을 하게 된다. Nginx란? Nginx 구조Nginx 개요 기존 방식에서는 사용자 요청은 스레드 갯수로 따져가며 설계되다보니 많은 CPU, 메모리 자원이 활용되었다. 최근엔 동시접속자 수가 점점 늘어나고 있다보니 서버의 자원은 점점 느는naeti.tistory.com러시아에서 만들어진 웹 서버 프로..

🍿 강의수강/카프카활용

[카프카활용] 챕터 6. Redis 사용

Redis 개요redis는 대출 관련 도메인보다 다른 도메인에서 많이 사용한다.사실 대출은 유저별로 개인화가 되어있고, 대출 요청을 여러 번 하는 경우가 별로 없기 때문에 캐시를 사용하더라도 캐시 히트율이 낮아서 큰 효율을 발휘하기는 어렵다.대출 상품들을 초기 화면에 쫙 뿌려줄 때는, 모든 유저가 동일한 화면을 보고 캐시 히트율도 높고 좋다.같은 데이터를 여러 번 조회했을 때 효율이 얼마나 잘 나오는지 테스트차 사용해 보자!같은 요청이 반복적으로 들어오는 API들은 이런 캐시처리를 해주는 것이 괜찮겠다-하고 다른 프로젝트할 때 참고하도록 하자.스프링에서 메모리를 잡아서 캐시를 제공(스프링 캐시) 하기도 한다.그러나 대부분의 서버는 서버를 한 대만 이용하지 않는다.그래서 공통적으로 사용하는 redis라는..

🍿 강의수강/카프카활용

[카프카활용] 챕터 5. CSS 모듈

1. CB사 모듈 개발 연동CssApplication이것도 웹 서버가 떠서, 요청 오는 다양한 API를 처리해 줄 수 있어야 한다.package happyprogfrog.cssimport org.springframework.boot.autoconfigure.SpringBootApplicationimport org.springframework.boot.runApplication@SpringBootApplicationclass CssApplicationfun main(args: Array) { runApplication(*args)} build.gradle.ktsplugins {}version = "0.0.1"dependencies { implementation("org.springframewor..

🍿 강의수강/카프카활용

[카프카활용] 챕터 4. 카프카 구현하기

1. Kafka 개요링크드인에서 개발아파치 재단에서 운영하고 있는 플랫폼 Message Oriented Middleware미들웨어란?시스템이나 컴포넌트 사이에서 중간자 역할을 해주는 것두 시스템이 너무 강하게 연결되어 있으면, 서로의 의존성이 높기 때문에 미들웨어가 존재한다.ex) 서버  A - 서버 B가 강한 결합을 가지고 있다고 할 때, 서버 A 장애 시 서버 B에 전파됨따라서, 느슨한 결합이 필요하다.이런 완충재 역할을 하는 것이 '미들웨어'이고, '메시지에 기반했다'라고 해서 Message Oriented Middleware(MOM)라고 한다.메시지 큐를 사용하는 플랫폼: Kafka, RabbitMQ모놀리식 아키텍처에서 MSA로 변화되면서 이런 Kafka, RabbitMQ 같은 플랫폼의 수요가 늘..

프로그⸝⸝◜࿀◝ ⸝⸝
'🍿 강의수강' 카테고리의 글 목록