개념과 필요성, 장 단점
개발 업무를 하다 보면 라이브러리와 프레임워크라는 용어를 자주 접하게 됩니다.
둘 다 개발을 더 쉽게 하고 효율적으로 만드는 데 도움을 주는 도구들이지만, 그 의미와 사용 방식에는 차이가 있습니다.
"라이브러리(library)"라는 단어는 책을 보관하고 빌려주는 도서관이라는 뜻도 있지만, 개발에서는 정보의 저장소라는 의미로 사용됩니다.
라이브러리는 개발자가 필요로 하는 소프트웨어 부품을 잘 정리해 두고, 이를 함수 단위로 제공하여 필요한 기능을 쉽게 가져다 쓸 수 있도록 합니다.
부품처럼 사용할 수 있는 소프트웨어의 집합
함수 단위로 작은 기능을 제공하며, 사용자가 원하는 방식으로 활용
"프레임워크(framework)"는 말 그대로 뼈대나 틀을 의미합니다.
프레임워크는 단순히 기능을 제공하는 것을 넘어, 소프트웨어 개발의 형식과 사용 규칙을 제공합니다.
프레임워크를 사용하면 개발자는 일정한 규칙과 형식에 따라 소프트웨어를 개발할 수 있어, 전체적인 개발 구조를 쉽게 잡을 수 있습니다.
소프트웨어 개발을 위한 형식과 규칙을 제공
개발자는 정해진 틀 안에서 소프트웨어를 관리
건축을 예로 들어보자
라이브러리는 망치, 톱, 줄자 등 연장들이 들어 있는 상자라고 볼 수 있습니다.
망치는 무언가를 두드리는 기능을 제공하지만, 그것을 사용할지 말지는 사용자의 선택입니다.
즉, 라이브러리는 필요한 도구를 제공하고, 사용하는 방식은 사용자가 결정하는 것입니다.
프레임워크는 이미 완성된 건물입니다.
개발자는 이 건물 안에서 정해진 규칙에 따라 공간을 배치하거나 가구를 들여놓아야 합니다.
소방법에 따라 비상구를 마련해야 하고, 주어진 공간에 맞는 가구만 배치할 수 있는 것처럼, 프레임워크는 규칙과 제한이 정해져 있지만, 처음부터 건물을 짓는 것보다 훨씬 쉽습니다.
또 하나 생각해 볼 것이 이미 완성된 집을 뜯어고치는 것은 상당히 어렵다는 것입니다.
이미 지어진 건물의 벽을 허물고 새롭게 공간을 만든다거나 화장실을 옮기는 것은 상당히 큰 작업이고 때에 따라 법에 어긋날 수도 있습니다.
새로운 집을 찾아보는 것이 오히려 쉬운 일일 수도 있습니다.
마찬가지로 프레임워크가 제공하는 틀을 지키지 않고 사용하려하는 것도 어려운 일입니다.
역할: 필요한 기능을 함수 단위로 제공
사용 방식: 개발자가 원하는 대로 가져다 사용
비유: 망치, 톱 같은 연장 도구
역할: 소프트웨어 개발의 틀과 규칙 제공
사용 방식: 프레임워크의 규칙과 흐름에 따라 개발
비유: 이미 완성된 건물의 구조와 규칙
개발 속도 향상: 이미 만들어진 것을 사용하기 때문에 개발 시간을 크게 단축할 수 있습니다.
오류 감소: 검증된 도구를 사용하면 의도하지 않은 오류를 줄일 수 있습니다.
표준화된 개발: 프레임워크를 사용하면 일정한 규칙 안에서 개발이 이루어지므로 프로젝트 관리와 협업이 쉬워집니다.
학습 시간: 사용법을 익히는 데 시간이 걸릴 수 있습니다.
통제의 어려움: 특히 프레임워크는 구조를 바꾸거나 확장하는 데 제약이 많습니다.
비효율적 자원 소모: 프레임워크는 모든 경우를 고려해 만들어지기 때문에, 필요하지 않은 프로세스까지 포함되어 자원을 낭비할 수 있습니다.
라이브러리와 프레임워크는 개발을 더 빠르고 편리하게 만들어주는 강력한 도구지만,
소프트웨어의 특성에 맞지 않는 것을 선택하면 오히려 프로젝트를 처음부터 다시 시작해야 하는 상황이 발생할 수도 있습니다.
따라서 만들려는 소프트웨어에 적합한 도구를 선택하는 것이 무엇보다 중요합니다.
소프트웨어의 특성: 내가 만들고자 하는 프로그램에 라이브러리와 프레임워크가 적합한지 확인해야 합니다.
학습 시간과 개발 역량: 도구를 익히는 데 필요한 시간과 팀의 개발 능력을 고려해야 합니다.
각 도구의 장단점: 도구의 특징과 제한사항을 명확히 이해하고 선택해야 합니다.
현재 개발 시장에는 수많은 라이브러리와 프레임워크가 존재하며, 새로운 도구들이 끊임없이 등장하고 있습니다.
다양한 도구를 사용해 보고 그 장단점을 이해하는 것이 개발자로서 역량을 키우는 데 매우 중요합니다.
다양한 도구를 자유롭게 다룰 줄 아는 개발자가 더 많은 문제를 해결하고, 효율적인 개발을 이끌어갈 수 있겠죠?
https://youtu.be/2Ja7wYIZEtI?si=keTRi0JOp30_m1nh