ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 인프런 - 웹프로그래밍이란
    자바/인프런 인강 2018. 2. 17. 11:24
    • 웹프로그래밍이란?


    웹프로그래밍은 웹을 기반으로 작동되는 웹 어플리케이션을 구현하는 것.

    웹은 하이퍼텍스트 구조를 활용해서 수 많은 정보들을 연결해주는 인터넷 서비스의 일종. 인터넷은 전 세계의 컴퓨터가 연결되어 있는 통신망


    인터넷이란?


    아르파넷은 시험가동을 거친 후 1972년 10월에 워싱턴에서 개최된 제1회 국제컴퓨터통신학술회의에서 시연되었다. 이를 계기로 아르파넷에 대한 관심이 더욱 커지면서 많은 대학과 연구소들이 아르파넷에 편입하기 시작했다. 국제컴퓨터통신학술회의에서 ‘네트워크들의 네트워크’를 의미하는 오늘날과 같은 인터넷(internet)의 개념이 제기되었다는 점도 주목할 만하다. 이를 바탕으로 ARPA의 서프(Vinton Cerf)와 칸(Robert Kahn)은 1974년에 <패킷 네트워크 인터커뮤니케이션을 위한 프로토콜>이란 논문을 발간했는데, 그것은 인터넷계의 고전으로 꼽힌다.

    아르파넷의 시연보다 인터넷의 확산에 더욱 크게 기여한 것은 1971년에 톰린슨(Ray Tomlinson)이 시범적으로 개발한 전자우편(e-mail)이었다. 전자우편이 폭발적인 인기를 누리면서 이를 사용하기 위해 아르파넷에 편입하지 못한 기관들이 새로운 네트워크를 구축하는 일이 생겨났던 것이다. 유즈넷(Usenet), 텔넷(Telnet), 엔에스에프넷(NSFnet), 에듀넷(Edunet), 비트넷(Bitnet) 등은 그 대표적인 예이다. 전자우편에 있는 ‘참조(cc)’라는 항목이 먹지(카본지)로 만든 복사본을 뜻하는 ‘카본 카피(carbon copy)’에서 유래되었다는 점도 흥미로운 사실이다.

    이와 같은 다양한 네트워크들이 등장하면서 그것들을 서로 연결하는 것은 더 이상 미룰 수 없는 과제가 되었다. ARPA의 서프와 칸은 다양한 프로토콜(protocol, 통신시스템이 데이터를 교환하기 위해 사용하는 규약) 중에서 TCP(Transmission Control Protocol)와 IP(Internet Protocol)를 결합한 TCP/IP를 선택했다. 1982년에는 TCP/IP를 활용한 인터넷 테스트가 실시되었고, 1983년에 미국의 방위통신청(Defense Communication Agency)은 네트워크 업자들에게 TCP/IP의 사용을 강제하는 조치를 내렸다. 이를 통해 TCP/IP는 인터넷의 표준 프로토콜로 자리 잡았으며, 그 후 인터넷은 TCP/IP를 통해 서로 연결된 네트워크를 의미하게 되었다.


    [네이버 지식백과] 인터넷 - 정보기술의 탄생과 영향 (세상을 바꾼 발명과 혁신)


    프로토콜: 네트워크 상에서 약속한 통신규약(Http, FTP, SMTP, POP, DHCP)

    IP: 네트워크상의 컴퓨터를 식별하는 주소

    DNS: IP주소를 문자열로 맵핑한 것(DNS서버에서 IP주소를 맵핑한다)

    Port: 컴퓨터(서버)에서 구동되는 프로그램을 식별하는 번호



    • 웹의 구조


    웹서버

    클라이언트의 요청을 받아 파일(데이터)을 제공(응답)하는 역할을 수행한다.

    웹 페이지가 들어 있는 파일을 사용자들에게 제공하는 프로그램. 웹 사이트를 통해 서비스를 하려면 웹 서버 프로그램을 설치해야 한다. 대표적인 웹 서버로는 아파치(Apache)와 인터넷 정보 서버(IIS), 엔터프라이즈 서버 등이 있다.

    -출처: [네이버 지식백과] 웹 서버 [web server] (IT용어사전, 한국정보통신기술협회)


    웹브라우저

    웹서버에 정보를 요청하고 웹서버로부터 정보를 받는 매개체, HTTP 프로토콜을 사용하는 등 인터넷망에서 정보를 검색하는 응용 프로그램



    웹 어플리케이션 서버(WAS): 

    인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)로서, Server 단에서 Application을 동작할 수 있도록 지원한다. 웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다.

    WAS로 인해 안정된 시스템 구성이 가능하여 안정적 서비스 보장, 자동적인 어플리케이션 복구기능을 제공하며, 업무 로직이 중간 어플리케이션 서버에 존재하여 쉽고 빠르게 구축할 수 있다. 

    -출처: [네이버 지식백과] WAS [Web Application Server] - 웹 애플리케이션 서버, 웹 응용 서버 (지형 공간정보체계 용어사전, 2016. 1. 3., 구미서관)



    CGI

    웹서버에서 할 수 없는 동적인 역할을 수행한다. 즉, 동적인 컨텐츠 생성과 사용자가 입력한 데이터를 저장하는 역할. 

    동적인 컨텐츠? - 각 사용자는 자신의 요청에 따라서 다른 결과(페이지)를 보게 된다.

    사용자가 요청한 URL을 WAS가 확인하고 사용자 요청을 CGI로 보낸다. 프로그램이 실행되어 작업 후 다시 정적 HTML페이지 형식으로 응답한다. 


    톰캣

    Apache Licence, Version 2를 채용한 오픈소스 소프트웨어로서서블릿이나 JSP가 실행되는 곳이다. 서블릿 표준에 의한 컨테이너를 제공하며, 상용 

    웹 애플리케이션 서버에서 서블릿 컨테이너로 사용하는 경우도 많다.

    웹서버가 사용자에게 받은 요청(URL)을 컨테이너(톰캣)가 판단하여 해당되는 URL 경로에 있는 servlet에게 전달하고 다시 응답(데이터)을 받아 사용자에게 전달하는 하는 역할을 수행한다. 

    WAS 또는 서블릿 컨테이너 라고도 불린다.


    Servlet

    웹서버에서 사용자에 요청을 받아서 웹페이지를 동적으로 생성하는 자바(Java) 기반 프로그램을 말한다.

    참고로 html은 이와는 반대로 정적이다. 웹 개발 언어는 대부분 동적인 웹페이지 기술을 지원한다.

    JSP보다 먼저 만들어졌지만 html 코딩에 불편함이 있었고 추후 Servlet의 불편한점을 보완한 JSP가 등장한다.


    Servlet이 다른 CGI와 다른점:

    다른 CGI는 클라이언트를 프로세스로 처리하지만, Servlet은 쓰레드로 처리한다. 그래서 수 많은 클라이언트의 요청을 멀티쓰레드로 효과적으로 처리하여 서버에 부하가 덜 걸린다.


    JSP:

    Java Server Page, 서브릿의 API, 웹서버의 서블릿을 이용해서 웹 페이지의 내용과 모양을 제어하는 기술

    html 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 페이지를 생성한다. 실행시에는 Servlet(.java)으로 변환 된다. html 형태로 작성되기 때문에 웹 디자인하기에 편리하다.


    ※톰캣과 서블릿의 개념: https://youtu.be/aP4Lw3SfffQ

    개발서버처럼 IDE 없이 터미널로 톰캣 다루기: https://youtu.be/WdBAto3IQOg

    ※컨테이너가 하는일: http://finerss.tistory.com/entry/%EC%84%9C%EB%B8%94%EB%A6%BF-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88Servlet-Container?category=356457

    ※서블릿 매핑 관련:http://finerss.tistory.com/entry/%EC%84%9C%EB%B8%94%EB%A6%BF-%EB%A7%A4%ED%95%91-%EB%B0%B0%ED%8F%AC-%EC%84%9C%EC%88%A0%EC%9E%90DD-Deployment-Descriptor?category=356457

    ※웹서버와 WAS 정의와 관련 용어들: http://finerss.tistory.com/entry/WSWeb-Server-%EC%99%80-WASWeb-Application-Server-%EC%A0%95%EC%9D%98


    컨테이너웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다. 웹 컨테이너는 서블릿의 생명주기 관리, 멀티쓰레딩, 통신을 지원하며,  URL과 특정 서블릿을 맵핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장한다. 


    컴포넌트소프트웨어 개발을 마치 레고(Lego) 블록을 쌓듯이 쉽게 할 수 있도록 하는 기술을 말한다.즉, 기존의 코딩 방식에 의한 개발에서 벗어나 소프트웨어 구성단위(module)를 미리 만든 뒤 필요한 응용 기술을 개발할 때 이 모듈을 조립하는 기술을 말한다. 컴포넌트 기술을 활용하면 복잡한 정보 시스템을 신속하게 구축할 수 있으며, 유사한 정보 시스템을 구축할 때 재사용이 가능한 장점이 있다.

    출처: [네이버 지식백과] 컴포넌트 (매일경제, 매경닷컴)


    EJB기업환경의 시스템을 구현하기 위한 서버컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. 


    HTML: 웹어플리케이션을 구현하기 위한 기본 언어


    JavaScript: 클라이언트 기능을 구현하기 위한 언어


    Jquery: 자바스크립트의 대표적인 라이브러리, 클라이언트 사이드 스크립트 언어를 단순화


    CSS: 웹 어플리케이션의 레이아웃 및 스타일을 지정하는 언어



    • 자바 웹의 동작


    • 웹서버 -> 웹 어플리케이션 서버 -> 데이터베이스