관리 메뉴


Kinesis´s Open Document

초보 웹 개발자를 위한 세션의 이해 - #01 본문

MEMO/기술 자료/Web Application

초보 웹 개발자를 위한 세션의 이해 - #01

Kinesis 2012. 10. 10. 12:01

초보 웹 개발자를 위한 세션의 이해 - #01

 

많은 서비스가 웹 플렛폼으로 넘어가고 있다. 따라서 작성되고 있는 프로그램 들 역시 웹을 기반으로 하는 어플리케이션이 늘어나고 있다. 이러한 흐름속에서 가장 대두되고 중요시되는 것은 보안이다. 오늘은 그 중에서도 가장 기초가 되는 세션에 대해 이야기를 좀 늘어놓고자 한다.

 

초보 프로그래머이든 베테랑의 PC 어플리케이션 개발자이든 웹 개발에 들어서면 웹 특징에 대해 가장 먼저 학습을 해야 한다. 어떤 식으료 요청을 하게 되고 어떠한 방식으로 응답이 날아와서 그것을 어떠한 과정을 통해서 결과로 보여지게 되는지부터 어떠한 방법을 통해 사용자의 식별이 가능하게 되고, 로그인이나 인증, 권한 부여등이 이루어지는가. 바로 이것이 웹 서비스를 개발하기 위해 가장 기초이자 발판이 되는 지식이다. 그리고 그 역할을 해주는 것 중 하나가 세션이다.

 

내가 현업에서 개발을 해보면서 실제로 웹 개발을 해야하는데, 세션의 개념조차 재대로 잡지 못한 채 웹 개발을 하고 있는 개발자분들을 많이 접하게 되었다. 오해도, 착각도 각양각색 가지가지다. 그 분들이 넌지시 던진 질문들을 나열해 보자면 다음과 같다.

 

"세션이란게 뭐지? 필요한가?"

"세션은 기본적으로 가지고 있는 것 아닌가?"

"세션이 끊어지지 않게 하면 안되나?"

"(페이지 요청이 아닌)마우스나 키보드 조작이 몇분 동안 없으면 끊어지게끔 해야하는 것 아닌가?"

 

웹 개발을 하는데 이 개념조차 정리가 안된상태에서 개발을 하고 있는 거라면 사실은 웃음 밖에 나오지 않는 부분인 것이다. 세션이 등장하게 된 이유와 근본조차 이해하지 않은 상태에서 현업에 뛰어들었다라는 말 밖에 되지 않기 때문이다.

 

그 전에 가장 단순하게 웹 특징에 대해서 정의해보자.

 

웹 서비스는 본디 연결이 끊어져 있는 통신 방식이다.

 

바로 이것이다. 웹 서비스란 본디 연결 자체가 페이지 요청에 의해 응답을 받은 순간부터 연결이 끊어지기 때문에 상대방이 연결되어있는지 끊어져 있는지 확인 할 방법이 없다. 요컨데 인증을 하더라도 인증을 했는지 안했는지 알 수 없다. 또한 이러한 특성 때문에 클라이언트에서 Request 가 오지 않는 이상 Response 를 할 수 없고 결과적으로 서버에서 클라이언트에게 Order 를 내릴 수 없으며 조작할 수 없다. ( 물론 최근 이러한 커넥션자체가 가진 문제점을 해결하고자 웹소켓WebSocket 이라는 개념과 기술이 등장하게 된 것이지만, 이것과 관련한 내용은 생략하고 넘어가도록 한다. )

 

이해를 쉽게 돕자고 하면 다음의 설명을 보자.

 

당신은 보안이 너무나도 철저한 작업실에 들어가고자 한다. 그러나 보안이 너무 철저한 나머지 들어가기 전에 어떠한 목적을 위해 방문하였는지 통보해야하고, 그 작업실에 들어가서는 앞서 밝힌 목적만을 수행할 수 있고 다른 작업은 절대 할 수 없으며 용무가 끝나는 즉시 나와야 한다. 그리고 그 결과는 작업실을 나오고 나서만 확인할 수 있다. 그리고 작업실에 나오는 순간 작업실의 문이 닫혀버리며 당신이 방문했다는 기록은 폐기되어 사라진다.

 

이와 같은 방식이 바로 웹 서비스이다. 어떠한 목적을 위해 방문 했다고 통보하는 것이 바로 Request 이고, 작업실 안에서 이루어지는 것이 서버에서 처리하는 과정이 되며, 작업실을 나와서 확인하는 것이 Response 를 받아보는 것이 된다. 그런데 중요한 것은 자신이 작업해서 받은 내용에 오차가 있어서 수정을 하기 위해 재 방문을 하고자 할때이다.

 

앞서 설명한대로 자신이 작업실에서 나온 순간 당신이 요청했었던 내용과 방문햇던 기록, 작업했던 내용이 모두 사라져 있다. 당신은 어떠한 방법을 이용해서 받은 응답에 대해 수정요청을 할 것인가? 무엇보다 안타깝게도 모든 기록이 남아있지 않기 때문에 당신이 아무리 "방금전에 왔던 사람인데요" 라고 이야기 해봤자 받아들여지지 않는다.

 

하지만 이러한 방식에서는 어플리케이션과 같은 "업무 처리" 를 할 수가 없다. 나의 신원을 확인할 수 있는 방법이 있어야하고, 내가 신원인증이 이루어진 사람이라는 것을 확인할 방법이 필요하고, 내가 모든 작업이 끝났다 라고 통보하기까지 내가 필요로하는 정보를 가지고 있어야할 필요가 있다. 그럼 이러한 작업을 어떻게 할 수 있을가? 그것이 바로 세션과 쿠키이다.

 

- 다음편에 이어서....

- 2012년 10월 10일 Kinesis 작성.

 

 

본게시물의 저작권은 Kinesis 에게 있습니다. 무단 펌을 불허합니다.

단, 본 게시물로의 링크는 허용합니다.

 

초대장키 : e078c663d5d201ab9dbe2d714fe7a852 2012년 10월 11일 만료


Comments