상세 컨텐츠

본문 제목

[웹시스템개발] 1. 클라이언트 서버 아키텍쳐와 MVC패턴

수업노트

by ∫2tdt=t²+c 2013. 10. 23. 23:26

본문



송민 교수님 웹시스템 개발 수업. 중간고사 때문에 억지로 정리하게 됨. 인터넷으로 들어 알게된거랑 수업때 들어서 알게되는건 느낌 차이가 참 많이 나네요..!



클라이언트-서버 아키텍쳐


클라이언트와 서버의 개념

* 클라이언트(마스터, active 역할): 요청을 전송하고 응답을 기다림

* 서버(슬레이브, passive 역할): 요청을 기다리다 요청이 오면 응답을 보내줌


* 커뮤니케이션에는 동기와 비동기 2가지 방식이 있다. 동기엔 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패턴의 장점

디자인이 명확하다

모듈화가 효율적이다

상황에 따라 여러 개의 뷰를 사용할 수 있다

구축과 유지보수가 용이하다

분산컴퓨팅 환경에 적합하다

막강한 유저 인터페이스를 구축할 수 있다


관련글 더보기

댓글 영역