hongcheol / CS-study

cs지식을 정리하는 공간
MIT License
248 stars 30 forks source link

[면접 질문] 스프링, WS & WAS #140

Open hongcheol opened 3 years ago

hongcheol commented 3 years ago

스프링을 사용해야하는 이유가 뭐라 생각하시나요?

(금융권) 답변 키워드(테스트, 객체지향, 확장 용이, 변화에 대응)

저는 스프링이 테스트가 용이한 프레임워크이기 때문에 사용해야한다고 생각합니다.

JUnit과 같은 도구를 이용해서 테스트가 용이합니다. 테스트가 용이하면, 개발자는 문제가 생겼을 때, 어디에 집중해야하는지 쉽게 알 수 있으며, 기존의 테스트 코드를 가지고 있으면, 요구사항에 변경이 생겼을 때, 수정한 부분 이외에는 다른 부분들은 정상적으로 작동한다는 확신을 가질 수 있다는 장점이 있습니다. 이런 장점은 자연스럽게 객체들을 관심사별로 분리할 수 있게 도와주고, 애플리케이션을 객체지향스럽게 작성할 수 있다고 생각하기 때문에, 스프링을 사용해야한다고 생각합니다.

추가했으면 좋았을 내용

객체지향스럽게 프로그래밍을 하기에 용이하다. 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IoC/DI 같은 기술을 통해 객체지향 프로그래밍 언어의 근본과 가치를 개발자가 손쉽게 적용하고 사용할 수 있게 도와주는 도구입니다.

web server와 WAS의 차이점

(금융권) 답변 키워드(동적 컨텐츠, 정적 컨텐츠)

이 둘의 가장 큰 차이점은 "동적인 컨텐츠를 다룰 수 있는가?"입니다.

웹서버는 처리할 수 있는 데이터가 html, css, 이미지 등 정적인 데이터로 한정됩니다.

웹 어플리케이션에서 정적인 데이터가 아닌 동적인 컨텐츠까지도 쓰기 위해서는 웹 어플리케이션 서버가 필요합니다.

웹 어플리케이션 서버는 웹 서버에 웹 컨테이너를 붙인 형태입니다. WAS를 사용해서 클라이언트가 서버로부터 데이터를 받는 방식은 다음과 같습니다.

  1. 클라이언트가 웹 서버에 데이터를 요청합니다.
  2. 웹 서버에서는 동적 컨텐츠인지를 확인합니다. 2-1 동적 컨텐츠라면 웹 컨테이너로 전송합니다. 2-2 정적 컨텐츠라면 클라이언트에게 데이터를 전송합니다.
  3. 동적 컨텐츠를 전송받은 웹 컨테이너는 Servelet 구동환경을 제공합니다.
  4. 제공받은 환경에서 동적 컨텐츠를 생성하고 이를 웹서버에 넘겨줍니다.
  5. 넘겨받은 동적 컨텐츠를 클라이언트에게 전송해줍니다.

참고 자료

cf) 컨테이너 : jsp나 servlet을 수행 시킬 수 있는 소프트웨어를 의미합니다. 자바에서는 이를 웹 어플리케이션 컨테이너라고 부릅니다. 이는 간단하게 말해서 웹 앱이 배포되는 공간이라고 생각하시면 됩니다.