클라이언트 PC기반 프로그램 -> 어렸을때 CD처럼 어떤 매개로 인하여 컴퓨터에 설치하는 것 같은 CD로 설치했으나 게임의 진행속도나 저장된것은 다 다름
-> 단점 : 업데이트 필요 시 다시 모든 클라이언트를 PC에 설치하거나 업그레이드 해야함
단점으로 보완하기 위하여 나온것이 클라이언트-서버 기반 프로그램
클라이언트란?
사용자PC에서 실행되면서 클라이언트로부터 데이터를 입력받는 기능 그리고 서버에서 전송된 데이터를 화면에 출력해주는 기능(데이터 송수신 기능만 제공)
서버란?
모든 중요한 실제기능을 담당

클라이언트/서버프로그램 -> 야후꾸러기나 쥬니버네이버 같은 형식 모두가 같은 화면을 본다 (정적)
기능이 변경되어도 모두 서버에서 처리하므로 프로그램은 수정할 필요가 없음
중요한 기능은 서버에서 처리하므로 보안측면에서도 뛰어나다
But, 사용자에 관련된 화면 기능이 바뀌면 수정해서 다시 설치해야함
-> PC기반 프로그램의 단점을 완벽히 제거하지 못함
웹기반 프로그램 -> 보는 사람마다 화면이 다름. 화면과 데이터 처리를 모두 서버에서 수행한다 ex) 구글화면은 보는 사람마다 홈의 화면이 다르다. (동적)
-> 화면과 로직을 모두 서버에서 처리하기때문에 클라이언트가 특별히 수행 할 작업이 없음. 보안적인 측면에서 월등히 우수하다

플랫폼 독립성 : 특정 운영 체제나 플랫폼에 종속되지 않음. 웹 브라우저만 있으면 어디서든 우베 기반 프로그램에 접근 가능
쉬운 배포와 업데이트 : 사용자가 소프트웨어를 설치할 필요가 없다. 개발자는 새로운버전의 소프트웨어 배포가 간편해지고, 사용자는 항상 최신버전을 사용가능
다중 사용자 접근 : 여러 사용자가 동시에 접속하고 데이터를 공유하여 협업가능
업데이트와 버그 수정의 용이성 : 서버에서 실행되기 때문에 업데이트와 수정이 쉽다. 사용자들은 새로운 기능과 개선사항을 빠르게 받을 수 있고, 수정이 이루어지면 사용자에게 즉시 반영
접근성과 편의성 : 인터넷에 연결된 장치에서 접근하므로 지리적제약X. 사용자가 소프트웨어를 설치하거나 구성할 필요가 없으므로 경험이 간소화되고 사용이 편리.
상호 운용성 : 다른 시스템과 상호 운용성 달성 가능. API를 통해 다른 애플케이션과 데이터를 공유하고 통합 가능
사용자 경험 개선 : 최신 웹 기술과 사용자 경험디자인을 활용하여 풍부하고 직관적인 인터페이스를 제공(UI). Ajax,HTML5, CSS 등의 기술을 활용하여 반응형 웹 애플리케이션을 구축 가능.