티스토리 뷰
데스크톱 애플리케이션을 시작으로 클라이언트 서버 애플리케이션에서 전통적인 방법과 개선된 방식을 살펴보고 마지막으로 웹 애플리케이션에 대해서 각 각 살펴보고 특징들을 정리해보려 한다.
데스크톱 애플리케이션
개인용 데스크톱에서 실행되는 애플리케이션으로 로컬 피씨로 프로그램을 다운받아 설치하고 실행하는 방식이다.
로컬 피씨의 모든 자원을 사용 할 수 있으며, MS Office 프로그램이나 게임을 설치해서 실해하는 것이 이에 해당한다.
장점
로컬 피씨의 모든 자원을 활용 가능하다.
네트워크 오버헤드가 없으므로 그만큼 속도가 빠르다.
단점
변경사항이 생길 때마다 다시 배포해야 하므로 배포가 번거롭다. → 배포 문제는 자동 갱신을 통해 해결이 가능하다. (애플리케이션을 실행할 때 먼저 서버에 갱신된 버전이 있는지 확인하여 다운로드 후 재설치하는 방식)
데이터베이스에 접속이 필요한 애플리케이션은 보안에 취약하다. → 애플리케이션에서 바로 데이터베이스에 접속하는 구조이기 때문에 접속 정보가 노출될 우려가 있다.
클라이언트 서버 애플리케이션
애플리케이션의 기능을 클라이언트와 서버로 분리한 애플리케이션을 의미 한다.
서버에서 데이터베이스에 접속 → 보안이 강화된다. (데스크톱 애플리케이션의 단점을 커버한다)
서버에서는 여러 클라이언트를 동시에 처리해주기 위해 멀티 스레드 구조를 지원한다.
장점
기능 변경이나 추가에 대해 유연하게 대처가 가능하다. → 새로운 기능을 추가하는 경우, 서버 쪽의 내용만 변경해도 되는 경우 클라이언트는 변경 사항이 없기 때문에 재설치할 필요가 없다.
단점
클라이언트의 변경 사항이 있는 경우에는 데스크톱 애플리케이션과 마찬가지로 클라이언트 배포를 해야 한다.
데이터 통신을 위한 네트워크 프로그래밍을 해야 한다.
다중 클라이언트 요청을 동시에 처리하기 위한 스레드 프로그래밍도 해야 한다.
클라이언트 서버 아키텍처의 진화
(1) 전통적인 클라이언트 서버 아키텍처
서버는 데이터 처리를 맡고 클라이언트는 UI와 비즈니스 처리를 담당한다.

데스크톱 애플리케이션의 데이터 처리 부분을 공통화하여 서버로 이관한 것이다.
장점
여러 PC에 분산되어 있는 자료를 하나의 서버에서 관리 함으로써 자료의 중복이나 불일치 성을 해소할 수 있다는 점이다.
단점
프로그램 변경 시 PC에 다시 설치해야 한다.
전통적인 클라이언트 서버 환경에서는 클라이언트가 DBMS에 바로 접속하기 때문에 보안 문제가 발생할 수 있다.
(2) 개선된 클라이언트 서버 아키텍처
클라이언트는 사용자와의 상호작용을 처리하는 UI를 담당하고 데이터 처리, 비즈니스 처리 부분을 서버로 이관한다.

클라이언트에서는 데이터를 입력받는 화면을 제공하고, 데이터를 형식에 맞춰서 서버에 보내거나 서버로부터 받은 데이터를 클라이언트에 보여주는 역할을 한다.
비즈니스 처리 부분을 담당하는 서버를 애플리케이션 서버라고 하는데, 역할은 크게 아래와 같다.
- 애플리케이션 서버는 클라이언트로부터 요청을 받아 로직에 따라 동작하며 DBMS와 연결되어 데이터를 처리한다.
- 인증된 클라이언트가 접속이 가능하게 한다.
- 함께 처리해야 될 작업들은 하나의 트랜잭션으로 묶어서 관리한다.
특징
클라이언트가 DB에 직접 접속하지 않기 때문에 DB 접속 정보가 노출되지 않는다.
비즈니스 로직 처리 부분을 서버로 이전하였기에 서버에서 기능을 변경해도 클라이언트는 변경이 필요 없다.
클라이언트 변경 시 자동 갱신 기법으로 배포 문제를 해결할 수 있다.
웹 기술을 활용한 클라이언트 서버
웹 애플리케이션 서버 구조
클라이언트와의 통신은 웹 서버가 처리함 → 네트워크 및 멀티 스레드 프로그래밍 부분을 웹 서버가 처리한다.
애플리케이션 서버는 애플리케이션 실행 및 관리에 집중


HTML과 함께 CSS, JavaScript를 이용하여 역동적인 UI를 구성할 수 있고, 표준 웹 프로토콜인 HTTP를 이용하여 데이터를 송수신함으로써 다양한 플랫폼 간에 연결을 지원한다.
기존의 클라이언트 서버 환경과 다른 점
(1) 배치
웹 환경에서는 비즈니스 로직과 UI 로직을 모두 서버에서 배치하기 때문에 기능 추가 및 변경 시 서버 쪽만 변경된다.
- 기존의 클라이언트 서버 환경은 비즈니스 처리 부분을 서버에 배치하고 UI 처리 부분을 클라이언트에 배치했다. 그로 인해 UI변경 시 클라이언트를 배포해야 한다.
- (배치란, 클라이언트에서 서비스를 요청했을 때 톰캣 서버가 애플리케이션을 실행할 수 있도록 설치하는 것이다. 웹 애플리케이션을 실행하려면 톰캣 서버에 배치(deployment) 해야 한다.)
애플리케이션 실행할 때마다 UI 로직을 내려받아야 하기 때문에 네트워크 오버헤드가 발생한다.
(2) 실행
인터넷에 연결되어 있는 환경에서 웹 브라우저를 통해서 애플리케이션 실행이 가능하다.
(3) 개발
웹 환경에서는 웹 브라우저와 웹 서버가 네트워크 프로그래밍, 멀티 스레드 프로그래밍을 대신 처리한다.
- 기존의 클라이언트 서버 환경에서는 데이터 통신을 위한 네트워크 프로그래밍, 다중 클라이언트 처리를 위한 멀티 스레드 프로그래밍을 해아 한다.

웹 애플리케이션의 등장 이유
새로운 서비스와 기능들이 빠르게 추가되어야 하는 상황에서 기존의 클라이언트 서버 구조에서 매번 클라이언트 프로그램을 재설치하는 번거로움을 없애기 위한 해결방안이 웹 애플리케이션 아키텍처이다.
웹 애플리케이션의 문제점과 개선방안
문제점
매번 출력 화면을 서버에서 만들고 클라이언트가 받아야 한다. 이는 서버 및 네트워크 자원에 대한 오버헤드 발생으로 이어진다.
비즈니스 변화에 유연하게 대처할 수 있는 애플리케이션 설계가 필요 - 모든 애플리케이션의 공통 과제이다. (객체 지향적 설계)
해결 방법
Ajax (Asynchronous JavaScript and XML)
같은 화면에서 데이터만 바뀔 때, 서버에서 UI 전체가 아닌 데이터만 받아오는 방식.
책에서 저자는 애플리케이션의 변화 과정에 대해서 정리를 해주었다. 처음 데스크톱 애플리케이션에서부터 시작하여 클라이언트 서버 구조 그리고 웹 애플리케이션에 이르기까지 어떠한 문제점이 있어서 구조 변경이 필요했음에 대해 설명해준다. 사실 이전까지 각 각의 애플리케이션은 독립적으로 존재하는 아키텍처로 알고 있었다. 보안 문제점이나 잦은 배포 문제, 역할 분배 등과 같은 이유로 애플리케이션이 다양한 구조로 발전해온 것인지 알게 되면서 애플리케이션들에 대해 연결점을 알게 되는 내용이었다.
참고문헌
- 엄진영 지음 / 열혈강의 자바 웹 개발 워크북 (1장 웹 애플리케이션의 이해) / 프리렉 / 초판 6쇄 2018년 08월 09일
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788965400677
자바 웹 개발 워크북 - 교보문고
MVC 아키텍처, 마이바티스, 스프링으로 만드는 실무형 개발자 로드맵 | 더 자바답게, 원리로 이해하는 자바 웹 개발 워크북이 책은 자바 웹 개발 기초에서 프레임워크를 사용하는 실무 내용까지
www.kyobobook.co.kr
'BackEnd > Jsp Servlet' 카테고리의 다른 글
| Intellij Servlet 프로젝트 생성 후 war 배포하기 (0) | 2021.12.27 |
|---|---|
| 웹 애플리케이션 디렉토리 구조 (0) | 2021.12.14 |
| 서블릿(Servlet) 프로그래밍 (0) | 2021.12.11 |
| HTTP 프로토콜 살펴보기 (0) | 2021.07.07 |
- Total
- Today
- Yesterday
- springboot3.x
- consumer
- docker-compose
- 서버 클라이언트
- producer
- DD파일
- Java 란
- Prometheus Operator
- ExpectedException
- 특정 ip
- Spring Cloud Stream
- MySQL 외부 IP
- kubernetes
- 데스크톱 애플리케이션
- cpus
- minikube
- 애플리케이션 변화 과정
- Kafka
- Java 장단점
- node add
- 애노테이션 프로세서
- minikube node add
- Servlet Container
- Java 특징
- ServiceMonitor
- Servlet
- StreamBridge
- WEB-INF
- 웹 애플리케이션
- OneToOne
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
