관리 메뉴

새로운 시작, GuyV's lIfe sTyle.

웹의진실 - 웹에서의 모든 것들은 아무 관련이 없다. 본문

ⓟrogramming/웹의진실

웹의진실 - 웹에서의 모든 것들은 아무 관련이 없다.

가이브 2018.09.04 07:41

오늘의 글 주제는 "관련이 없다"인데요.

 

학교에서나 회사에서나 개발의 전반적인 부분을 "혼자" A부터 Z까지 하게 되는 경우가 많습니다.

예를 들어서 "도서관 대여" 프로그램을 만들면, 사람들이 책을 집어가는 디자인을 구상하여 및 UI를 만들고 어떤 방법으로 저장할 것인지도 고민하고, 어떻게 처리할 것인지 고민합니다.

 

프로그래밍이라는 것이, 사실 매우 간단하거든요. 데이터를 프로그램에 넣어주면, 결과가 나오는 것입니다.

프로그래머는 데이터를 넣을 수 있게 하고, 이를 처리해서, 원하는 정보를 결과로 보여주는 것을 하게 되겠지요.

 

웹은 매우 복잡하게 느껴집니다. 특히나, 프레임워크를 쓰게 되면 웹이 어떻게 작동하는지도 모른 상태로 시작하게 되는 경우가 많죠.

 

 

1. 사용자 입력받기

 

웹에서의 사용자 입력은 "요청"이라고 부릅니다. 웹 개발자가 잘 아는 GET/POST가 그것이죠. 사용자에게 모든 정보는 텍스트로 입력을 받습니다.

 

우리가 주소창에 최초 daum.net 을 입력하면 GET 으로 "/" 자료를 요청하는 것입니다.

어디서 링크를 퍼올 때는 daum.net/mypocket/5 와 같은 인자값이 주소로 될 수도 있고, daum.net/pocket?no=5 이렇게 인자값이 있는 주소가 될 수도 있습니다. ]

 

여기서 중요한 사실은, 요청하는 값의 형식은 아무 의미가 없습니다. 서버는 "/mypocket/5" 또는 "/pocket/no=5"을 요청받은 것으로 끝이 나는 것입니다. 클라이언트가 하는 역할, 즉 사용자에게 입력받기는 여기서 모든 것이 끝나게 됩니다.

 

웹페이지 내에서 양식을 작성하고 제출하는 <form>..</form> 태그를 볼까요?

이 태그는 action 이 붙습니다. <form> 태그내에 있는 양식의 값들을 action 으로 보내라는 것인데요.

 

이 역시 action 값으로 submit 하는 역할로 모든 것이 끝나게 되겠습니다. 서버에서 어떤 짓을 하는 지는 몰라야 되고, 알고 싶으면 안됩니다. 왜나면, 이 글의 주제처럼 아무 관련이 없기 때문입니다.

 

ajax 로 특정 페이지를 비동기로 요청하는 경우도 마찬가지입니다. 사용자에게 입력을 받는 프로그램(주소)은 클라이언트가 어디서 누가 보냈는지 알 필요가 없습니다.

 

많은 분들이 개발을 진행하면서 php, jsp, asp 등에 js를 얹이거나 하는 작업으로 입력 양식을 사용자에게 제공 하셨을겁니다.

딱 거기까지가 사용자 입력받기의 역할을 다 한 것입니다. 서버프로그램의 작성은, 다른 사람이 해준다고 생각하세요. (비록 내가 하겠지만..)

 

 

 

2. 입력받은 값 처리하기

 

사용자에게 입력받을 양식을 개발자 C가 겨우겨우 만들고 개발자 S에게 말합니다.

 

"회원가입 폼 다 만들었으니까 이제 개발하시면 됩니다~!"

 

S는 C에게 말하지요.

 

"그래요? 저는 어제 끝냈으니, 테스트를 같이 해볼까요?"

 

 

프로젝트를 담당하는 P가 "도서관리 시스템"을 기획하는 문서를 모든 파트의 개발자에게 보냈었고, 이를 각자 맡은 역할에 맞게만 처리하게 되면 모든 것들은 다 맞아떨어지게 되어 있습니다.

 

왜냐면, 모든 것들은 아무 관련이 없기 때문인데요.

 

사용자의 입력값은, 일반적으로 우리 서버에 접속한 사람들이 회원가입도 하고, 게시판 글도 읽고 하겠지만 당연히 누군가가 퍼갈 수 있었을 것입니다. 퍼가기가 되는 이유는, 바꾸어 말하면 서버에서 어떤 행위를 하는지 몰라도 되기 때문에 퍼갈 수 있는 것입니다.

 

개발자의 측면에서는, 정해진 그 값들만 잘 맞춰주면 되거든요.

 

 

그래서 프론트엔드라 불리는 개발자 C가 만들기 전에 이미 서버개발자 S가 다 만들 수 있는 것입니다.

C측에서 무슨 짓을 하는지 S는 몰라도 되거든요. S는 필요한 정보를 받아먹고 우물무물하여 퉷~하고 뱉어내면 되는 것이니까요.

 

 

3. DB연동은?

 

제 주위 개발자들은 쿼리문을 매우 잘 짭니다. 그런데, 이따금 그들은 꼭 연관을 짓더란 말입니다.

DB는 정말 특정 누구와 친하지 않거든요. 친해질 이유도 없습니다. 아마 제일 도도한 놈일겁니다.

 

DBMS종류가 여러가지 있지요. 큰놈들만 볼까요. Oracle, MS-SQL. 이들은 꽤 오래됐고 많은 기업에서 사용하고 있다고 알려졌고,

실제 학생분들은 회사 가 보면 접하시게 될 것입니다.

 

Oracle 을 설치하면 scott/tiger 를 치고 들어가는 콘솔 프로그램을 보셨을 것입니다.

사실, 이 녀석도 DB와는 아무 관련이 없습니다.

 

SQL Server 를 설치하면 Enterprise Manager 라는 프로그램도 있구요.. 이 또한 아~무 관련이 없지요.

 

Toad 라는 3rd party DB클라이언트가 나올 수 있는 이유도, DBMS는 누구에게 종속된 것이 아니기 떄문에, Orange For XXX 역시도 DBMS는 자기 할 일만 잘 하는 도도한 놈이니까 나올 수 있는 것입니다.

 

웹도 마찬가지입니다.

DB연동을 하지요.

마치 관련있는 것처럼..

그러나, 절대 엮지 마세요. 아무 관련 없답니다.

 

서버개발자 S는 회원가입의 데이터를 넣는 기능을 만드는 B 개발자에게 이름,전화번호만 주면 되는 것입니다.

데이터를 넣는 기능을 만드는 B개발자는 DB에 저장하는 쿼리문을 날려주면 됩니다.

 

웹에서 저장을 하기위한 쿼리문 작성과 직접 DB에 접속하여 쿼리문을 날려보는 것과는 동급입니다.

뭐 그리 대단한 것을 하지 않지요.

 

DBMS는 웹서버가 자기를 쿡쿡 찌르든, 클라우드 서버가 작업이 들어오든 매우 도도하게 자기 할 일만 할 뿐입니다.

 

"쿼리문 내놔~!"

 

그렇다면, 접속하여 연동할 수 있게 할 수 있는 통로는 누가 만들까요?

 

DB와 연동할 수 있는 이유는, DBMS를 만든 곳에서 접속할 수 있는 방법을 정해놓았기 떄문입니다. 마치 앞에서 S개발자가 한 것 처럼 말이죠. 그래야 JDBC도 나올 수 있고, Toad도 나올 수 있고 Orange 도 나올 수 있겠지요.

 

개발자가 하는 것은 뭘까요?

 

 

최종적으로, DB에 쿼리문을 날릴 때 변수로 날릴 수 있게 하기 위해서

이렇게 간단한 목적 달성을 위해 협업한답시고, 유지보수를 용이하게 한답시고 복잡하게 배배 꼬는 것입니다.

 

 

오늘 이야기는 여기까지입니다. ^^

0 Comments
댓글쓰기 폼