이번 포스팅에서는 프레임워크(Framework)에 대하여 공부를 해보고자 한다.
프레임워크(Framework)
'FRAME 프레임(틀,규칙 or 법칙)'+'WORK 워크(일, 소프트웨어의 목적)'
사전적 의미로는 '복잡한 문제를 해결하거나 서술하는 데 사용하는 기본 개념 구조'라고 정의되어 있다.
프레임워크는 개발을 보다 쉽고 간편하게 할 수 있도록 도와주는 도구이다.
프레임워크가 제공하는 여러 기능들을 사용한다면 빠르고 효율적으로 프로그램을 구축할 수 있지만, 프레임워크의 구조를 유지해야 한다.
사용자의 편의성과 효율성을 고려한 기반 코드가 만들어져 있다.
"프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것" - 랄프 존슨(Ralph Johnson)
Framework 장단점
프레임워크는 단점이 존재하지만 단점을 커버할 수 있을 만한 좋은 장점이 있다.
개발의 상황과 목적에 맞는 프레임워크를 잘 파악하여 선택한다면 시간과 비용을 줄이는 것은 물론이고 코드의 품질이 훌륭한 개발을 할 수 있다.
장점
개발 프로세스 간소화
프레임워크에서 제공하는 여러 도구와 패키지는 일반적인 개발 절차를 처리한다.
이미 만들어진 코드를 사용하기 때문에 스크립트를 처음부터 작성할 필요가 없어서 시간과 비용을 아낄 수 있다.
완성도
버그 발생 가능성을 처리해 줌으로써 개발자가 반복 작업에서 실수하기 쉬운 부분을 커버해 준다.
프레임워크의 기능들은 대부분 다수의 개발자가 사용하며 수정하고 보완했기 때문에, 이미 검증된 코드들로 이루어져 있다.
이를 이용하여 완성도 높은 프로그램을 구축할 수 있다.
유지보수
프레임워크를 사용하지 않고 직접 소스코드를 작성하면, 담당자의 변동 및 부재 시에 혼동이 생기기 쉽고, 인수인계가 제대로 되지 않았다면 분석하는 시간이 추가로 필요하다.
프레임워크를 사용하면 코드가 체계적이고 상대적으로 정형화되기 때문에, 개발자가 중간에 교체되더라도 리스크가 적고, 이후 소스코드의 유지 보수도 상당히 용이해진다.
확장성
프레임워크는 새로운 이슈나 기능이 주기적으로 업데이트된다.
확장성으로 인한 업데이트로 추가된 기능을 사용하여 프로그램의 품질을 향상시킬 수 있다.
단점
러닝커브
프레임워크는 다양한 기능을 제공하지만, 미리 만들어져있는 기능을 사용하기 위해서는 학습이 필요하다.
새로운 프레임워크를 학습하고 능숙하게 사용하기 위해서는 오랜 시간이 걸릴 수 있다.
제약사항
많은 기능들을 제공하지만, 이 기능들 외에, 자신이 옵션을 추가하는 것에 굉장히 보수적일 수 있다.
기본적으로 설계된 구조를 바탕으로 코드를 작성하고 기능을 완성해야 하기 때문에, 코드를 유연하게 개발하는 데에는 한계가 있다.
크기
프레임워크는 많은 기능을 제공한다.
이는 개발자가 필요하지 않은 기능도 포함된다는 것을 의미하고, 개발 용량이 커질 수 있으며, 불필요한 기능이 메모리를 차지하기 때문에 리소스 낭비로 이어질 수 있다.
Framework 종류
프론트엔드 개발에서 사용되는 대표적인 프레임워크
앵귤러(Angular)
타입스크립트 기반 오픈 소스 프론트엔드 웹 애플리케이션 프레임워크
리액트(React)
페이스북이 개발한 컴포넌트 기반의 오픈소스 라이브러리
뷰(Vue.js)
웹 애플리케이션의 사용자 인터페이스를 만들기 위해 사용하는 오픈 소스 자바스크립트 프레임워크
백엔드 개발에서 사용되는 대표적인 프레임워크
익스프레스(Express)
웹 애플리케이션 구축에 사용되는 노드JS(Node.js)용 무료 오픈소스 프레임워크
라라벨(Laravel)
PHP의 웹 프레임워크
스프링(Spring)
자바의 오픈 소스 애플리케이션 프레임워크
장고(Django)
파이썬의 대표적인 웹 프레임워크
레일즈(Rails)
루비의 오픈 소스 웹 프레임워크
'Framework' 카테고리의 다른 글
[Django] 장고(Django) 기본요소 - 데이터 저장 (0) | 2022.11.28 |
---|