코드프레소 백엔드 개발자 양성 과정
프로그램의 발전 과정
웹 프로그램의 발전 과정과 장점에 대해 알아보겠다. 우리가 브라우저를 통해 접속하는 웹 페이지라는 것은 항상 이렇지만은 않았다. 프로그래밍의 발전 과정을 세 단계로 나누어 살펴보자.
클라이언트 PC 기반 프로그램
가장 기초적인 형태의 프로그램으로는 클라이언트 PC 기반 프로그램이 있다. 클라이언트 PC 기반 프로그램은 사용자의 개인 컴퓨터에 직접 설치되어 작동한다. 환율을 계산해주는 PC 기반 프로그램으로 예시를 들어본다.
이 계산기는 calculate()
함수를 이용해 입력된 원화 액수를 미리 정의된 달러화나 엔화, 혹은 위안화로 변환해 준다. (예시로 일부만 발췌해 실제로 작동하지는 않는다.)
여기서 클라이언트 PC 기반 프로그램의 문제점이 드러난다. 예를 들면 파운드화나 유로화도 변환하는 기능을 추가하고자 한다면 사용자는 이 프로그램을 일일이 다시 설치하거나 손수 다음과 같이 코딩을 해야 한다.
이런 방식은 기능이나 화면의 형태를 업데이트하기 위해 매번 프로그램을 다시 설치해야한다는 번거로움 외에도, 클라이언트 프로그램에 데이터베이스 접속 정보가 담겨 있다가 노출될 수 있다는 위험 때문에 보안상 바람직하지 않다. 이를 보완한 클라이언트-서버 프로그램을 알아본다.
클라이언트-서버 기반 프로그램
클라이언트-서버 기반 프로그램은 모든 기능이 서버에서 이루어지는 구조이다. 클라이언트는 네트워크를 통해 서버와 통신하며 처리할 데이터를 서버에 전송하고 처리된 정보를 화면에 출력만 하는 역할을 맡는다.
환율 계산기 예제를 이어가자면 서버 측 소스 코드에서는 클라이언트로부터 데이터를 받고 보낼 기능이 추가되어야 한다.
클라이언트 측에서도 BufferedReader
와 BufferedWriter
클래스를 들여와 서버와 효율적으로 데이터를 주고 받을 수 있게 해주면 변경된 기능이 반영된다. 아울러 서버에서 요청을 처리하면 PC 기반 프로그램에서보다 데이터 보안이 유리하다.
하지만 클라이언트-서버 프로그램에도 단점이 있다. 서버단의 데이터를 생성, 표시, 저장, 변경하는 주요 비즈니스 로직 외에 화면 수정, 사용자 인터페이스 수정 등의 변화는 직접 클라이언트 PC에서 작업해야 한다는 것이다. 이 점까지 개선한 웹 기반 프로그램을 보겠다.
웹 기반 프로그램
우리가 흔히 사용하는 웹 기반 프로그램은 클라이언트 측에 아무 것도 직접 설치할 필요가 없다. 프로그램의 기능, 비즈니스 로직, 화면 설정 등 서비스의 어떤 요소가 바뀌어도 모두 서버에서 처리한다.
클라이언트-서버 기반 프로그램의 경우 환율 계산기 예제에서 새로운 화폐를 추가해도 사용자의 화면에 그 화폐를 선택할 수 있는 상자나 메뉴 옵션 등을 수정할 방법이 없었다. 웹을 이용한 프로그램은 화면 또한 변경할 수 있기 때문에 편리하게 서비스할 수 있다. 이 외에도 수시로 변동하는 환율을 동적으로 담아 계산에 실시간으로 반영할 수 있다는 점도 이전 형태의 프로그램들이 견줄 수 없는 점이다.
이렇게 웹 프로그램의 세 단계 변천사와 강점을 알아보았다.
참고 : 자바 웹을 다루는 기술 (이병승)