홈페이지를 만들면서 이뿐 게시판을 참 많이들 원하시죠?
그러면서 많이 배우게 되고...
그럼.. 여기서 잠시.. 홈페이지가 어떻게 가동되는 것인지 알고 넘어가야 합니다.
홈페이지는 기본적으로 HTML이라는 언어로 만들어 집니다. 여기에 이뿌장한 그림을 테이블에 짜맞추고.. 좀더 이뿌게 하기 위해서 CSS를 넣고.. 그리고 뭔가 유연성을 주기 위해서 (혹은 신기한 효과를 위해서) 자바스크립트를 사용하는 것이 일반적이지요... 그리고는 거기에 누군가 만들어 놓은 배포용 게시판을 달고는 내 홈페이지다~~ 라고 말하는것이.. 일반화입니다. (물론 저도 그랬구요.. ^^)
웹사이트는 기본적으로 서버-클라이언트 환경입니다.
많이들 들어 보셨죠? 서버와 클라이언트...
클라이언트와 서버는 기본적으로 "요청"과 "응답" 이라는 단어로 축약 할 수 있습니다.
클라이언트쪽에서 어떠한 정보를 요청하면 서버는 그에 대한 작업을 열씸히 뛰고, 거기에 대한 결과를 응답으로 보내는 것이죠.
예를 들어 볼까요?
웹사이트에서 우리가 어떠한 링크를 클릭합니다. 여기서 웹브라우저가 바로 클라이언트가 되는 것이지요. 그리고 그 링크가 바로 요청이 되어서 웹서버로 전송됩니다. 웹서버는 흔히들 갖고 계신 계정이라는 거죠.
그 계정(서버)는 해당된 링크에 따라 맞는 페이지를 찾아서 그 파일을 읽습니다. 그리고는 해당 HTML소스를 클라이언트로 보내주죠. 그럼면 클라이언트.. 그러니까 브라우저는 그 정보를 해석해서 다시 이뿌장한 웹페이지로 바꿔서 보여 주는 것입니다.
이거는 클라이언트-서버 관계죠...
좀더 들어 갈까요?
게시판같은 경우는 3계층형 클라이언트-서버 관계입니다.
먼저 글을 쓸때를 보죠.
클라이언트에서 글쓰기 버튼을 누릅니다. 서버는 해당 페이지를 찾아 폼을 응답으로 보내겠죠. 이 다음이 중요합니다.
클라이언트가 글을 다 쓰고.. 전송 버튼을 누른다면.. 그 글들이 과연 어디로 갈까요?
여기서 DATABASE라는 것이 등장하게 됩니다.
무작정 웹서버의 하드에 저장하는것이 아닙니다. 그렇게 되면 보안상도 좋지 않겠죠? 글고..용량도.. 적절히 암호화 해서 적은 용량으로 많은 정보를 기록할 수 있는 공간이 필요하게 됩니다. 그것이 바로 DB라는 것이죠. 흔히들 말하는 MSSQL이라던지 MYSQL 이란는 것이 여기 해당 합니다.
그럼 다시 정리하자면, 글 전송 버튼을 누르면 웹서버에 일단 글의 내용들이 보내어 집니다. 하지만 웹서버는 이 정보를 처리할 능력이 없죠. 그래서 또다시 서버와 클라이언트 관계가 웹서버와 DATABASE서버 사이에 생성이 됩니다. 웹서버가 DB서버에 대한 클라이언트가 되는것이죠.
웹서버는 받은 정보를 DB에 저장해 달라는 요청을 합니다. 그러면 DB는 저장을 하고, 저장이 되었으면 완료라는 응답을 보내겠죠...
그러면 웹서버는 다시 받은 응답을 통해 클라이언트에게 전송완료라는 응답을 보냅니다.
브라우저-웹서버-DB서버
일케 3계층이 형성 되는 겁니다.
자.. 그러면 또 다른 쪽을 볼까요? 브라우저와 웹서버 사이에는 HTML이라는 언어가 다리 역할을 합니다. 그러면 웹서버와 브라우저 사이에는 어떤 언어가 다리 역할을 할까요?
바로 ASP나.. PHP등이 이 역할을 하는 것입니다.
▶ ASP는? PHP는?
초창기 웹시장은 거의 유닉스(혹은 리눅스)진영이 장악하고 있었죠. 넷츠케이프라는 브라우저와, 아파치 웹서버가 시장을 장악하고 있었습니다.
하지만 언제 부터인가 MS사에서 윈도우에 IE를 끼워 팔기 시작하면서 브라우저의 시장은 뒤바뀌기 시작했죠.
여기서 자바스크립트라는 언어가 아주 중요했는데요... IE는 뒤늦게 시장에 뛰어 들었기 때문에 자바스립트를 지원 하면서, 자신들이 개발한 VB스크립트역시 지원하게 만들었습니다.
하지만 넷츠케이브 쪽은 여전히 자바스크립트만을 지원했죠.
그래서 MS의 VB스크립트는 별로 재미를 보지 못했습니다.
또한 MS에서 개발한 웹서버인 IIS역시 아파치에 밀려서 별로 재미를 못봤죠.
하지만 윈도우 2000이 나오면서 그 판도는 약간씩 달라지기 시작했습니다. 윈도 2000의 IIS가 5.0으로 버전업되면서 그나마 웹서버 다운 면모를 갖추어 시장에서 조금씩 고개를 들기 시작했고, VB스크립트를 응용한 ASP역시 3.0이 나오면서 윈도2000과 함께 부상하게 된거죠.
그리고 지금은 PHP와 어깨를 나란히 할 정도로 멋진 웹프로그래밍 언어 (정확히는 서버 사이드 스크립트 : Server Side Script Language, 자바 스크립트 같은걸 클라이언트 사이드 스크립트 : Client Side Script Language 라고 합니다.) 로 떠오른거죠.
▶서버 스크립트란?
ASP나, PHP는 기존의 VBScript나 JavaScript와 크게 다를바 없는 스크립트입니다. 다만 '서버사이드 스크립트'라고 해서 서버에서 실행된다는 것이 다릅니다.
ASP에서 서버 스크립트를 구분하는 구분자는 로, 이 사이에 사용된 스크립트는 서버에서 실행됩니다.
그렇기 때문에 브라우저에서 HTML 보기를 해도 ASP 코드 내용은 보이지 않습니다.
서버에서 실행되고 그 결과만을 가져다 보여주기 때문에 HTML 소스에는 그 결과값만 보이게 됩니다.
▶ASP와 PHP
ASP란 Active Server Pages의 약자로서 Windows NT와 IIS(Internet Infomation Server)환경하에서 구동되는 프로그램을 말합니다.
따로 구해서 까는 프로그램두 아니구 위에서 말한 두가지만 있으면 ASP는 자동으로 깔렸다고 할 수 있죠.
하지만 Windows 95/98환경이 대부분인 일반 유저들이 어떻게 ASP를 공부할 수 있느냐...
저두 그랬지만 고가의 NT환경을 구축하려면 무지 힘들겠죠?
그래서 나온 것이 PWS(Personal Web Server)입니다.
이건 IIS의 기능을 축소해서 개인이 웹을 구성할 수 있도록 해 놓았죠.
근데 그건 어디서 구하느냐고요?
Windows 98 정품(..엄연히 말하면 정품에서 카피한 것두 됨.)에 보면 add-ons라는 디렉토리가 있습니다. 거기 보면 pws라는 디렉토리가 있을 겁니다.
그냥 setup만 클릭해주고 설치하면 되는 거죠.
하여튼 ASP는 MS사에서 만든 겁니다.
그러니 그들의 기본 언어이고 지금의 MS가 있게끔 해준(사실 빌게이츠는 Basic과 MS-DOS로 돈을 벌었거든요...^_^) 베이직을 토대로 합니다.
베이직은 여러분도 아시다시피 초보자용 언어이지요...
참 아이러니 하지만 MS는 이 초보자용 언어로 욹어 먹을 데로 욹어 먹구 있습니다. basic, gw-basic, quick-basic, visual basic, basic script, asp 기타등등... 강한 포인터나 그외에 c에서 느낄수 있는 강력함은 없지만 베이직은 예나 지금이나 쉬운 언어 임에는 틀림 없는 것 같습니다.
베이직이 토대인 ASP는 문법 및 그외 함수들도 많은 영향을 받았습니다.
실례로 제가 오래전 처박아 두었던 베이직 책자에서 ASP의 기본을 알기도 했으니까 말이에요. 하지만 무시할 수 없는 게 ASP입니다. 실제로 프로그래밍을 하다보면 그 기능에 감탄을 금치 못 할때가 한두번이 아니었습니다.
조금 느린 감이 있긴하지만 ODBC와 ADO라는 게 데이타에 관한 작업들을 아주 단순화 시켜 주었으니까 말이 에요...
PHP는 Server Side언어 입니다.
쉽게 말하면 서버에서 수행을 하고 결과값만을 클라이언트에 보내는 겁니다.
그러니 보안성이 중시되는 사이트나 데이터 베이스를 연동해서 그 결과를 보여주어야 할 경우에는 당연히 이런 류의 언어를 써야 겠지요?
궂이 PHP가 아니더라도 이런 류의 언어는 참 많습니다.
C, Perl, Java등..등..
PHP도 그런 언어 중의 하나입니다.
왜 기존의 로컬 프로그래밍 언어를 안쓰고 이런 걸 써야 하는 지는 네트웍이라는 놈이 걸리는 데...
여기서 네트웍 강좌까지 할 수는 없으니 이런게 있구나 보시면 되구요.
관심있는 분은 따로 공부 하셔야 겠죠?
▶PHP의 용도
프로그래밍을 하면서 이런 질문을 참 많이 받았습니다.
"도대체 PHP를 어디다가 쓰지요?"
참 원초적인 질문인데요...
PHP는 쉽게 말하면 CGI라는 것과 비슷 합니다.
아니...비슷하다기 보다 PHP도 일종의 CGI라고 할 수 있죠.
군데 CGI는 또 모냐구요?
쉽게 설명드리자면요... CGI, 즉 Common Gateway Interface는 말 그대로 일종의 문입니다. 어떤 문이냐면요 인터넷에서 서버와 클라이언트간의 확장적인 중계자로서 HTML(Hyper Text Markup Language)보다는 확장된 것이라고 볼 수 있죠. HTML은 소스에 대한 보안성이 없습니다. 그리고 유동적이라기 보다 일방적인 경우가 많죠. 물론 DHTML(Dynamic Hyper Text Markup Language)이나 Java Script, VB Script, J Script등이 있긴 하지만 어느정도의 한계성이 있죠.
예를 들자면 데이터 베이스와의 연동 같은 것을 들을 수 있습니다.
엄청난 양의 데이타를 모두 클라이언트로 보낼 속도도 안 될 뿐더러 보안성도 없어 지는 거죠. 하지만 이 CGI라는 놈을 쓰면 그게 가능해 지는 겁니다.
서버에서 클라이언트가 요청한 데이타 만을 추출해서 보내는 거죠.
물론 서버에는 얼마간의 부하가 걸리겠지만 모든 데이타를 보낼때의 부하보다는 훨씬 나은 거죠.
CGI에 대해 자세히 알고 싶은시면요. 김충곤님의 홈페이지에 가셔서 더 자세히 공부 하셔 보구요. 하여튼 ASP는 이 CGI와 같은 종족이기 때문에 언어로서의 문법등은 다를지 몰라도 내부적으로 하는 일은 같다고 할 수 있죠.
그렇다면 이 PHP를 어디다가 써야 하느냐...
무지막지하게 이걸 썼다가는 안 그래도 느려 터진 서버에 무진장의 부하를 줄 수도 있습니다. 예전에 PHP로 메일링 리스트 프로그램을 짜다가 실수로 무한 루프를 돌리면서 메일을 발송한 적이 있었죠. 한 1분정도 였는 데 메일이 3000통정도(더 많았을 수도 있구...) 가있더군요. 그날 저는 거의 1시간을 서버에 매달려 버벅데는 서버를 달래야 했죠.
하여튼 PHP는 아무곳에나 쓰면 안 되구요 적시적소(흠.. 어렵다...)에 넣어야 합니다. 그래야 전체적인 프로그램이 매끄럽게 돌아 갑니다. 무조건 이걸루 프로그래밍을 했다가는 느려터진 싸이트란 불명예를 끌어 안을 수도 있으니깐요.
하기야 서버가 빵빵하면 문제가 없지 만서두...
전 하두 열악한 환경에서 프로그래밍을 해서리...^_^
익...쓸데없는 소리 고만 하라구요...?
함...고럼 본론으로 들어가서...
이 PHP라는 놈의 용도는 참 다양합니다.
게시판, 방명?, 메일링리스트, 기타 등등...
하여튼 이놈은 용도는 무지 다양합니다.
로컬에서 가능한 작업이 웹에서도 가능해질수 있는 거죠.
이 놈으로 인해서...
예를 들어 회사의 모든 데이타를 데이타 베이스 서버에 저장해 놓구 각 유저들은 그걸 검색하거나 추가 한다고 했을 때...
기존의 로컬 프로그램은 제한적으로 이 분산환경을 지원 했습니다.
먼저 클라이언트용 프로그램이 있어야 했고 서버에서 어떤 클라이언트에게 허가권을 주어야 할 지 결정해야 했고...하여튼 골치 아픈 작업들이죠...
하지만 이것을 웹에서 처리한다면 문제가 달라지죠.
웹서버에서 사용자 인증 및 모든 것을 처리하고 클라이언트는 단순히 웹브라우져만 있으면 회사의 모든 업무를 할 수 있게 되는 겁니다.
물론 프로그래밍도 서버용 클라이언트용을 따로 짤 필요가 없어 지는 거죠.
서버에 올려 놓은 HTML과 CGI(즉, PHP)를 통해서 모든 작업들이 가능 해 지는 겁니다. 얼마나 편하겠습니까... 유지보수 일일이 할 필요 없죠. 서버에 있는 프로그램만 수정하면 모든 환경이 수정되고...
이게 바로 PHP의 가장 대표적인 장점입니다.
어때요? 매력있지 않아요?
물론 위에서 열거한 정도가 되려면 열악한 우리나라 환경에서는 좀 더 기다려야 하지만요...
하지만 그렇게 먼 이야기도 아닌 것 같습니다.
얼마전에 리눅스를 서버로 하는 이런 류의 그룹웨어가 몇개 나왔으니깐요.
(나만 그런 생각을 하는 게 아닌 가비네....^_^)
자...어쨌든 오늘도 PHP수업은 하나도 안했네요.
그냥 이런게 있다고 알아두시구요.
다음 강좌때 또 뵙죠...^_^