로그인 프로세스에만 해당하는 얘기라기 보다는 서버가 어떻게 동작하는지 그 흐름을 이해한다고 생각하는게 빠를 것 같다.
올리기에 적합한 이미지인지 고민이 되었지만 그나마 제일 깔끔하고 플로우가 눈에 보여서 가져왔다.
우리가 흔히 컴퓨터를 통해서, 인터넷을 통해서 무언가를 한다는 것은 99.9%는 이 과정을 거칠 것이다.
이 과정에서 등장하는 역할은 유저(이하 클라이언트), 브라우저, 서버, 그리고 데이터베이스이다.
결론만 먼저 말하면 우리가 인터넷에서 하는 모든 활동은 클라이언트와 서버의 요청과 응답에 의해 작동한다. 그러니까 로그인도 요쳥과 응답에 의한 일이라는 건데 무슨 말일까? 난 그냥 아이디 비밀번호를 치고 버튼을 눌렀을 뿐인데...
클라이언트(client) : 바로 위에서 '유저=클라이언트' 라고 썼는데 둘이 무슨 차이가 있을까? 굳이 설명을 하자면 유저는 이 활동을 하고 있는 주체인 사람에게 좀 더 포커스가 맞춰져있는 표현이고, 클라이언트는 유저가 네트워크에 접속한 PC를 가리킨다.
브라우저(browser) : 우리가 흔히 쓰고 있는 크롬(Chrome)이나 애플 유저라면 사용하는 사파리(Safari), 아이콘이 귀여운 파이어폭스(Firefox), 그리고 이제 역사의 뒤안길로 사라진 인터넷 익스플로러(IE) 등을 브라우저라고 하는 건 잘 알고있다. 근데 브라우저가 뭔데?
browser 라고 하니까 원형은 browse, 돌아다닌다는 뜻이다. 다시 보니 엄청 직관적인 네이밍이었다. 사람들은 브라우저를 통해 인터넷 네트워크를 돌아다니는 것이다.
정확히 말하면 브라우저는 클라이언트와 서버 양 사이를 오가면서 쌍방향으로 정보를 전달하거나 전달 받는 응용 소프트웨어이다. 그러니까 클라이언트와 서버를 잇고 있는 중간지점이라는 말이다!
서버(server) : 서버가 터졌다, 서버가 느리다, 서버를 이전한다, 서버 시간 등... 서버라는 말을 많이 쓰는데 대체 서버가 뭘까? 서버는 컴퓨터다. 우리가 일반적으로 쓰는 컴퓨터와는 다르지만 컴퓨터이기 때문에 너무 오래 돌리면 느려지기도 하고, 너무 느려져서 컴퓨터가 다운되기도 하고, 이 컴퓨터에서 나오는 시간이 있기도 하고, 오래되면 바꾸기도 하는 것이다. 그래서 서버가 뭔데?
server의 원형인 serve는 식당에서 음식을 제공하거나 아니면 가게에서 손님 응대를 하는 걸 말한다. 그 개념을 그대로 적용하면 서버는 손님(클라이언트)의 요구사항을 처리해주고 받아주는 컴퓨터라는 말이다.
데이터베이스(Database, DB) : 데이터베이스는... 데이터베이스다... 따로 설명할 말이 없다... 다만 데이터베이스도 서버의 한 종류이고, 그러므로 컴퓨터라는 정도를 짚어두고 간다.
더 간단해보이는 이미지가 있어서 가져왔다. 서버와 클라이언트 사이에는 브라우저가 있지만 생략되었다!
로그인은
1. 클라이언트에서 유저의 아이디와 패스워드를 입력해서 포장한 다음에 브라우저를 통해 서버로 보낸다. (요청)
2. 클라이언트에서 보낸 포장된 아이디와 패스워드를 서버에서 받는다.
3. 서버는 이 아이디와 비밀번호가 가입이 되어있는 회원인지, 비밀번호는 제대로 썼는지 등을 확인하기 위해서 아이디와 비밀번호가 저장되어있을 데이터베이스를 열어 이것을 체크한다.
4. 데이터베이스 단에서 체크를 한 후에 서버가 클라이언트에게 로그인의 결과에 대한 응답을 해준다. (로그인 성공 혹은 로그인 실패)
의 과정을 걸쳐서 일어나는 일련의 요청/응답의 행위이다.
이 과정에서 데이터베이스에 비밀번호가 저장되면 통신이 느려진다는 단점이 있고 (물론 보완할 수 있는 방법들도 있다), 비밀번호가 저장되는 것 자체에 보안의 위험성이 있어서 암호화를 하는 등의 후처리가 이어지지만 이 글에는 로그인 과정만 적기로 했으므로 여기까지만 적는다!
간단해보였던 로그인 과정도 적어도 저 3~4개의 과정을 거쳐서 일어나고, 그 과정에서 거치는 컴퓨터와 라우터 등등을 생각하면 우리의 아이디와 비밀번호는 엄청나게 복잡한 여행을 떠나는 셈이다. 근데 인터넷으로 하는 모든 활동이 거의 이렇다는게 정말 신기하지...
면접 후기에 로그인 프로세스 물어본다는 후기가 있어서 검색했는데 잘 보고 갑니다 ! :) 감사합니다 ㅎㅎ