CI 묻고 답하기

제목 session 공부 중에 궁금증이 생겨 글을 올리게 되었습니다.
글쓴이 정수리 작성시각 2016/06/03 15:28:51
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15878   RSS

1%라도 해본 질문 vs. 1%도 안해본 질문, 여러분은 어떤 질문에 손이 가십니까?

 

config파일에서 session을 설정할때 driever로 files와 database로 설정할수 있는 곳이 있더라구요

 

files로 설정하여 session 정보를 파일로 저장하면 보안상 안좋을 것같으데

 

db로 저장할경우 큰사이트의 경우 접속자들의 수가 많을텐데 DB에 영향을 주지 않나요?

 

보안상의 이유로 DB에 저장하는것인가요?

 

현재 운영되고 있는 큰 사이트들은 어떻게 session을 관리되고 있는지 궁금하네요

 

 다음글 페이지 만료 시키기 관련 (2)
 이전글 autoload로 session을 불러올시; (2)

댓글

배강민 / 2016/06/03 15:52:30 / 추천 0

정답은 없습니다.

상황 또는 취향에 따를듯 하지만 어쨋든 선택입니다.

 

일단 말씀하시는거로 봐서는 3.* 인듯하네요. 3.* 는 php native session (files) 또는 db session 를 고르는듯하더군요.

전 2.* 까지밖에 안써봤는데, 2.* 까지는 client cookie 또는 db session 이었습니다.

이에 따라 2.* 에서 native session 을 쓰려면 따로 만들던, 그 누군가 만들어놓은 native session library 를 사용해야 했습니다.

 

2.*의  과거는 무시하고,

일단 db session 을 이용하는 이유에는 여럿이 있겠지만, 일단

#01. 관리의 용이성

#02. 다중 서버에서의 세션 유지

이 2가지가 가장 극단적인 사용이유이지 않을까 싶습니다.

관리의 용이성이라하면 어쨋든 DB에 쌓이기 때문에 통계던, 일괄처리던 등이 용이한 측면이 있습니다.

다중 서버에서의 세션 유지라 함은 기본 세션은 서버단위로 쌓이기 때문에 서버가 여러개가 되면

세션 공유등 하드웨어적 소프트웨어적 지원이 필요하게 됩니다.

 

자, 여기까지 들으면 마치 DB session 이 마냥 좋은듯이 보일 수도 있습니다.

하지만, 기본 세션도 충분이 관리할 수 있고, 그런 툴들도 이미 많이 존재하는 것으로 알고 있고요.

다중 서버에서의 문제에 대해서도 이미 많은 레퍼런스가 존재하고요.

 

DB session 을 이용하면 정수리님께서 말씀하시는 것과 같이 DB connect 이 추가로 발생할 수 밖에 없습니다.

꼭 그래서는 아니지만, 꼭 큰(?) 사이트만은 아니지만, DB 저장형태의 세션일 경우, 메모리 DB (memcached, redis 등)을 이용하거나 nosql (mongodb 등) 을 이용하는 경우가 많긴 합니다.

하지만, 이렇게 하면 기본 RDBMS 외적으로의 관리비용도 당연히 추가되게 됩니다.

 

보안때문에 DB session 을 이용한다라는 말은 전 모르겠고, 들어보지 못해서 그 부분은 모르겠습니다.

 

즉, 제가 아는 한도내에서는 답변의 서두와 같이 결국은 선택입니다.

하지만 마지막 질문인 대세는 무엇이냐? 라는 질문에는 제가 알기로는

메모리 DB. nosql 을 이용한 DB 세션 비스무레한 것인듯 합니다.

kaido / 2016/06/03 16:26:41 / 추천 0

파일 세션이 더 유리 할거라는 근거는 무엇이죠?

회원 데이터가 있는 사이트에 접속 하는데도 db 커넥션을 전혀 안 하실 건가요?

 

당혹 스럽죠? ㅎㅎ

 

해보기 이전에 그냥 이럴것 같다. 라는 편향적인 선택을 하고 있으신거 같아서 질문 드린 것입니다.

 

전부 다 풀어서 대답을 하기엔 좀 양이 많은것 같고, 저의 주관적인 의견일 수도 있으니 정리를 해보죠.

 

일단 DB connect 는 항상 발생 합니다.

당장 상품 페이지만 해도 계속 쿼리를 날리고 있습니다.

게시글은 말할 것도 없구요.

아주 빠른 0.00xx 초 단위의 쿼리(세션 체크 쿼리) 하나 더 줄이고 다른 복잡한 프로세스를 추가 하는 것과 

0.1초가 나오는 느려터진 쿼리를 튜닝해서 0.01초로 만드는 것과 어느쪽이  더 퍼포먼스에 유리할까요?

 

즉 세션 db 에서 먹는 쿼리 질의는 먹는 자원량이 낮아서 그렇게 큰 부담이라고 보기는 어렵다는 이야기가 됩니다.

하지만 그럼에도 nosql 이 나오는 이유는?

0.0001 초여도 동시 접속자가 10만명이라 하면 단순 산술로 10초를 잡아 먹는 다는 소리가 됩니다.

이러면 느려터진 사이트가 되겠죠. 그럼 부하를 줄이던지 속도를 높여야 합니다.

서버를 늘리던지, 더 퍼포먼스가 나은 방법을 찾겠죠. 

그런 관점에서 나온것이 nosql 이구요.

 

nosql 도입이나 서버의 증설 등은 운영진의 요구가 아닌 개발자, 엔지니어, 혹은 매니저 등이 결정을 내립니다.

비용과 도입 시기와 차후 유지보수 관리 측면을 회사에 어필해야 하고, 회사에서는 판단을 내리겠지요.

 

단순히 기술이 이게 더 좋다. 해서 도입 되진 않습니다.

 

어필 하세요.

정수리님이 옭다고 판단 되면 근거가 되는 자료를 준비하고 회사에 어필 하시면 됩니다.

그럼 도입 되는 거죠. ㅎㅎ

정수리 / 2016/06/03 16:49:32 / 추천 0

@kaido

파일세션이 유리하다는 말씀은 안드렸는데;;;

그냥 아직 많이 부족해서 개인적으로 공부하다 보니 궁금해서 물어본거였어요;;

정수리 / 2016/06/03 16:50:05 / 추천 0

@배강민

조금은 이해가되네요^^ 감사합니다