Programming/Web

웹프로그래밍의 기본

주죵 2021. 1. 19. 23:51
728x90
반응형

주의 : 웹프로그래밍을 1도 모르고 웹기반 솔루션 개발자가 되어버린 왕초보 개발자의 포스팅입니다. ㅋㅋ

 

학창시절 어떤 수업을 시작하는 첫주 혹은 첫수업엔 단골처럼 나오는 이야기가 있다.

바로바로~~~ 수업 내용의 발전 과정과 역사같은것이랄까?ㅋㅋㅋ

사실 크게 다룰건 없지만 빠지면 섭섭하기 때문에 이 게시판의 첫 포스트도 그런거 비스무리하게 시작을 해보자

정적(Static) 웹 프로그래밍

정적 웹 프로그래밍은 "웹서버에 미리 보여줄 HTML, CSS, 이미지, JavaScript 파일을 저장해놓고 브라우저에서 요청시에 그대로 전달하는 방식"(by 자바 웹을 다루는 기술) 이다.

미리 보여줄것을 저장해놓고 전달하는 만큼 사용자 입장에선 고정된 페이지를 보게 된다. 읽자마자 눈치챘을수도 있겠지만 요즘처럼 동적인 요소가 많이 들어간 웹페이지의 경우엔 잘 사용되지 않는 방법이다. 하지만 여전히 화면 디자인과 기능처리에 있어선 사용되는 부분은 있다.

정적 웹 프로그래밍의 핵심적 키워드 몇가지만 알아보고 가자

  • 웹서버 : 각 클라이언트에게 서비스를 제공하는 컴퓨터
  • 클라이언트 : 네트워크로 서버에 접속 후 서버를 통해 서비스를 제공받는 컴퓨터
  • HTTP 프로토콜(Hyper Text Transfer Protocol) : www서비스를 제공하는 통신 규약/ 웹 서버와 클라이언트는 이 프로토콜을 이용해 정보를 주고받는다.
  • HTML : Hyper Text Markup Language의 약자로, www서비스를 위한 표준언어
  • javascript : HTML 웹 페이지의 다양한 동적 기능 제공을 위한 스크립트 언어
  • CSS(Style Sheet) : HTML 문서에서 서체, 색상, 정렬 등 세부적인 HTML 페이지 디자인 관련 기능을 제공

이게 뭔가 싶은 괴물같은 단어지만 http://www.~~~ 를 수없이 봐온 우리들이다.

예전에 어디선가 슬쩍 읽었었는데 http 뒤에 나오는 ://를 붙인 이유가 뭐냐고 만든사람한테 물어봤더니

"그냥 멋있어보여서 했어요;;" 라고 대답했다고 한다. 자기땜에 수많은 사람의 업무 능률이 떨어진것에 대해 미안함을 느끼고 있다던데 ㅋㅋㅋ

 

딴소리 그만하고 핵심내용으로 돌아가보자.

정적 웹프로그래밍의 치명적인 단점은 무엇일까? 말그대로 "정적"이라는것.

오늘날 사용자들은 웹브라우저를 통해 실시간 정보를 얻길 원한다. 출근후 9시에 화장실에 가면 모두가 앉아서 주식을 보고있다는데 주가 보여주는 웹페이지가 고정되어있으면 안되지 않겠는가... 정적 웹프로그래밍 방식에선 서버 관리자가 실시간 정보를 반영하기 위해 주기적으로 직접 HTML을 수정해야 한다. 

동적 웹 프로그래밍

정적이 있다면 당연히 동적인 방법도 있을것. 인간은 언제나 해법을 찾아왔지 않는가?ㅋㅋ

동적 웹 프로그래밍은 서버 관리자가 일일히 수정해주던 그런 작업들을 웹 어플리케이션 서버(WAS)를 통해 수행한다.

(입사후 교육을 처음 받을때 WAS가 어쩌고 소켓이 어쩌고 교육받으며 멘붕이 왔었다. 톰캣이니 jboss니 어쩌구 저쩌구.... 소켓이 뭐 어쩌구... 물론 지금도 잘 모른다)

동적 웹 프로그래밍은 요청이 들어오면 데이터베이스에 접근하여 실시간 정보를 클라이언트에게 제공이 가능하다. 

출처 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

CGI(Common Gate Interface)

초기 동적 웹 프로그래밍의 대표는 CGI다. CGI는 프로세스방식으로 실행되기 때문에 서버 부하가 심각하다.

이게 뭔소리냐?

CGI의 경우는 여러 클라이언트가 같은 요청을 보내도 똑같은 프로세스를 지속적으로 반복한다. 각각의 요청에 대한 기능은 똑같아도 요청별로 다 따로따로 메모리를 로드해버린다. 그렇기 때문에 요즘처럼 이용량이 많은 서비스를 제공하는 경우 메모리 부하에 걸릴 수 있다.

 

JSP

위에서 언급한 CGI의 문제점을 개선해서 나온 수많은 동적 웹 프로그래밍이 있지만 난 JSP에 대해서만 이야기해보려 한다.

JSP는 스레드방식으로 실행된다. (스레드에 대한 기본적 개념은 앞선 포스팅을 참고하삼^^) JSP의 경우 서로 다른 클라이언트 1,2가 같은 기능을 요청했을때, 먼저 클라이언트 1의 요청을 처리하는데 사용했던 기능을 메모리에 로드한다.  2의 요청이 들어왔을땐 기존에 1의 요청에 사용된 기능이 메모리에 존재하므로 그걸 다시 써서 기능을 수행한다.

즉, CGI와 달리 각각의 요청에 대한 기능을 따로따로 메모리에 로드하지 않는다.

핵심만 요약하자면

  1. 프로세스 방식이 아닌 스레드방식으로 실행
  2. 클라이언트 요청 처리하는 기능은 최초 한번만 메모리에 로드
  3. 동일한 기능 요청시에 기존에 사용한 기능 재사용!

 

Reference

- 자바 웹을 다루는 기술

- 블로그 포스트 : gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

728x90

'Programming > Web' 카테고리의 다른 글

HTTP  (0) 2021.06.20
REST API  (0) 2021.06.20
[Java Web] Servlet이 뭐냐..?  (0) 2021.02.06
웹 애플리케이션  (0) 2021.01.31