본문 바로가기
Study Progamming/JSP

[ 은노기의 JSP 웹 프로그래밍 입문 ] 웹 프로그래밍이란 무엇인가?

by ${코딩몬} 2017. 8. 29.


종류 : 대학교 소장 도서
제목 : 은노기의 JSP 웹 프로그래밍 입문
저자 : 김은옥
소개 : bnitech.tistory.com/39

단지 공부의 목적으로 해당 도서 및 자료를 정리해둔 것입니다.



- Chapter 01 웹 프로그래밍의 이해 -

웹 프로그래밍이란 무엇인가?


  • 월드 와이드 웹(World Wide Web : 이하 웹(Web)) 기반에서 동작되는 프로그래밍 방식이다

  • 포괄적으로는 웹 사이트나 개인 홈페이지, 세부적으로는 게시판, 자료실 등을 만들기 위해 웹에서 작동되는 프로그램이다.



월드 와이드 웹 (World Wide Web : WWW)


  • 스위스의 CERN(European Organization for Nuclear Research, 유럽 입자 물리연구소)의 팀 버너스(Tim Berners)의 개발자 팀의 제안에 의해 정보의 공유 목적으로 1989년 3월 개발되었다.

  • 이후 인터넷이 빠른 속도로 발전하게 되면서 나중에 HTTP(HyperText Transfer Protocol)형식으로 전달되는 방법을 통해 HTML(HyperText Markup Language)이라는 간단하면서도 유연한 구조를 갖는 마크업 언어(Markup Language)[각주:1]의 표준 프로토콜로 사용되었다.

  • 메뉴 방식으로 서비스되던 기존의 인터넷 서비스에 일대 혁명을 가져왔다. 즉, 하이퍼텍스트(HyperText)[각주:2]를 기반으로 이루어진 웹은 문서 활용에 엄청난 편리성을 제공한다.

  • 예전에는 그저 텍스트 기반의 꺼먼 창에서 원하는 정보를 고퍼(Gopher)[각주:3]아키(Archie)[각주:4] 서버를 사용해서 정보의 위치를 확인하면 FTP(File Transfer Protocol)[각주:5]를 사용해서 원하는 정보를 다운로드 받는 수준에 머물렀다. 물론 한글을 지원 하는 웹 브라우저도 없었다.

  • 웹 브라우저라는 일관된 사용자 인터페이스를 제공하게 되어 사용자들에게 편리성을 제공했으며, 웹 문서는 하이퍼 텍스트로 구성되기 때문에 사용자는 하이퍼텍스트를 사용해서 하나의 정보에 연결된 다른 정보에 쉽게 접근할 수 있게 되었다.
    또한 인터넷상에서 조직된 가상 단체(뉴스그룹, 카페)의 능동적인 참여로 수많은 전문자료에 대한 접근이 쉬워지게 되어 현실적인 정보의 공유가 이루어지게 하였다.

  • 정보의 공유는 인터넷의 기본 정신으로, 빈부의 격차에 관계없이 원하는 정보를 얻을 수 있는 것을 목적으로 한다. 물론 현실에서는 그 나름대로 한계가 있기는 하지만 말이다.

  • 인터넷 상에 존재한는 일반 텍스트 형식의 문서 및 그림, 음성 그리고 동영상 등의 각종 정보를 인터넷 주소인 URL(Uniform Resource Locator)[각주:6]를 사용해서 하나의 문서 형태로 통합-관리해서 사용자들에게 제공해준다.



HTML (HyperText Markup Language)


  • WWW기반의 웹 발전에 가장 중요한 역할을 한 마크업 언어이다.
    HTML은 정보를 한 곳에 모아주는 역할을 하기 때문이다.
    마크업 언어는 일련의 요소를 단순하게 나열한 것으로, 각각의 요소들은 특수문자들에 의해 구분한다.

  • 특수 문자 안에 포함되어 있는 일련의 구문이나 항목을 어떻게 표시할지를 정하는 언어이다.
    예를 들어 <p>문장의 단락</p> 와 같은 형태로 표현된다.

  • 이러한 마크업 언어들 중에 HTML은 문서의 내용을 표시 하는 것에 중점으 둔 언어이다.

  • 웹페이지에 원하는 내용을 표현하기에  HTML의 사용은 획기적이었고, 적절하다
    그러나 시간에 따라 변화하는 동적인 내용을 표시하기에는 문제점이 발생한다.

  • HTML은 변화하지 않는 늘 같은 내용을 표현하는 정적인 웹페이지를 작성하기에는 적합했지만 시간에 따라, 혹은 상황에 따라 변화되는 내용을 표시하는 동적인 웹페이지를 작성하는 데는 한계가 있었다.



정적 웹 페이지와 동적 웹 페이지


  • 늘 같은 내용을 표시하는 웹페이지를 작성하기 위해서는 HTML로도 충분하다. 그러나 정보는 늘 바뀌게 되므로 사실 항상 같은 내용을 표시한다는 것은 잘못된 정보를 표시할 가능성도 있다는 문제점 안고있다.

  • 왜 HTML은 늘 같은 내용을 표시하는 정적인 웹페이지밖에 작성할 수 없는 것일까?
    이유는 여러가지가 있지만 그 중에서도 가장 핵심적인 것은 프로그래밍 코드를 사용할 수 없다는 점과 데이터베이스 연동을 할 수 없다는 점 때문이다
    프로그래밍을 사용할 수 없다는 것은 다양한 형태를 표현할 수 없고, 데이터베이스를 사용할 수 없다는 것은 정보를 저장하거나 얻어낼 수 없다는 것을 의미한다.

  • 그래서 등장한 것이 동적 웹페이지 이다

  • 개인 홈 페이지를 만드 때는 HTML 태그와 JavaScript[각주:7]만으로도 충분히 작성이 가능하다. 

  • 최근에는 홈페이지를 만들기보다는 블로그나 SNS(Social Networking Service)[각주:8] 등을 활용하고 있는 추세이다. 이러한 블로그나 SNS 조차도 어떠한 정보를 입력한 글들이나 댓글들은 모두 데이터베이스에 저장된다. 하물며 기업의 웹사이트는 말할 것도 없다. 이러한 사이트들은 방대한 데이터의 관리를 위해 데이터베이스를 사용하고, 동시에 접속하는 사용자의 수가 많더라도 사이트의 성능이 떨어지지 않도록 해야 하는 등 수많은 작없들이 필요하다.
    그런데 HTML만으로는 기업의 방대한 데이터나 쇼핑몰과 같이 실시간으로 수많은 데이터의 변화를 처리하거나 저장하는 작업을 처리한다는 것이 불가능하다. 즉, HTML은 동적으로 변한느 데이터를 처리하고 표시하기에는 문제가 있다는 것이다.

  • 이런 불편을 해소하고 동적으로 변화하는 데이터를 처리하고 표시하기 위해서 개발된 것들이 CGI, ASP, PHP, JSP[각주:9] 등이다. 보통 웹 프로그래밍 하면 이러한 CGI, ASP, PHP, JSP 등을 일컷는다.

  • 웹 프로그래밍은 기본적으로 클라이언트(Client)/서버(Server) 방식으로 다음과 같은 형태를 갖게 된다.


( 클라이언트 / 서버 방식의 구조 )


  • 클라이언트(웹 브라워)가 트겅페이지를 웹 서버에 요청(Request)하게 된면 웹 서버가 이를 처리한 후 결과를 클라이언트(웹 브라우저)에게 응답(Response)을 하게 되는 구조




Anonymous FTP (무명 FTP) :

FTP 서비스를 제공하는 호스트는 익명 FTP 액세스를 제공 할 수 있다.
사용자는 일반적으로 사용자 이름을 묻는 메시지가 표시되면 '익명'(일부 FTP 서버에서는 대소 문자와 소문자 구분) 계정으로 서비스에 로그인 한다.
사용자는 일반적으로 암호 대신 전자 메일 주소를 보내라는 요청을 받지만 실제로 제공된 데이터는 확인되지 얺는다.소프트웨어 업데이트를 제공하는 것이 목적 인 많은 FTP 호스트는 익명 로그인을 허용한다

Node.js :

확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.
작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

  1. 마크업 언어(Markup Language) : 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지이다. 태그는 원래 텍스트와는 별도로 원고의 교정부호와 주석을 표현하기 위한 것이였으나 용도가 점차 확장되어 문서의 구조를 표현하는 역할을 하게 되었다. 이러한 태그 방법의 체계를 마크업 언어라 한다. 일반적으로 데이터를 기술하는 정도로만 사용되기에 프로그래밍 언어와는 구별된다. [본문으로]
  2. 하이퍼텍스트(HyperText) : 1960년대 테오도르 넬슨(Theodore Nelson)이 어떠한 것을 초월한다는 의미를 갖는 'hyper'와 문자로 된 데이터를 의미하는 'text'를 합성하여 만든 용어이다. 순차적인 흐름이 아닌 사용자가 원하는 순서에 따라 원하는 정보를 얻을 수 있는 시스템이다. 하나의 문장 일부 어구나 단어 또는 표제어를 모은 목차 등이 서로 관련된 문서 파일의 역할을 하는 것으로으로 각각의 이들이 네트워크상의 노드(node) 역할을 하게 되어 효율적인 정보의 검색을 구현할 수 있게 한다. [본문으로]
  3. 고퍼(Gopher) : 정보의 내용을 주제별, 종류별로 구분하여 메뉴 방식으로 구성한 인터넷 정보 검색 서비스이다. [본문으로]
  4. 아키(Archie) : 인터넷상의 Anonymous FTP(무명 FTP)에 공개되어 있는 파일을 검색할 수 있도록 제공하는 인터넷 정보 검색 서비스이다. [본문으로]
  5. FTP(File Transfer Protocol) : 파일 송-수신 프로토콜로 인터넷상의 Anonymous FTP(무명 FTP)에 접근해서 원하는 정보를 다운로드 또는 없로드 시에 사용되는 서비스이다. [본문으로]
  6. URL(Uniform Resource Locator) : 은 표준 주소 체계로 불리는 것으로 인터넷상에서 다양한 서비스를 제공하는 수많은 서버들로부터 필요한 정보를 어어내기 위해서 사용된다. 이들 정보의 위치를 표시하는 표준 주소 체계로서 URL이 사용된다. [본문으로]
  7. JavaScript : 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 사이드 네트워크 프로그래밍에도 사용되고 있다. 자바스크립트는 본래 넷스케이프 커뮤니케이션즈 코퍼레이션의 브렌던 아이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발하였으며, 최종적으로 자바스크립트가 되었다. 자바스크립트가 썬 마이크로시스템즈의 자바와 구문(syntax)이 유사한 점도 있지만, 이는 사실 두 언어 모두 C 언어의 기본 구문을 바탕했기 때문이고, 자바와 자바스크립트는 직접적인 관련성이 없다. [본문으로]
  8. SNS(Social Networking Service) : 사용자 간의 자유로운 의사소통과 정보 공유, 그리고 인맥 확대 등을 통해 사회적 관계를 생성하고 강화시켜주는 온라인 플랫폼을 의미한다. SNS에서 가장 중요한 부분은 이 서비스를 통해 사회적 관계망을 생성, 유지, 강화, 확장시켜 나간다는 점이다. 이러한 관계망을 통해 정보가 공유되고 유통될 때 더욱 의미 있어질 수 있다. 오늘날 대부분의 SNS는 웹 기반의 서비스이며, 웹 이외에도 전자 우편이나 인스턴트 메신저를 통해 사용자들끼리 서로 연락할 수 있는 수단을 제공하고 있다. SNS는 소셜 미디어와 동일한 개념으로 오용되는 경우가 많으나, 범주상 블로그, 위키, UCC, 마이크로 블로그 등과 함께 소셜 미디어의 한 유형으로서 보는 것이 타당하다. [본문으로]
  9. CGI, ASP, PHP, JSP : ( 다음 장에 자세힌 설명되어 있음 ) [본문으로]