프레임워크가 뭘까?

권태형·2023년 3월 13일
0

지식정리

목록 보기
28/72
post-thumbnail

항상 javascript와 node.js로 코드를 짤 때 프레임워크로 express를 사용하였다. express를 이용해서 서버를 구축하는데 대체 이 프레임워크가 뭘 하는 것이고 어째서 서버를 구축할 때 도움을 줄 수 있는 것일까?

express에 대한 포스팅은 다음에 따로 하도록 하고 이번 포스팅엔 프레임워크에 대해서 간단하게 알아보자

프레임워크란?

프레임워크는 소프트웨어 개발에서 자주 사용되는 개발 도구이다. 프레임워크는 소프트웨어 개발에 필요한 일부 기본 기능과 뼈대를 제공하여 개발자가 더욱 빠르고 효율적으로 소프트웨어를 개발할 수 있도록 해준다.

구글검색에 의한 framework 사전적 정의는 <1. 건물, 차량 또는 물체의 필수 지원구조, 2. 시스템, 개념 또는 텍스트의 기본 구조>라고 정의 되어 있다.

2번 정의가 개발 분야에서 framework 의미라고 볼 수 있고, 1번 정의와도 크게 의미는 다르지 않다. 건물을 짓거나, 차량을 제조할 때 기본적으로 먼저 축이 될 수 있는 틀을 잡고 부품을 연결하거나, 내부 구조를 잡는다. 소프트웨어나 서버 또한 앞서말한 건물과 차량처럼 틀을 먼저 잡고 시작할 수 있다.

차량을 만들 때 틀부터 수작업으로 일일이 하나하나 철을 두드려가며 구조를 잡고 틀을 만들 수도 있겠지만, 기본적인 구조를 가진 틀을 얻어 오거나 사오면 비용은 들겠지만 매 작업마다 두드리며 틀을 만들던 노동력이나 비용이 절감될 것이다.

개발의 프레임워크 또한 소프트웨어나 서버를 구축하는데 있어서도 일일이 하나씩 틀을 잡아가며 만들 수도 있지만, 프레임워크를 사용함으로써서 좀 더 효율적으로 개발을 진행할 수 있게 된다.

프레임워크가 가지는 특징

  • 제어 역전(IoC)
    프레임워크는 제어 역전(IoC) 패턴을 적용하여 개발자가 작성한 코드를 호출하는 대신 프레임워크가 개발자가 작성한 코드를 호출합니다. 이를 통해 개발자는 애플리케이션의 핵심 비즈니스 로직에 집중할 수 있다.

  • 의존성 주입(DI)
    프레임워크는 의존성 주입(DI) 패턴을 적용하여 애플리케이션의 객체 간 의존성을 관리 해준다. 이를 통해 객체 간 결합도를 낮출 수 있다.

  • 컴포넌트 기반 아키텍처
    프레임워크는 컴포넌트 기반 아키텍처를 적용하여 애플리케이션의 코드를 재사용할 수 있도록 한다.

  • 쉬운 개발
    프레임워크는 개발자가 애플리케이션을 더욱 빠르고 쉽게 개발할 수 있도록 지원 해준다. 이를 통해 개발자는 애플리케이션의 핵심 비즈니스 로직에 더욱 집중할 수 있다.

프레임워크를 사용했을 때 장단점

프레임워크를 사용하면 개발 생산성을 향상시키고 코드 유지보수성을 향상시킬 수 있지만, 학습 곡선이 있고 제한된 유연성 및 비대한 규모의 문제가 발생할 수 있다.

장점

  1. 생산성 향상: 프레임워크는 애플리케이션의 핵심 로직에 집중할 수 있도록 공통 작업을 처리해준다. 이를 통해 개발자는 코드 작성 시간을 줄이고 더욱 생산적으로 개발할 수 있게 해준다.

  2. 유지보수성 향상: 프레임워크는 코드의 일관성을 유지하고 보안적으로 안전한 코드를 생성한다. 이를 통해 개발자는 코드 유지보수 시간을 줄이고 더욱 안전한 코드를 작성할 수 있게 해준다.

  3. 높은 확장성: 프레임워크는 모듈화된 구조를 가지고 있어서 개발자가 필요한 기능만 선택하여 사용할 수 있다. 이를 통해 애플리케이션의 기능을 쉽게 확장할 수 있다.

단점

  1. 학습 곡선: 프레임워크를 처음 사용하는 개발자들은 학습 곡선을 겪을 수 있다. 프레임워크는 특정한 방식으로 동작하기 때문에 개발자들이 해당 방식에 익숙해지기 위해 학습해야 한다. 이러한 학습 곡선을 넘기기 위해서는 시간과 노력이 필요할 수 있다.

  2. 제한된 유연성: 프레임워크는 개발자가 특정 기능을 직접 구현할 수 없는 경우가 있다. 이러한 경우에는 프레임워크를 수정하거나 확장해야 할 수도 있다.

  3. 비대한 규모: 대형 프레임워크는 파일 크기가 크고 설치 과정이 복잡할 수 있다. 이러한 경우에는 애플리케이션의 실행 환경을 구성하는 데 시간과 노력이 필요할 수 있다.


참고자료(출처)
프레임워크(Framework)란? 개념, 장단점, 종류 포스팅
What Is a Framework?
제어의 역전 (Inversion Of Control, IoC)
프레임워크(framework)란?

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글