2013년 10월 27일 일요일

Clinet- Server 아키텍처

▶ 클라이언트와 서버의 개념
 º 클라이언트( 마스터, activate 역할)
   - 서버에 요청을 전송하고 응답을 기다림
 º 서버 (슬레이브, passive 역할)
   - 요청을 기다리다가 요청이 오면 응답을 보내줌


▶클라이언트와 서버의 대화방식
º 동기: HTTP 등.
º 비동기: SMTP 등이 속함

Thin Client vs Fat Client
* Thin: 서버에서 모든 중요한 처리를 하고 클라이언트에서는 단순히 내용을 보여주기만 하는 경우. 클라이언트-서버 간 통신이 잦다
* Fat: 중요한 처리가 클라이언트에서 이뤄지는 경우(Applet, Flash, JS). 서버와의 통신이 적고 서버 부담도 작다

2층(2-tier) 구조
* 클라이언트: HTTP요청을 보내고 HTML 페이지를 보여주는 역할
* 서버: HTTP요청에 응답함. SSI 나 CGI, 초기의 단순한 웹페이지 같은 경우에 해당

3층(3-tier) 구조
* 클라이언트: 2층구조와 유사
* 서버: 데이터베이스 연결(JDBC), 유저 인증 및 세션 관리 등의 작업 수행
* 데이터베이스: 실제 데이터가 보관되는 레이어

* DB: 대게 관계형 DB사용(DB2, MySQL, Oracle 등). 최근 비구조적인 데이터를 처리하는데 이용하는 NoSQL(MongoDB 등)이 떠오르고 있음

다층(multi-tier) 구조
* 웹 레이어와 다른 레이어 사이에 미들웨어를 두어서 중개하는 것이 특징
JSP, ASP, ColdFusion, PHP 의 처리기가 미들웨어의 대표적인 예

웹 애플리케이션 : 웹을 통해 제공되는 애플리케이션의 통칭
*소프트웨어: 범용 프로세서(PHP, ASP, XSLT 실행기), 특정 소프트웨어(서블릿, 스크립트)
*데이터: 데이터베이스, 세션 정보, 전역 정보
*파일: 웹페이지 파일(HTML, CSS, Script, Image...), 동적 생성 파일(템플릿, PHP, ASP, XML)

디자인 패턴

필요 이유
* 구축 및 테스트?
* 재사용 가능?
* 규모 확장 가능?
* 보안?
와 같은 문제를 쿨하게 해결하기 위함. 해결책 중 하나로 객체지향 디자인이 등장했고 지금 널리 쓰인다

MVC 패턴: 널리 쓰이는 디자인 패턴으로, 개발 부분을 3가지로 분할한다

* 모델: 시스템의 상태를 담는 부분(주로 서버 사이드와 연관됨)
모델은 단순히 변화 내역을 통지한다
할 일: 데이터베이스 테이블 관리, 세션 정보 관리, 비지니스 로직 처리

* : 시스템의 상태를 보여주는 부분(주로 클라이언트 사이드와 연관됨)
뷰는 모델로부터 데이터를 얻어와 적절하게 보여준다
할 일: 브라우저에 보여줄 정보 생성, 관리를 위한 로그 정보 생성

* 컨트롤러: 모델 혹은 뷰에 영향을 미치는 이벤트를 처리하는 부분
컨트롤러는 이벤트에 대한 응답으로 모델과 뷰의 상태를 적절하게 변경한다
할 일: 사용자가 발생시킨 이벤트에 응답(클라이언트 사이드 스크립팅, HTTP요청 처리, 리다이렉션, 전처리), 시스템 유지보수

셋은 느슨하게 결합되어있는것이 좋다

MVC패턴의 장점
디자인이 명확하다
모듈화가 효율적이다
상황에 따라 여러 개의 뷰를 사용할 수 있다
구축과 유지보수가 용이하다
분산컴퓨팅 환경에 적합하다
막강한 유저 인터페이스를 구축할 수 있다

댓글 없음:

댓글 쓰기