
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미.
애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 된다.
제어의 역전 개념이 적용된 대표적인 기술이다.
프레임워크의 장점이자 사용하는 이유!
프레임워크는 구조화된 스크립트를 통해 개발자의 스크립트 패턴을 정형화 할 수 있도록 되어있으며 개발자가 반복적으로 해야 하는 공통부분을 최소화 할 수 있도록 설계되어있다. 이를 통해 개발자는 자신이 맡은 세부업무개발에 집중할 수 있으며 개발표준 준수 및 개발 품질 향상에 도움을 준다.
1. 빠른 개발: 프레임워크는 많은 기능을 제공한다. 이는 웹 애플리케이션을 빠르게 구축할 수 있다는 것을 의미한다. 프레임워크가 필요한 기능을 많이 제공하기 때문에 많은 코드를 작성할 필요가 없다.
2. 일관성: 프레임워크는 일관된 방식으로 작업하는 방법을 제공한다. 이는 코드가 작동하는 방식을 이해하기 쉽게 만들고 다른 개발자가 코드를 이해하기 쉽게 만든다. 팀 개발자와 함께 작업하는 경우 스크립트별로 작업하는 경우 스크립트 간의 일관성을 잃을 수 있다.
3. 보안: 프레임워크는 보안 기능을 제공하여 일반적인 보안 위협으로부터 웹 애플리케이션을 보호하는 데 도움을 준다. 이는 프레임워크가 보안에 대해 크게 걱정할 필요가 없다는 것을 의미한다. 프레임워크가 많은 부분을 처리하기 때문이다.
4. 커뮤니티: 프레임워크에는 프레임워크에 기여하는 개발자들의 큰 커뮤니티가 있다. 이는 다른 개발자들이 질문이나 문제가 있을 때 다른 개발자로부터 도움을 받을 수 있다는 것을 의미한다. 또한 프레임워크 사용 방법을 배우는 데 도움이 되는 많은 리소스가 있다는 것을 의미한다.
5. 최선의 방법: 프레임워크는 최상의 방법으로 구축된다. 이는 프레임워크에서 배울 수 있고 자신의 코드에서 동일한 최상의 방법을 사용할 수 있다는 것을 의미한다. 이는 더 나은 프로그래머로 만들 수 있다.
6. 확장성: 프레임워크는 확장할 수 있도록 설계되었다. 이는 프레임워크에 자신의 기능을 추가할 수 있다는 것을 의미한다. 이를 통해 특정한 필요에 맞는 웹 애플리케이션을 구축할 수 있다.
1. 습득 난이도에 따른 긴 학습시간 소요
다수의 개발자가 사용하며 수정의 수정을 거쳐 만들어진 코드들이 대부분이기에, 어느 정도 각 기능의 프레임워크의 코드 사용 방식을 습득해야 하기 때문에 시간이 다소 오래 걸릴 수 있다.
2. 자유롭지 못한 개발 환경
프레임워크를 한 번 사용하게 되면 그에 따른 코드 사용 방식과 규칙을 따라야 하기 때문에 개발자는 자유롭고 유연하게 프로그램을 개발하는 데에 한계가 있을 수있다. 기존 프레임워크로 구성된 구조를 유지하면서 기능을 적절히 추가해야 하기 때문에 여러 문제점이나 제약 사항이 발생할 수 있다.
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 특정 기능을 모아둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미함.
프레임워크와 라이브러리의 차이는 제어 흐름에 대한 주도성이 누구에게 / 어디에 있는가에 있다.
즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있다.
출처: https://cocoon1787.tistory.com/745
https://blog.naver.com/solim5351/223227835675