인프런 커뮤니티 질문&답변

박민성님의 프로필 이미지
박민성

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

단순 호기심으로 인한 질문입니다!

작성

·

185

0

  1. 서블릿은 의존관계가 필요가 없는가?

고찰 : 1번질문은 사실 질문을 올려봤는데 질문에 대한 답변이없어서 묻힌거같아 한번더올려봅니다!

영한님께서도 다른분이 질문하셨을때 서블릿은 의존관계가 필요없다고 말씀하셨습니다. 그 이유를 한번 생각해봤는데, 의존관계라는게 쉽게말하면 객체가 다른객체를 알고있음을 말하는거같습니다. 서블릿도 결국 java기반의 웹프로그래밍을 동적으로 도와주는 객체라는것입니다. 다시말하자면 서블릿과 서블릿끼리 의존관계라는게 요청을 의미하는데 사용자가 다른사용자의 요청을 알고있어도 그냥 무덤덤하게 "아 저사람은 저걸시켰구나"라고 넘어갈수도있지만, 개인정보이기때문에 굳이 의존관계가 없어도됨을 나타내는거같습니다.

 

2.현업에 계신분들이 봤을때 메모리용량을 얼마나 설정해야하는지?

고찰 : 서블릿에 대하여 요청당 하나의 스레드라고 알고있습니다. 사용자의 요청을 서블릿1이라고 했을때, 사용자2는 서블릿2 .... 사용자3000은 서블릿3000이라고했을때 @Controller는 선언될때 객체자체는 heap영역에 생성되지만 class정보는 method area영역에 생성이되고 결국 thread는 힙이든 메소드든 공유를하기때문에 수십만건의 쓰레드가와도 controller를 공유하여 처리할수있다는점입니다.

servlet는 singleton이기때문에 사용자의 정보를 알고있어 요청이 끊기기 전까지 알고있어야합니다. 이때,

2-1)DB에 수천만 또는 수억의 사용자들이 요청이온다면 정보를 저장해야할텐데 DB가 그정도까지 지원하나요?

2-2) 2-2번질문은 제가 질문하다가 떠오른생각인데 요청이끊긴다고해서 개인정보가 삭제되는것이아니라 일정활동이 없으면 휴먼계정으로 판단되어 DB에서 삭제가되는거였군요.. 방금 게임에 대한 정보를 생각했답니다

 

1번은 제가 이해한게 맞는지와 2-1)번은 단순히 현업에 제가있지않아봐서 호기심으로 질문드립니다!

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 박민성님

1번 질문은 잘 이해가 되지 않습니다. 예시와 상황을 좀 더 자세히 말씀해주시겠어요?

2번 질문에 답을 드릴게요.

Q: 2.현업에 계신분들이 봤을때 메모리용량을 얼마나 설정해야하는지?

-> 이 부분은 서버마다 다릅니다. 웹 애플리케이션의 경우 대부분 응답을 하고 나면 결과를 빠르게 GC 하면 되기 때문에 많은 메모리가 필요하지는 않습니다. 그리고 서버 자체의 수를 늘리 수 있기 때문에 이 부분은 성능 테스트와 여러가지 최적화를 해보아야 합니다. 보통 4G 이상은 필요합니다.

Q: 2-1)DB에 수천만 또는 수억의 사용자들이 요청이온다면 정보를 저장해야할텐데 DB가 그정도까지 지원하나요?

-> 1초안에 수천만 요청이 들어오는 것이 아니라 사용자의 요청이 나누어 들어오기 때문에 초당 수백~수천 정도를 처리한다고 보시면 됩니다. 만약 더 필요한 경우 데이터베이스를 샤딩하는 등 여러가지 기법이 사용됩니다.

감사합니다.

박민성님의 프로필 이미지
박민성
질문자

아하 답변감사드립니다!

다른분께서 질문하신 내용이 있는데 https://www.inflearn.com/questions/245723/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94-%EC%A7%88%EB%AC%B8%EC%9D%B4-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4

이부분에서 영한님이 서블릿에대한 의존관계가 필요하지않다고하셔서 궁금합니다!

김영한님의 프로필 이미지
김영한
지식공유자

서블릿은 각각 요청을 받아서 처리하는 목적으로 사용됩니다.

스프링의 컨트롤러와 같은 개념이지요. 스프링 컨트롤러가 서로 의존관계를 가질 필요가 없는 것과 같은 목적이라 생각하시면 됩니다.

박민성님의 프로필 이미지
박민성

작성한 질문수

질문하기