[SW 코칭 - WEB MVC] 5/6 주차

hyelim·2023년 8월 21일
0

SW 코칭 회고

목록 보기
5/5
post-thumbnail

아직 작성중인 글입니다 :) 불완전한 내용이 포함되어 있을 수 있습니다 ✔️

사용자 친화적인 오류 처리

스프링에서 오류를 처리하는 방법은 아래의 2가지가 있습니다

  • 디스패처 서블릿 내부(프론트 컨트롤러) 에서 HandlerExceptionResolver 컴포넌트로 해결
    • 뷰리졸버와 비슷, 상황을 해결해주는 역할

      스프링은 컴포넌트의 이름을 의인화를 많이함

    • 예외를 처리할 수 있는 존재

  • 서블릿컨테이너의 오류 처리 전략을 등록해 해결(디스패처 서블릿 전에)
    • 서블릿 컨테이너의 오류 처리 전략
    • 디스패처 서블릿이 처리하다가 예외 받으면 서블릿 컨테이너가 적절한 Path 로 리다이렉트 시켜줌

먼저 서블릿 컨테이너의 오류 처리 전략부터 알아보자

웹 애플리케이션에서 오류가 발생하면 BasicErrorController가 해당 오류를 캐치하여 처리하게 된다. 이 컨트롤러는 오류 페이지도 제공하는데 이 error controller 는 errorviewresolver, errorattributes 로 구성되어있고 스프링 내부적으로 잘 짜여진 에러 처리 전략을 가지고 작동한다고 합니다

ErrorAttributes를 적절히 이용하면 사용자 친화적인 에러 처리가 가능합니다. 특히나 데코레이터 패턴을 활용하면 가능하다고 합니다

데코레이터 패턴이란?

  • 주어진 상황 및 용도에 다라 어떤 객체에 책임을 덧붙이는 디자인패턴
  • 책임을 덧붙일때 상속, 합성을 사용(합성이 권장됨)

따라서 이번 강의에서 DefaultErrorAttributes 를 합성해서 ReadableErrorAttributes 라는 사용자 친화적인 에러 처리를 위한 클래스를 만들었습니다

MessageSource

MessageSource 기반으로 에러 메시지를 가공하는 방법에 대해서도 배웠습니다

이 모든 과정을 거치며 역시나 중요한 것은 변경에는 닫혀있지만 확장에는 열려있다(OCP) 라는 것을 깨달았습니다

국제화(internationalization,il8n) 와 지역화(localization,l10n)

국제화는 소프트웨어가 언어 및 문화권 등이 다른 여러환경을 지원할 수 있도록 소프트웨어를 설계하는 것

지역화는 소프트웨어를 각 환경에 대해 지원하는 것을 의미하며 언어외에도 문자열 출력형식, 화폐, 날짜, 측정 단위, 타임존, UI, OS/플랫폼 등 다양한 요소를 고려해야한다

그 중에서도 국제화에 대해 살펴보자

국제화(i18n)

웹 환경에서는 Accept-Language 콘텐트 협상 매커니즘을 기반으로 작동합니다

예를 들어 Accept-Language : en-US 는 영어 국가권의 미국꺼를 달라는 의미입니다

한편 앞서 말한 MessageSource는 국제화를 염두에 두고 설계되었다고 합니다.
따라서 messages.properties, messages_ko.properties, messages_en.properties 처럼 언어별로 설정파일을 달리하면 스프링부트의 설정에 의해 웹서버의 언어 설정에 따라 에러메시지가 출력된다고 합니다

로그인, 로그아웃

인증과 인가

인증단계는 사용자의 신원을 확인(학교 통과시 학생증 보여주는 과정)

인가단계는 신원이 확인된 사용자에게 리소스에 접근할 수 있는 권한을 부여(학교 안에서 허가된 곳만 들어갈 수 있다, 어디에 접근할 수 있는 권한이 없다 - 인가)

에러처리

로그인 과정에서 사용자를 찾지 못했거나 비밀번호가 틀렸으면 아래와 같이 ExceptionHandler 애노테이션을 활용해 에러 처리를 진행하는 과정을 경험

서버와 클라이언트 간의 데이터 통신 방식, SSE

서버와 클라이언트 간의 데이터 통신 방식에는 크게 3가지가 존재합니다

  • 폴링 방식(클라이언트에서 1초에 한번씩 폴링(찌름)) - 서버가 힘들어함
  • 롤폴링 - 서버에 요청을 하면 서버가 커넥션을 가지고있다가 응답해줄게 있으면 응답해주고 특정 시간이 지나면 연결끊음(약10초) - 서버가 커넥션을 물고있어야한다는 단점, 커넥션이 비효율적, 유저가 백만명이 되면 서버의 개수가 많아야함
  • 푸쉬기술(현재- SSE)- 서버에서 클라이언트로 데이터를 보내줌

SSE 기술은 마지막 푸쉬기술을 활용한 예제로 이 기술도 수업시간에 다뤘다

쿠키, 세션, 토큰을 통한 인증방식

모바일클라이언트환경에서는 세션,쿠키를 쓰기가 어렵기 때문에 토큰을쓰는게 합리적이며
웹 환경의 경우 세션과 세션스토리지를 쓰면 훨씬 효율적일 수 있다는 의견도 들었습니다
따라서 인증방식을 처리할때는 다양한 방식들을 검토해보고 명확하게 사용해야한다

profile
기록용

0개의 댓글