공부하며 작성한 포스트입니다. 틀린 내용이나 부실한 설명이 있다면 알려주세요.😁
프레임워크는 프로그램의 기초를 구축할 수 있는 코드의 집합이다. 이를 집을 짓는것으로 비유를 해 보자. 사용자가 집을 직접 짓기 위해 설계도를 직접 그리고, 전기공사 수도공사 등 각각의 기초 작업들을 일일이 하는 것 보다, 전문 작업인들의 도움을 받아 청사진을 받고 기초공사를 끝낸 모델하우스를 기반으로 인테리어를 하면 더욱 더 쉽고 효율적으로 집을 지을 수 있는것처럼, 프레임워크를 사용한다면. 프레임워크가 제공하는 여러 기능들을 사용해서 빠르고 효율적으로 프로그램을 구축할 수 있을것이다.
프레임워크를 사용한다면 여러 이점이 있다.
프레임워크에서 제공하는 여러 도구와 패키지는 일반적인 개발 절차를 처리하므로, 개발자가 스크립트를 처음부터 작성할 필요가 없고, 이미 만들어진 코드를 재사용하게 되므로 재사용성을 높이고, 시간과 비용을 아낄 수 있으며, 초급 개발자에게 고급 개발자 못지않은 방법을 제공하므로 소스코드를 작성하는 시간을 크게 줄일 수 있다.
일반적으로 프레임워크는 기존에 있는 기능에 새로운 기능을 추가하고자 하면, 개발자가 직접 코딩을 하는 것 보다 더 간결해진다. 대부분의 프레임워크는 세션관리, 인증과 같은 기능을 제공하기 때문에 웹 개발 작업을 더 간소화 시킬 수 있으며, 이러한 프레임워크의 기능들은 대부분 다수의 개발자가 사용하며 수정하고 보완했기 때문에, 이미 검증된 코드들로 이루어져 있으며 이를 이용하여 완성도 높은 프로그램을 구축할 수 있다.
개발자가 직접 소스코드를 작성하면, 담당자의 변동 및 부재시에 혼동이 생기기 쉽고, 인수인계가 제대로 되지 않았다면 분석하는 시간이 추가로 필요하지만, 프레임워크를 사용한다면 코드가 체계적이고 상대적으로 정형화 되기 때문에, 개발자가 중간에 교체되더라도 리스크가 적고, 이후 소스코드의 유지보수도 상당히 용이해진다.
개발자는 일반적으로 SQL 인젝션, CSRF(사이트 간 요청 위조) 등 외부 공격을 방어하기 위해 추가적인 소스코드를 작성해야하지만, 프레임워크를 사용한다면 이러한 일들을 할 필요가 없다. 대부분의 프레임워크와 함께 제공되는 보안 기능들은 개발자가 웹사이트 혹은 애플리케이션을 보호할 수 있는 방법을 제공하기 때문이다.
이 외에도 DB작업 단순화 및 높은 확장성 등, 여러 장점이 있다.
세상에 완벽한 기술은 없다. 앞서 나열한 장점 외에도 물론 단점도 존재한다.
이처럼 다양한 기능을 제공하고, 미리 만들어져있는 기능을 사용하기 위해서는 당연히 학습이 필요하다.
프레임워크는 여러 개발자가 협업하여 만들어놓은 결과물이기 때문에, 새로운 프레임워크를 학습하고 능숙하게 사용하기 위해서는 많은 공부가 필요하다. 이는 회사와 회사원 모두에게 부담이 될 수 있다.
많은 기능들을 제공하지만, 이 기능들 외에, 자신이 옵션을 추가하는것에 굉장히 보수적일 수 있다.
사용법이 정해져 있고, 기본적으로 설계된 구조를 바탕으로 코드를 작성하고 기능을 완성해야하기 때문에, 코드를 유연하게 개발하는 데에는 한계가 있을 수 있다.
프레임워크는 많은 기능을 제공한다. 이는 개발자가 필요하지 않은 기능도 포함된다는 것을 의미하고, 개발 용량이 커질 수 있으며, 불필요한 기능이 메모리를 차지하기 때문에 리소스 낭비로 이어질 수 있다.
프레임워크는 많은 기능을 제공하며 프로그램을 빠르고 효율적으로 빌드업 할 수 있게 해 주는 강력한 툴이지만, 사용하기 위해서는 그에 맞는 학습이 필요하고, 제공하는 기능과 설계된 구조를 벗어난 작업에는 유연성이 떨어진다는 단점도 가지고 있다. 하지만 Spring, Django, Flask와 같은 강력한 프레임워크는 웹 개발의 프로세스를 크게 단축시켰고, 개발자가 신경써야 하는 여러 부분들을 축소시킴으로써 많은 도움이 되고 있다.