프레임워크 & 라이브러리

yunuyununu·2024년 10월 27일
0

개발 상식

목록 보기
4/17


📌 프레임워크 (Framework)

원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미.

애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 된다.

제어의 역전 개념이 적용된 대표적인 기술이다.

프레임워크의 장점

프레임워크의 장점이자 사용하는 이유!

프레임워크는 구조화된 스크립트를 통해 개발자의 스크립트 패턴을 정형화 할 수 있도록 되어있으며 개발자가 반복적으로 해야 하는 공통부분을 최소화 할 수 있도록 설계되어있다. 이를 통해 개발자는 자신이 맡은 세부업무개발에 집중할 수 있으며 개발표준 준수 및 개발 품질 향상에 도움을 준다.

1. 빠른 개발: 프레임워크는 많은 기능을 제공한다. 이는 웹 애플리케이션을 빠르게 구축할 수 있다는 것을 의미한다. 프레임워크가 필요한 기능을 많이 제공하기 때문에 많은 코드를 작성할 필요가 없다.

2. 일관성: 프레임워크는 일관된 방식으로 작업하는 방법을 제공한다. 이는 코드가 작동하는 방식을 이해하기 쉽게 만들고 다른 개발자가 코드를 이해하기 쉽게 만든다. 팀 개발자와 함께 작업하는 경우 스크립트별로 작업하는 경우 스크립트 간의 일관성을 잃을 수 있다.

3. 보안: 프레임워크는 보안 기능을 제공하여 일반적인 보안 위협으로부터 웹 애플리케이션을 보호하는 데 도움을 준다. 이는 프레임워크가 보안에 대해 크게 걱정할 필요가 없다는 것을 의미한다. 프레임워크가 많은 부분을 처리하기 때문이다.

4. 커뮤니티: 프레임워크에는 프레임워크에 기여하는 개발자들의 큰 커뮤니티가 있다. 이는 다른 개발자들이 질문이나 문제가 있을 때 다른 개발자로부터 도움을 받을 수 있다는 것을 의미한다. 또한 프레임워크 사용 방법을 배우는 데 도움이 되는 많은 리소스가 있다는 것을 의미한다.

5. 최선의 방법: 프레임워크는 최상의 방법으로 구축된다. 이는 프레임워크에서 배울 수 있고 자신의 코드에서 동일한 최상의 방법을 사용할 수 있다는 것을 의미한다. 이는 더 나은 프로그래머로 만들 수 있다.

6. 확장성: 프레임워크는 확장할 수 있도록 설계되었다. 이는 프레임워크에 자신의 기능을 추가할 수 있다는 것을 의미한다. 이를 통해 특정한 필요에 맞는 웹 애플리케이션을 구축할 수 있다.

프레임워크의 단점

1. 습득 난이도에 따른 긴 학습시간 소요
다수의 개발자가 사용하며 수정의 수정을 거쳐 만들어진 코드들이 대부분이기에, 어느 정도 각 기능의 프레임워크의 코드 사용 방식을 습득해야 하기 때문에 시간이 다소 오래 걸릴 수 있다.

2. 자유롭지 못한 개발 환경
프레임워크를 한 번 사용하게 되면 그에 따른 코드 사용 방식과 규칙을 따라야 하기 때문에 개발자는 자유롭고 유연하게 프로그램을 개발하는 데에 한계가 있을 수있다. 기존 프레임워크로 구성된 구조를 유지하면서 기능을 적절히 추가해야 하기 때문에 여러 문제점이나 제약 사항이 발생할 수 있다.

예시

  • Java 서버 개발에 사용되는 Spring
  • Python 서버 개발에 사용되는 Django, Flask
  • 안드로이드 앱 개발에 사용되는 Android
  • 아이폰 앱 개발에 사용되는 Cocoa Touch
  • 웹 개발에 사용되는 Angular, Vue.js 등
  • Node.js를 위한 빠르고 개발적인 간결한 Express
  • 자바 기반의 JSP를 위한 프레임워크 Struts
  • 루비로 작성된 MVC패턴을 이용하는 Ruby on Rails
  • 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정파일들을 라이브러리화하여 구현한 프레임워크인 Mybatis, Hibernate
  • 보다 쉽게 화면을 구현할 수 있게 틀을 제공하는 Bootstrap, Foundation, MDL

📌 라이브러리 (Library)

소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 특정 기능을 모아둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미함.

예시

  • Python pip로 설치한 패키지/모듈(tensorflow, pandas, beautifulsoup 등등)
  • C++의 표준 템플릿 라이브러리(STL)
  • Node.js에서 npm으로 설치한 모듈
  • HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
  • 웹에서 사용자 인터페이스 개발에 사용되는 React.js
  • 자바스크립트 라이브러리인 Redux, Lodash 등

✨결론

프레임워크와 라이브러리의 차이는 제어 흐름에 대한 주도성이 누구에게 / 어디에 있는가에 있다.
즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있다.

  • 프레임워크는 스스로 제어 흐름의 주도성을 갖는 반면, 라이브러리는 개발자가 가지고 있다.
  • 프레임워크는 집이고, 라이브러리는 그 집 안의 가구이다.
    라이브러리와 달리 프레임워크는 이미 프로그래밍에 대한 규칙을 가지고 있다. 예를 들면 설정파일의 태그 설정이나, DB연동 방법등에 대한 규칙을 가지고 있고 개발자는 이를 따라야한다.

출처: https://cocoon1787.tistory.com/745
https://blog.naver.com/solim5351/223227835675

profile
코딩이의 끄적끄적

0개의 댓글