웹 응용 프로그램이 대중화되며 점점 프로그래밍 개발도 접근하기 쉬워지고 있다. 몇 년 전까지만 해도 코딩과 프로그래밍은 오랜 교육을 받은 소수의 사람들만 접근할 수 있었지만 오늘날에는 소프트웨어를 만들기위한 주요 지식만 습득한채 프로그래밍을 할 수 있게 되었다.
현재에는 초보자와 전문가 모두 작업을 쉽게 만들어 주는 도구를 사용하여 프로그래밍을 하는데 그것이 바로 웹 프레임워크
이다. 그렇다면 개발자에서 프로그래밍을 쉽게 만들어주는 웹 프레임워크
가 무엇인지 알아보도록 하자.
웹 프레임워크는 웹 개발 프로세스의 일부 측면을 자동화하여 더 쉽고 빠르게 만들 수 있는 소프트웨어 도구이다. 즉, 웹사이트, 웹 업플리케이션, 모바일 앱 또는 소프트웨어의 아키텍처를 구축하는데 도움이되는 모델 및 라이브러리인 것이다.
더 자세하게 설명하자면 사용자 인터페이스 / 비즈니스 규칙 / 데이터 모델
을 분리하여 웹 페이지 개발 하는 과정에서 DB연동
및 HTML템플릿 양식
, Session
, 코드 재사용
등의 개발자의 번거로움이 들어가는 부분들을 해결해 주며 여러 기능들을 제공한다.
라이브러리
도 프레임워크
와 마찬가지로 프로젝트를 개발하는데 있어 기능을 제공해주고 개발자에게 편리함을 주는데 왜 다른명칭으로 불릴까?
쉽게 말하면 라이브러리는 우리 입맛에 맞게 사용하는 기능이라면 프레임워크는 우리가 그 구조나 패키지에 맞게 개발을 해야한다는 것이다.
서비스를 구현하는데 패키지 및 모듈을 제공
하여 프로그래밍의 간편함과 속도를 높여줄 뿐만아니라 어떤 개발자라도 프로그래밍하는데 있어 필요하지만 매번 하는 공통적인 작업들을 일괄적으로 처리
해주며 그 부분에 신경을 덜 쓸 수 있게 해준다. 또한 개발 중에 발생한 오류등을 쉽게 찾을 수 있는 디버깅이나 테스트를 제공
하여 오로지 어플리케이션 로직에 더 신경 쓸 수 있는 장점이 있다.
보안
: 프레임워크는 여러 관점에서 보안을 제공한다. 외부 공격 및 문제, 충돌 속도 저하 및 기타 부정적인 측면으로부터의 보안해주며 어플리케이션의 품질이 저하될 수 있는 경우를 줄여준다.확장성
: 프레임워크는 매우 유연하다. 간단한 소프트웨어 도구에서 복잡한 도구까지 웹 어플리케이션을 구축할 때 동일한 프레임워크를 사용할 수 있다.일단 본인은 백엔드 개발자이기 때문에 백엔드 웹 프레임워크에 대해 알아보려고 한다. 백엔드 웹 프레임워크에는 두 가지 주요 유형이 존재한다.
클라이언트 측 웹 프레임워크
이 프레임워크는 사용자 인터페이스에 보다 엄격하게 초점을 맞춘 프레임워크라고 보면 된다. 이는 클라이언트 측에 사용자가 시각적으로 바라보고 프로그램과 상호 작용하는 방법 등과 관련되 모든 측면이 포함된다.
서버 측 웹 프레임워크
서버 측 프레임워크는 백엔드 기능에 사용된다. 여기서 말하는 백엔드 기능이라 하면 데이터베이스 조작
, 데이터 관리
, 웹 서버 관리
등이 있다.
이렇게 분류되는 방법 외에도 웹프레임워크를 분류하는 다른 방법도 존재하는데 대표적으로 프로그래밍 언어를 고려하는 것이다. Python, Javascript, .NET, JAVA가 가장 널리 사용되고 있는데 이런 언어에 따라 사용하는 프레임워크가 다른 것이다.
Django
가벼운 사이트보다 좀 더 무겁고 복잡한 경우 Django를 사용할 수 있다. 데이터베이스 기반의 복잡한 웹사이트 구축에 중점을 둔 Python기반 웹 프레임워크이다. Python을 사용하며 고성능 웹사이트를 보유하는 것이 우선된다면 Django를 선택해야 한다.
확장성이 뛰어나며
, 코드 재사용성 기능
을 통해 개발자는 웹사이트에서 증가하는 트래픽에 쉽게 적응할 수 있다.대규모 커뮤니티를 신뢰
할 수 있다.코드를 사용하지 않고 활용할 수 있는 패키지
가 있다.다른 유형의 웹 사이트를 만드는 데 사용해도 무방
하다.MVT(Model and View and Template)패턴
을 가진다.ORM(Objective Relational Mapping) 객체관계매핑
데이터베이스 운영을 파이썬으로 할 수 있게 한다. 다양한 데이터 베이스를 적용해야 해는 어플리케이션에서 강점을 지닌다. Model은 데이터 정보를 가공해주고 주고 받는 역할을 하는 컴포넌트이며 View는 데이터를 입력을 받거나 Model에서 넘겨주는 데이터를 출력하는 컴포넌트이다. 이 View부분에서 사용자가 시각적으로 데이터 정보를 볼 수 있다. Template는 Model 과 View사이에서 사용자의 이벤트를 처리하는 컴포넌트에 속한다.Express.js
Express.js는 javascript 기반의 백엔드 웹 어플리케이션 프레임워크이다. 웹 응용 프로그램 및 모바일 앱을 만드는 것을 목표로 한다.
대규모 커뮤니티에 의존
할 수 있다.프론트엔드 및 백엔드 웹 개발 모두에 동일한 프로그래밍 언어(JavaScript)를 사용한다
.Flask
Flask는 Python기반의 WSGI 프레임워크이다. 사용자의 브라우저가 아닌 웹 서버를 실행한다. Flask를 사용하면 원할하게 실행되는 매우 개인화된 프로젝트를 만들 수 있기 때문에 많은 최신 웹 응용 프로그램이 Flask에서 실행된다.
내장된 웹 개발 서버가 제공된다
. 이를 통해 디버깅이 더 쉬워지고 요청에 실수가 발생할 때 개발자가 브라우저에서 Python 코드를 구현할 수 있다.애플리케이션을 빠르게 개발할 수
있다. Python은 다른 개발 프로그래밍 언어보다 코딩이 덜 필요한 것으로 알려져 있다.Ruby on Rails
Ruby on Rails는 Ruby 프로그래밍 언어를 기반으로 하는 웹 개발 프레임워크이다. Ruby는 가장 인기 있는 프로그래밍 언어는 아니지만 Ruby on Rails는 단순성, 자동화된 테스트 및 라이브러리를 제공하여 프로그래밍 프로세스 중에 개발자를 돕기 때문에 매우 인기 있는 백엔드 프레임워크이다.
Spring
Spring은 Java를 사용하는 웹 개발 프레임워크이다. 복잡한 웹사이트 구축 플랫폼인 Wix와 같은 많은 인기 있고 고성능 웹 사이트를 만드는 데 사용되었다.
이러한 프레임워크의 대부분은 인기 있는 프로그래밍 언어로 작성되어 프로젝트를 구현하는 데 유용한 기능을 제공한다. 올바른 서버 환경을 선택하는 것은 프로젝트의 고유한 요구 사항에 따라 다르며 어떤 서버 프레임워크를 사용하는 것이 가장 좋은지 고려하는 것은 작업에 달려있다.
결국 웹 개발 프레임 워크의 목적을 이해하는 방법은 작성해야 하는 코드의 양을 줄이는 것이다.