stateless는 왜 확장성이 좋고 캐쉬에 적합한 구조라는 건가요?

2013-08-06 10:09

RESTful 에 대해 보다가, "stateless의 장점은 상태에 대한 저장을 하지 않으므로, 확장성이 좋아지고 캐쉬하기에 적합한 구조이다" 라는 문장을 봤어요.

왜 스테이스리스는 확장성이 좋아지고 캐쉬하기에 적합한 구조라고 하는거죠??

11개의 의견 from SLiPP

2013-08-06 10:59

캐시하기에 적합한 구조라는 말은 정확한 표현 같지는 않네요 (중앙 집중형) 캐시를 사용해서 무상태 웹을 구현할 수 있다고 하는 편이 맞을 것 같습니다. 한동안 stateful web이 유행했는데 (전 나름 타당한 이유가 있고 유용한 영역도 있다고 봅니다.) 아무래도 서버가 상태를 갖는다는 개념이 확장성 면에서 여러가지 복잡한 문제를 일으키는데 요즘은 수평 확장성이 화두이고 stateful web을 구현하려면 이해하기 어려운 기술을 따로 공부해야 해서 인기가 사그라 든 것 같습니다.

2013-08-06 11:37

stateless 장점의 경우 확장성이 좋아지는 것은 당연하지 않을까? stateful의 경우 클라이언트가 일단 서버에 접속하면 특정 서버와 계속해서 연결 상태에서 있어야 되는데 이 부분을 관리하기도 힘들고, 한명의 사용자를 서비스하는 비용도 상당히 크겠지. 무상태인 경우 클라이언트와 서버의 연결 고리가 없기 때문에 요청을 보낼 때마다 아무 서버나 서비스할 수 있는 구조이기 때문에 웹 서버를 확장한다고 했을 때 고려할 부분이 줄어들 듯하다.

캐시하기에 적합한 구조라는 것은 @fupfin님 말대로 적합한 표현은 아닌 듯하고.. 대략 유추해 본다면 stateful의 경우 상태를 계속해서 가지고 있기 때문에 캐시의 활용도가 떨어지고 굳이 필요없을 수도 있는데 무상태의 경우에는 상태 정보가 없기 때문에 매 요청마다 같은 데이터를 데이터베이스에서 select하기 위한 부담을 줄이려면 아무래도 캐시를 활용하는 것이 좋겠다라는 의도이지 않았을까 생각한다. Restful 스터디 준비 잘해서 좋은 발표 되면 좋겠다.

2013-08-07 09:43

캐시하기에 적합한 구조라는건 L4 같은 장치를 염두에 둔걸까요 ``? stateless 한 것은 L4 를 이용한 로드밸런싱이 자유롭고 L4 를 사용하면 캐시장비를 이용하기가 용이하기때문에..? 아 2년전에 자료 조사하느라고 좀 봤었는데 다 까먹고 '그랬던거 같다'라는 정도밖에 말이 안나오네요;;;

2013-08-07 10:22

sateless가 확장성이 좋다는건 클라이언트와 서버가 의존성이 없기 때문에, 클라이언트가 어느 서버에 접속해도 상관없다는 의미인 듯 하구요. 따라서 L4를 사용하게되면 다수의 장비가 마치 1대처럼 보이게 하는 효과가 있겠죠. L4는 확장성과 관련이 있는 것 같아요.

캐시를 적용하기 적합한 구조라는 것은 클라이언트의 상태를 고려하지 않으므로 항상 동일한 응답을 반환할 수 있다는 거겠네요. 예를 들어, 게시판 첫페이지를 1초 캐시한다면, 1000tps짜리 서비스였다면 1초 동안 DB조회가 1회만 이루어져도 되겠네요.

stateful 프로토콜인 ftp같은 경우에는 로그인 여부와 사용자 계정에 따라 다른 응답을 줄 확률이 높기 때문에 캐쉬를 적용하기가 상대적으로 더 까다롭다고 볼 수 있겠죠.

2013-08-08 10:57

@fupfin 저는 stateless protocol까지만 생각해야겠어요. 지금 당장 만들지도 않을 stateless application까지 생각하면 너무 머리 아파서 ㅋㅋ

When people talk about stateless applications, they in fact mean no state in the web tier. But state can be stored in several layers:

"they in fact mean no state in the web tier" <= 요정도까지 ... ㅎㅎ

2013-08-08 11:21

@benghun 네. 글을 쓰신 것 보면 protocol을 얘기하신 것 같더라고요. 하지만 @minkyong.an 님이 올리신 주제는 protocol이 아니라 stateless protocol인 http을 사용하는 web에서 상태를 어떻게 관리하느냐는 문제라서 다른 문제 같습니다.

2013-08-08 14:08

@fupfin "stateless의 장점은 상태에 대한 저장을 하지 않으므로, 확장성이 좋아지고 캐쉬하기에 적합한 구조이다" 이 말이 "http를 사용하는 web에서 상태를 어떻게 관리하느냐라는 문제"는 아닌 것 같은데요?

의견 추가하기

연관태그

← 목록으로