프레임워크(FrameWork)
소프트웨어 개발을 간편하게 만들기 위한 소프트웨어 개발 환경
프레임(틀)
+ 워크(일하다)
의 합성어로 일하기 위한 틀을 제공함
프레임워크의 장점
- 개발 프로젝트에 일관된 구조를 제공하여 코드의 일관성과 가독성을 높여주며 팀 협업이 편리해짐
- 기본적으로 필요한 기능과 도구를 제공해 핵심 비즈니스 로직에 집중할 수 있음
- 보안 관련 기능을 기본적으로 제공하여 보안 취약점을 방지하는데 도움을 줌
- 통합된 테스트 환경과 도구를 제공하여 테스트를 쉽게 작성하고 실행할 수 있음
- 인기있는 프레임워크는 방대한 커뮤니티 지원을 받으며 다양한 문서를 활용할 수 있음
프레임워크의 단점
- 굉장히 복잡한 구조를 가지기 때문에 처음 익히는데 시간이 많이 소요됨
- 프레임워크의 새로운 버전이 기존 코드와 호환되지 않을 수 있음
- 정해진 규칙과 구조를 따르도록 강제하여 자유롭게 변경하기 어려울 수 있음
📚 라이브러리(Library)
애플리케이션 개발에 필요한 클래스, 함수 등을 모아 놓은 코드의 모음을 의미함
도서관에 있는 책처럼 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 가져다 쓸 수 있는 일종의 도구 역할을 수행함
라이브러리의 장점
- 개발자가 복잡한 코드를 직접 작성하지 않아서 개발 생산성이 높아진다
- 검증된 라이브러리는 테스트와 커뮤니티 지원을 통해 안정성과 품질이 보장된다.
라이브러리의 단점
- 라이브러리가 업데이트 되거나 지원이 중단될 경우 문제가 발생할 수 있음
- 버전 호환성 문제로 인해 다른 라이브러리나 기존 코드와 충돌이 발생할 수 있음 (생각보다 빈번하게 발생)
- 불필요한 기능을 포함한 라이브러리를 사용하면 비효율적임
- 라이브러리의 내부 구현을 직접 수정하기 어려워 특정 요구 사항에 맞게 조정하기 힘들 수 있음