GIGO MIND DEV BLOG

웹사이트 제작의 기초 (3)

기능의 기초


오랜만에 철학적인 질문을 하나 던져봅니다.

기능이란 무엇인가..?

각각 다들 다른 정의를 내려놓겠지요. 근데 제가 말하려는 주제에서의 기능을 말해볼게요. 너무 진지하게 받아들이진 마세요. 전 철학과는 거리가 먼 사람입니다. 사실 이게 제 인생에 첫 처음 하는 “철학적인” 질문이니까요 ㅋㅋ. ㅠㅠ

제가 생각하는 컴공에서의 기능은 프로그램이 무언가를 받으면, 그 순간으로부터 무언가를 해나가는겁니다. (문자열을 출력을 한다던가..?)

무슨 뚱딴지같은 소리냐구요? 컴퓨터란 계산 하는 기계잖아요. 무언가 “인풋”이 있어야 “아웃풋”이 있는 것이죠. 우리가 아무 시작도 안했는데 혼자 뚝딱뚝딱 해나가는 녀석이 아니잖아요?

이번 글에서는 그 기능, 즉 무언가를 유저에게서 받으면 서버가 할 수 있는 일에 대한 기초를 알려드린다는겁니다.

일단 크게 구조로 봤을때, 웹사이트상의 마크업 언어로 만들 수 있는 이쁜 화면은 한계가 있습니다. 그래서 다른 언어와 마크업 언어를 연결해주는 식으로 생각하면 편합니다. 저희가 원하는 다른 높은 수준의 기능들은 우리가 쓰는 다른 프로그래밍 언어로 구현하면 좋으니까 말이죠.

그러면 웹 브라우저를 우리가 원래 만들던 GUI 라고 생각하고 인풋만 받아와서, 그걸 우리가 쓰던 프로그래밍 언어에 넣어주면 되겠죠?

그게 바로 백엔드 프로그래밍 이라고 하는겁니다.

잠깐 복습하자면, 원래 우리가 보는 웹사이트들은 멀리 지구 어딘가에 존재하는 다른사람의 서버 컴퓨터에서 보내준 HTML 파일이란 말이죠. 그 파일에 어떠한 값을 넣고 엔터를 누른다고 했을때, 고작 페이지 뿐일 녀석이 어떻게 그 지구 어딘가에 존재하는 컴퓨터에 도달할까요..?

한 10초간 생각해봅시다.

일단, 페이지를 받아온 우리 유저 컴퓨터가 다시 서버에 값을 보내줘야겠죠.
그러면 서버는 그걸 유저에게서 받아서, 자기가 하고 싶은 일을 합니다.
그리고 다시 새로운 페이지를 보내주거나, 아니면 유저에게서 온 요청에 작은 메모를 적어줘서 다시 보내줍니다.

참 쉽죠?

자, 그러면 첫번째 과정입니다.

클라이언트(유저)가 서버(멀리있는컴퓨터)에게 어떠한 값을 보내줄 수 있게 하는것


이는 HTML의 태그들로 쉽게 구현할 수 있답니다.

<form action="?">
	<input type="text" name="first">
	<input type="submit" value="Submit">
</form>

자 위에 코드를 보면, form 이라는 녀석이 있고, input이라는 녀석이 있습니다.
form 은 input에서 넣은 값을 받았을 때 무슨 action을 취할지 정합니다.
저 물음표 부분에 이제 유저에게서 받은 값으로 무슨 일을 할지 적어놓은 코드의 파일이름을 넣으면 되는것이지요.


자, 그러면 유저가 어떤 숫자 정보를 넣었다고 가정합시다..? input 태그 두개 (숫자, 로그인 버튼)를 form 안에 넣고 보냅니다. 서버는 이제 (숫자)라는 이름을 가진 input을 쓸 수 있게 됩니다.
이걸 쓰는 방식은 자유입니다. php, servlet 등등과 같은 프레임워크를 이용하여, 우리가 쓰던 프로그래밍 언어로 유저의 요청값을 추출 해서 그 값으로 뭔가 할 수 있는거죠..! 서버쪽에서의 입장에서는 form 의 action 부분에 서브렛이 들어가고, 예를 들어 자바 서블렛이라고 하면, 그 서블렛은 .java 파일로 된 어떠한 파일을 가리키게 됩니다. 그 파일안에서는 HTTPServlet이라는 라이브러리를 통해 유저의 요청을 Request라는 오브젝트의 형식으로 받을수있고, request.getParameter(숫자)를 이용해서 유저 input을 받을 수 있게 됩니다!! 그 후는 우리가 흔히 아는 자바 코드로 그걸 곱하기 2를 하던 해서, response라는 오브젝트로 다시 보내줍니다.

유저의 브라우저는 그걸 받은 값을 토대로, 하나의 태그를 새로 생성하거나 혹은 보내진 값을 갖고 다른 페이지로 보내질 수도 있습니다.

하지만 기본적인 구조는 서버가 유저에게서 값을 받고, 다른 프로그래밍 언어로 처리를 한 뒤, 유저에게 다시 보내준다는 것에 있습니다.