→ web service, web resources, web APIs를 포함하는 Web app개발을 지원하기 위해 만들어진 소프트웨어 프레임워크
- Web Framework를 사용하면 Dynamic Web Page 개발을 위해 필요한 작업들을 손쉽게 수행할 수 있음
Web Framework의 등장배경
- 1993년, user input 반영 등과 같이 사용자와 상호작용 가능한 dynamic page를 제공하기 위해서, 웹 서버에서 외부 app을 사용하기 위해 도입됨
- 하지만, CGI는 각각의 요청이 독립된 Process로 동작하기 때문에, 많은 user request가 있을 시 서버에 부하가 컸음
- 1995년, 서버와 언어가 완전히 통합된(language specific한 서버) 개발환경이 처음 등장하고, CodFusion, PHP와 같은 새로운 웹 관련 언어가 도입됨
- 위와 같이 dynamic web page를 만들기 위한 언어들이 일반적인 task해결을 위한 libs들이 있긴 했지만, 작업을 위해선 더욱 다양한 종류의 libs들이 필요했음
- 그래서 1990년대 후반에, 웹 개발에 유용한 많은 libs들을 개발자가 사용할 수 있는 "full stack" 프레임워크들이 등장하기 시작함
- 예시
- JAVA EE(Servlet, JSP,...)
- ASP.NET
- Django
- Ruby on Rails
- Laravel
- Spring MVC
- ...
Framework 아키텍쳐의 유형
MVC(Model-Veiw-Controller)

Push-based VS. Pull-based
Push-based(Action-based)
- 대부분의 웹 프레임워크는 push-based 아키텍쳐를 따름
- 필요한 작업을 수행하기 위해 action을 사용하고, 그 결과를 그리기 위한 view layer에 data를 "push" 함
- 대표적인 프레임워크
- Spring MVC, Django, Ruby on Rails, ...
Pull-based(Component-based)
- pull-based 아키텍쳐의 프레임워크들은 필요할 때 복수의 controller에서 결과를 "pull"할 수 있는 view layer에서 부터 시작함
- 하나의 view가 여러개의 controller를 포함할 수 있음
- 대표적인 프레임워크
- JBoss Seam, JavaServer Faces, Lift, ...
Three-tier 구조

- 웹 프레임워크는 client-server 소프트웨어 아키텍쳐 패턴인 Three-tier 아키텍쳐를 따름
- MVC 패턴과 다른 개념임
Three-tier Architecture
- Presentation tier
- data를 표현하고 유저와 상호작용하는 계층
- HTML, ...
- Logic(App, business, or middle) tier
- logic을 실행함으로써 app의 기능을 담당하는 계층
- Spring MVC, Node.js, ...
- Data tier
- data를 저장하고 관리하는 계층
- SQL, Maria DB, ...