Framework
소프트웨어 개발을 위한 구조적인 틀
framework를 통해 개발자는 반복적으로 필요로 하는 기능이나 로직을 효율적으로 처리가능
구조화된 코드의 집합
• 자주 사용되는 도구와 기능 모음
• 특정 작업을 수행하는 데 필요한 기능들이 통합적으로 제공
코드 재사용성
• 이미 검증된 코드로 구성되어 있어, 개발자가 새로 작성할 필요 없이 가져다 쓸 수 있음
대표적인 Python 프레임워크
• Django: 대규모 웹 애플리케이션에 적합
• Flask: 간단하고 가벼운 웹 애플리케이션에 적합
• FastAPI: 최신 기술 기반, 빠르고 비동기 처리에 강점
Framework의 필요성
생산성 향상
• 개발의 부수적인 요소(보안, 데이터베이스 연결 등)를 프레임워크가 처리
• 개발자는 핵심 로직에만 집중할 수 있음
안정성과 효율성
• 수많은 개발자들의 검증을 거친 안정적인 코드로 구성되어 있음
• 개발 속도를 크게 단축할 수 있음
구조적인 개발
• 프레임워크는 표준화된 방식으로 개발을 유도
• 코드 유지보수가 쉬워지고 협업이 용이
=> 빠른 개발, 높은 품질, 안전성
'기능' 구현 방법
- 하나하나 직접 구현하기
모든 것을 처음부터 직접 코딩
• 장점: 모든 동작을 깊이 이해 가능
• 단점: 시간 소모가 크고 높은 수준의 전문지식 필요
- 이미 만들어진 도구 활용
프레임워크를 사용해 기능을 가져다 씀
• 장점: 빠르게 개발 가능, 효율적
• 단점: 러닝 커브가 존재, 커스텀화에 한계, 종속성 문제
Framework를 활용한 웹사이트 개발
웹사이트 기본 기능
• 회원가입 / 로그인 / 로그아웃
• 프로필 페이지
• 비밀번호 변경
• 데이터베이스 연동
• 보안 처리
• 좋아요 / 팔로우 기능
프레임워크로 개발하면?
• 빠르게 구현 가능: 로그인/회원가입 같은 기본 기능은 이미 제공
• 효율적 유지보수: 프레임워크의 표준화된 방식 활용
웹사이트 외의 활용
모바일 앱 개발 : React Native, Flutter
데스크탑 앱 개발 : Electron, PyQT
머신러닝 : TensorFlow, PyTorch
Framework vs Library
Framework | Library | |
공통점 | 개발자의 개발을 돕는 도구 | |
제어 흐름 | Framework가 주도 | 개발자가 주도, Library 호출 |
역할 | 구조 제공, 개발 전반을 아우름 | 특정한 기능만 제공 |
규칙 | 정해진 구조와 규칙에 따라 개발 | 개발자가 원하는 방식으로 자유롭게 사용 가능 |
=> Framework: 규칙 제공, Library : 필요 기능 제공
Framework를 이해하려면
1. '구조화된 틀'이라는 본질을 파악해라
2. 효율성, 안정성, 생산성이 주요 장점임을 이해해라
3. 사용 방법에 집중해라
4. 기본 사용법/구조에 익숙해진다면 점차 내부 구조와 원리를 탐구해라