til(12_18)

김태은·2024년 12월 18일

til



본론에 앞서

정말 오랜만에 til 이다.

과제 때문에 til을 쓸 시간이 없어서 매번 못 쓰고 있었는데, 이번 과제를 위해 필요로 하는 강의의 양이 전의 강의보다 상대적으로 많이 줄어서, 과제를 빨리 끝낼 수 있었다.

이번 과제는 저번 과제의 데이터베이스 관리에 쓰는 기술과 인증 기능 그리고 검증 기능 등을 추가한 과제였다.

해당 과제도 이전 과제랑 마찬가지로 lv별로 과제의 요구사항을 다르고, 난이도 또한 다르다.

이번 과제에서 내가 중점적으로 해본 것은

    1. git commit convention 과 git branch 를 lv별로 나누어 관리
    1. 요구사항에 맞는 정확한 코드짜기 였다.

두가지 모두 전 과제에서 내가 만족하지 못하였기에 이번 과제에서 더 열심히 한 것 같다.



전반적인 흐름

이전 과제와 더불어 이번 과제에서 필요로 하는 개념에 전반적인 흐름을 적어보려한다.

  1. 클라이언트 가 API 요청을 보낸다(받는다).
  2. 요청은 서버에 들어가 WAS 로 흘러 들어간다. WAS는 HTTP 요청을 받아서 처리하고, 그에 대한 응답을 다시 클라이언트로 보내는 역할을 한다.
    2_1. 그리고 Servlet 컨테이너의 일부로써 servlet을 실행시킨다. WAS로 내가 아는 것은 톰캣 이 있다.
    2_2.WAS는 세션 관리의 역할을 함으로 써,인증 인가의 역할을 맡게 되어 해당 부분은 java spring 에서 필터의 역할을 맡게 된다.
  3. 필터를 거쳐 DispatcherServlet 에 HttpMessageConverter 에 의 클라이언트의 요청 데이터가 java 객체로 변환(역직렬화) 된다.
    3_1. DispatcherServlet는 controller 로 데이터가 가기전에 데이터를 가지고와 위처럼 데이터를 변환해준다.
  4. 객체가 된 요청 데이터는 RequestDTO 에 담겨져 Controller 에 의해 찾은 알맞은 API 요청 과정을 따른다.
    4_1. 컨트롤러는 requestDto의 데이터를 검증할 수 있다.
    4_2. 요청 url 을 통해(Path) spring에서 데이터를 얻을 수도 있고, 요청 데이터(Body) 에서 얻을 수 있다. 또한 요청 url에서 데이터베이스 조건문을 사용하는 부분이 무엇인지도 알 수 있다.
  5. 비지니스 로직을 담당하는 Service 까지 오게되고, 필요한 데이터 처리를 하게된다.
    5_1. 서비스 파트는 연산의 결과에 대한 예외처리를 해줘야한다.
  6. 비지니스 로직에 연산 결과를 repository 에 저장한다.
    6_1. 저장을 할 적에 쓰이는 기술도 여러가지이고, 담는 역할을 하는 데이터베이스 또한 여러가지이다.
    6_2. 기술은 JPA , JDBC 등이 있고, JPA 는 사용하기 매우 힘든 JDBC를 포함하여, 이를 더 쉽게 사용할 수 있게 해준다.

ps 해당 과정은 왕복되는 과정이나 왕복과정에서 역할을 쓰기 애매한 경우가 있어, 설명 받는 주체를 기준으로 요청이 들어오는 것과 응답을 보내는 부분의 역할을 함께 적었다.

더 큰 흐름

스프링으로 개발을 할 적에 MVC 와 3layer 라는 말을 자주 들을 수 있게 된다.

우선 MVC 와 3layer의 역할은 비슷하면서도, 비슷하지 않다.

MVC와 3layer

  • MVC

model view controller 를 가지고, 서로에 역할 군에 맞게 역할을 다 하되, 데이터를 주고 받을 수 있는 경우? 데이터를 주거나 받을 애가 정해져 있다.

controller - > model - > view

MVC 와 3layer 의 차이는 view에 있다고 말할 수 있다.

view 는 시각적으로 보여주는 역할로 웹페이지를 말한다. 그말은 즉, 3layer에는 해당 기능이 없거나, 다른 것으로 대체한다는 말이다.

우선 내용을 이어가자면,

controller에서 받은 요청에 따라 필요 데이터를 model에서 가지고와 view로 뿌려준다.

이때, SSR ,CSR 이라는 개념이 나온다

SSR(Server Side Rendering) : 서버에서 이용할 html을 미리 만들어 요청마다 html을 바꿔끼워주 듯이 보여주는 방법이다.

CSR(Client Side Rendering) : 위와는 다르게 비동기식으로 실시간으로 변동에 대해 웹페이지의 일부가 변동에 적용되어 페이지를 보여준다. - 이때 javascript 를 쓴다.

CSR - ajax 라는 개념과 SPA 라는 개념도 같이 알아 두면 좋다.

  • 3layer

controller , service , repository 로 구성이 된다.

service 비지니스 로직.. 계산하는 아이 , repository 저장db와 소통하는 아이

자 간략적으로 두개의 소개는 끝났고, 다른점을 말하자면

  • 차이점

3layer 는 프론트앤드 와 같이 협업함으써 MVC에서 만든 view 에 대해 고려없이 비지니스 로직에만 집중 할 수 있다.

3layer 에서의 프론트앤드는 CSR 을 채용하는 반면, MVC는 SSR을 채용한다.

SPA 참고링크
SCR SSR 참고링크

회고

생각보다 배운 것은 많지만, 한번 쓰려하니 어디서 부터 적어야할지 감이 안잡힌다..;

내일부터는 주제를 정하고 til을 작성해야겠다

profile
Spring_4

0개의 댓글