본문 바로가기
소프트웨어 공학

서버 프로그램 구현을 위한 서버 개발 프레임워크의 종류와 특징

by iwuooh 2021. 12. 16.

프레임워크(Framework)의 개념

사전적 의미로 골조, 뼈대를 의미하는 프레임워크는 소프트웨어 공학에서는 특정한 기능을 수행하기 위해 필요한 인터페이스나 클래스 등을 모은 집합체를 의미한다. 프레임워크에는 4가지 특징이 있다. 첫째는 모듈화(Modularity)로, 캡슐화를 통해 모듈화를 강화하여 이에 따라 소프트웨어의 설계의 구현이나 수정에 따른 영향을 최소화하여 개발하고자 하는 소프트웨어의 품질을 향상할 수 있다. 두 번째는 재사용성(Reusability)으로 앞서 모듈화를 통해 재사용이 가능한 모듈을 생산하여 개발자가 프로그램을 생산하는 데 있어 생산성을 향상한다. 셋째는 확장성(Extensibility)으로, 인터페이스의 확장이 가능한 프레임워크를 통해 다양한 기능과 형태를 지닌 소프트웨어의 개발이 가능해진다. 마지막은 제어의 흐름(Inversion Of Contol)으로 특정한 이벤트가 발생했을 때 프레임워크가 애플리케이션의 메서드를 호출하여 프레임워크가 전체 애플리케이션의 흐름의 제어를 가능하게 한다.

서버 개발 프레임워크

서버 개발 프레임워크란 서버 프로그램을 개발할 때 네트워크의 설정이나 다양한 요청 및 응답의 처리를 쉽게 할 수 있도록 인터페이스나 클래스를 제공하는 소프트웨어이다. 프레임워크의 종류에 따라 지원하는 프로그래밍 언어가 다르므로 선정할 수 있는 프레임워크도 제한적이다. 주로 모델-뷰-컨트롤러(Model-View-Controller, MVC)라 하는 소프트웨어 디자인 패턴이 사용된다. 이 방법을 사용하면 프로그램을 실행하는 데 필요한 로직을 사용자 인터페이스로부터 분리하여 해당 로직과 사용자에게 보이는 화면이 서로 아무런 영향 없이 쉽게 수정이 가능한 애플리케이션을 만들 수 있다. 컨트롤러는 모델에 명령을 보내어 모델의 상태를 바꾸고, 모델은 이렇게 상태에 변화가 생기면 컨트롤러와 뷰에 이를 다시 전송한다. 이를 통해 모델은 최신의 정보를 보여줄 수 있고, 컨트롤러는 변화에 따라 적용이 가능한 추가나 수정 작업을 지시할 수 있다. 뷰는 모델로부터 정보를 받아와서 사용자가 보게 될 화면을 만든다.

Spring

JAVA를 기반으로 만들어진 오픈소스 프레임워크로, 여러 가지 서비스를 제공하여 동적인 웹사이트를 개발하는 데 도움을 준다. 대한민국 공공기관의 웹서비스를 개발하는 데 있어서 사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술로 사용되고 있다. 스프링은 자바 객체의 생성과 소멸 같은 생명 주기를 직접 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 또, 스프링은 확장성이 높아서 스프링 프레임워크에 통합하려면 간단한 작업만 하면 되기 때문에 많은 라이브러리가 스프링에서 이미 지원되고 있고, 스프링에서 사용되는 라이브러리를 떼어내기도 쉽다.

Node.js

Javascript를 기반으로 만들어진 확장성 있는 서버 개발에 사용되는 소프트웨어 플랫폼이다. 비동기, 입/출력 처리와 이벤트 루프를 통한 높은 처리 성능을 가지고 있어서 실시간으로 입/출력이 빈번하게 발생된다. Node.js는 서버 라이브러리를 내장하고 있기 때문에 아파치 등 별도의 소프트웨어가 필요 없다. 따라서 웹 서버의 동작에 있어서 더 많은 제어가 가능하다.

Django

Python을 기반으로 작성된 오픈소스 프레임워크로, 개발하는 과정에서 번거로운 요소를 새로이 개발하지 않고 내장된 기능을 이용하여 빠른 개발이 가능하다는 장점이 있다. 복잡한 데이터베이스 기반의 웹사이트를 개발하는 데 있어서 효율적으로 작동하고자 하는 것이 Django의 주된 목적이다. 또한 컴포넌트의 재사용성과 플러그인을 가능하게 하게 하여 이를 통한 빠른 개발을 강조한다.

Ruby On Rails

Ruby를 기반으로 만들어진 오픈소스 프레임워크로 데이터베이스를 이용해서 애플리케이션을 개발할 때 코드의 반복을 최소화함에 있어 효과적이라는 측에서 인기가 많다. 또한 Ruby On Rails가 기반으로 하는 ActiveRecored는 테스트를 위한 웹서버를 지원하여 데이터베이스의 작업을 추상화함으로써 생성/읽기/갱신/삭제(Create/Read/Update/Delete, CRUD) 작업을 최대한 단순화하고 자동화시켜 신속한 개발이 가능하게끔 한다.

댓글