Web

Web Framework란?

심리밀당남 2021. 8. 2. 17:33

→ 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)

  • 대부분의 프레임워크들은 MVC 아키텍쳐 패턴을 따름
    • MVC 패턴의 중심 컴포넌트
    • app의 유저 인터페이스에 독립적인 dynamic data scturcture 임
    • conteroller로부터 user input을 받음
    • model이 직접적으로 data, logic, app의 규칙들을 관리함. app의 data 관리에 책임이 있는 부분
    View
    • model의 정보를 특정 형식으로 그림
    • 유저가 보는 화면
    Controller
    • user input에 응답하고 data model objects와 상호작용을 수행함
    • user input을 validate하고 model에 넘겨줌
  • Model

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

  1. Presentation tier
    • data를 표현하고 유저와 상호작용하는 계층
    • HTML, ...
  2. Logic(App, business, or middle) tier
    • logic을 실행함으로써 app의 기능을 담당하는 계층
    • Spring MVC, Node.js, ...
  3. Data tier
    • data를 저장하고 관리하는 계층
    • SQL, Maria DB, ...

Framework Applications 종류

  • 프레임워크는 하나의 프로그래밍 언어에 기반하여 web 개발을 위한 문제 해결을 지원하기 위해 만들어짐

Server-side

  • Spring MVC / node.js / Jenkins.js / Ruby on Rails, ...

Client-side

  • React / Vue / Angular
    • 참고: React는 프레임워크가 아닌, 라이브러리를 표방하기는 함
    • 하지만 프레임워크와 라이브러리의 차이가 칼같이 discrete하기 어려워, 프레임워크에 포함시킴

Frameworks의 주요 특징

Inversion Of Control

  • 추후 자세히 다룰 예정

Web Template System

  • view 개발을 돕는 web template system(template engine + content resource + template resource) 존재

Caching

  • bandwidth 사용량, server load, 사용자가 느끼는 '랙' 등을 줄이기 위해 web documents를 캐싱 가능

Security

  • 일부 웹 프레임워크는 웹 서버가 app 사용자를 식별하고 정의된 기준에 따라 기능에 대한 액세스를 제한할 수 있는 authentication과 authorization 프레임워크와 함께 제공됨

Database Access, Mapping, Configuration

URL mapping

  • url Rounting

AJAX

  • Ajax(Asynchronous Javascript and XML) 기술 지원

Web Services

  • 일부 프레임워크는 웹 서비스를 만들고 제공하기 위한 도구를 제공

Web Resources

  • 많은 수의 Web 2.0 RESTful 프레임워크들는 현재RDF(Resource Description Framework)의 개념을 기반으로 일종의 Semantic Webontology에서 리소스 모음을 구축하기 위한 리소스 지향 아키텍처(ROA) 인프라를 제공

출처

Web framework - Wikipedia

Model-view-controller - Wikipedia

Multitier architecture - Wikipedia