자바 웹 개발 워크북 읽으면서 정리
코드로배우는 스프링 웹 프로젝트 책을 보면서 따라해봤는데(페이징처리까지) 게시판을 만드는 것을 성공에 초점을 맞추다 보니 전체적인 숲을 못 보는 느낌…. 그래서 자바 웹 개발 워크북 정리를 읽으면 혹시 숲을 보는데 도움이 되지 않을까하고 읽어보기로 하였다.
제1장 웹 애플리케이션의 이해
먼저 깃허브에서 실습 소스 가져오기
1.1 데스크톱 애플리케이션
1.1.2 데스크톱 애플리케이션의 문제점
- 배포가 번거롭다.
- 보안에 취약하다. 애플리케이션 실행 코드 안에 접속 정보가 들어있기 때문
Run As -> Java Application
1.2 클라이언트/서버 애플리케이션
1.2.4 클라이언트/서버 구조의 장점
이 예제의 핵심은 서버에서 계산을 수행하고 그 결과를 클라이언트로 보내주는 것입니다. 따라서 신규 연산자가 추가되더라도 서버 쪽만 변경하면 된다. 즉 기능 변경이나 추가에 보다 유연하게 대처할 수 있다.
1.2.5 문제점과 개선방안
한 번에 하나의 클라이언트 하고만 연결이 된다. 현재 연결된 클라이언트와의 연결이 끊어질 때까지 다른 클라이언트는 기다려야 한다.
계산기 서버 실행
계산기 클라이언트 실행
멀티 프로세스(Multi-process)와 멀티 스레드(Multi-thread)
멀티 프로세스 방식은 클라이언트가 연결 요청을 하면 서버 프로그램은 자신을 복제하여 클라이언트에 대응하게 하고, 자신은 다른 클라이언트의 요청을 기다립니다. 이 방식은 원본 프로세스의 메모리를 모두 복제하기 때문에 자원 낭비가 심합니다. 그에 비해 멀티 스레드 방식은 클라이언트 요청을 처리하는 일부 코드만 별도로 분리하여 실행하기 때문에 전체 메모리를 복제할 필요가 없어, 멀티 프로세스 방식보다 메모리 낭비가 적습니다.
1.3 다중 클라이언트의 요청 처리
스레드를 이용하여 다중 클라이언트의 요청을 처리하는 계산기 서버를 만듬.
다중 클라이언트의 요청의 특징
- 클라이언트의 요청 처리 부분을 별도의 작업으로 분리한다.
- 분리된 작업은 스레드에 정의한다.
- 다중 클라이언트의 요청이 동시에 병행 처리된다.
여러 개의 계산기 클라이언트 실행
1.3.2 문제점과 개선방안
예제 코드를 보면 C/S 환경에서의 프로그래밍은 데스크톱 애플리케이션보다 더 복잡합니다.
1.4 클라이언트/서버 아키텍처의 진화
DBMS 서버 -> 애플리케이션 서버 -> 웹 애플리케이션 서버
웹 애플리케이션 실습
Ø 클라이언트와의 통신은 웹 서버가 전담 -> 네트워크 및 멀티 스레드 프로그래밍으로부터 탈출
Ø 애플리케이션 서버는 애플리케이션 실행 및 관리에 집중
1.5 웹 애플리케이션 아키텍처의 특징
웹 애플리케이션 프로젝트 생성
File -> New -> Project 클릭, 프로젝트 유형은 Web -> Dynamic Web Project를 선택
이 프로젝트 유형은 서블릿 및 JSP 기반 웹 애플리케이션을 만들 때 사용함.
톰캣 서버의 실행환경 준비
톰캣 서버의 포트 번호를 설정하는 파일 – server.xml
웹 애플리케이션 배치
웹 애플리케이션을 실행하려면 톰캣 서버에 배치(deployment) 해야 합니다. 배치란, 클라이언트에서 서비스를 요청했을 때 톰캣 서버가 애플리케이션을 실행할 수 있도록 설치하는 것입니다.
서버 더블 클릭 -> Moldules -> Add Web Module… 버튼 클릭하여 웹 모듈 등록창을 띄운다.
Path 값은 웹 애플리케이션 이름입니다. 웹 브라우저는 이 이름을 사용하여 톰캣 서버에게 서비스를 요청합니다. 물론 다른 이름으로 바꿀 수 있습니다.
바꾼 후 반드시 저장해야 함.
1.5.2 웹 애플리케이션의 특징
서버 소스 분석
클라이언트가 보낸 데이터를 받아서 연산을 수행하고 그 결과를 출력하는 클래스입니다. 특이 사항은 HttpServlet 클래스를 상속받고 있다는 점이고, 상속받은 doGet() 메서드를 재정의(overriding) 한다는 점입니다.
즉 클라이언트와의 연결을 수행하는 네트워크 관련 코드도 없고, 멀티 스레드 관련 코드도 없습니다. 이것은 모두 웹 서버와 톰캣 애플리케이션 서버가 대신 처리하기 때문입니다. 이제 개발자는 업무 처리에만 집중하면 됩니다. 이렇듯 웹 환경에서의 개발은 개발자에게 많은 이점을 가져다 줍니다.
웹 애플리케이션의 등장 이유
변경될 때 마다 매번 클라이언트 프로그램을 재설치해야 한다면 사용자나 IT 부서 담당자 모두에게 악몽이다. 이런 문제를 처리할 방안으로 나온 것이 바로 웹 애플리케이션 아키텍처입니다.
1.5.3 문제점과 개선방안
웹 애플리케이션도 문제가 있습니다. 매번 출력 화면을 서버에서 만들고, 클라이언트는 이 화면을 내려 받아야 합니다. 이것은 서버 및 네트워크 자원에 대한 오버헤드를 발생시킵니다.
이를 해결하고자 AJAX라는 기술이 등장하였습니다. 같은 화면에서 데이터만 바뀔 때는, 서버에서 UI 전체를 받아오기보다는 데이터만 받아오는 것이 효율적입니다.
1.6 정리
데스크톱 -> C/S -> 웹
데스크톱 애플리케이션 => 개인용 애플리케이션에서는 최고의 아키텍처
Ex) MS 오피스, 게임 좋은 예, 하지만, 공동 작업을 요구하는 기업용 애플리케이션에는 적합하지 않음.
C/S 애플리케이션 => 동시 작업을 요구하는 기업용 애플리케이션에 적합
C/S 애플리케이션은 데이터 처리 부분과 주요 업무 로직을 서버에 두고 공유함으로써 여러 사용자가 동시에 작업해야 하는 인사관리나 회계, 고객관리 등에 필요한 최적의 업무 환경을 제공합니다. 하지만, 업무 변화가 심한 기업은 애플리케이션을 자주 배포해야 하기 때문에 관리나 사용에 문제가 됩니다.
웹 애플리케이션, 매우 유연한 사용 환경을 제공, 이기종 플랫폼 간에 매끈한 연결을 지원
인터넷이 연결되어 있고 웹 브라우저가 있는 pc라면 어디에서든 서버에 접속하여 애플리케이션을 사용할 수 있습니다.
'JAVA > spring' 카테고리의 다른 글
Servlet Programming (0) | 2020.01.09 |
---|---|
Web programming (0) | 2020.01.03 |
spring war Deployment (0) | 2019.09.18 |
github sts(eclipse) (0) | 2019.09.11 |
intellij META-INF context.xml? (1) | 2019.09.10 |
댓글