안녕하세요!
오늘은 개발 공부 시작하면 거의 첫 주에 마주치는 단어, 프레임워크(Framework) 에 대해 정리해보려고 합니다.
솔직히 이거 처음 들었을 때 저도 그냥 "뭔가 큰 도구 같은 거겠지" 하고 넘어갔어요. 근데 막상 공부하다 보면 React도 프레임워크, Django도 프레임워크, Flutter도 프레임워크... 다 프레임워크라고 부르는데 왜 이렇게 종류가 많은지, 뭘 골라야 하는지 혼란이 오더라고요.
거기다 "프레임워크랑 라이브러리가 다른 거 아니에요?" 하는 질문까지 나오면서 더 미궁에 빠지는 경험 다들 한 번씩 하셨을 거예요.
이 글에서는 그 혼란을 한 번에 정리해드리려고 합니다. 어려운 말 없이, 실제로 쓰이는 맥락 중심으로 풀어볼게요.
![]() |
| [웹개발 기초] 프레임워크란 무엇인가? |
1. 프레임워크가 뭔지, 진짜 쉽게 설명하면
프레임워크(Framework) 를 직역하면 "틀" 또는 "뼈대" 입니다.
개발에서의 프레임워크는 쉽게 말하면 이렇습니다.
"앱이나 웹을 만들 때 필요한 기본 구조와 규칙을 미리 갖춰놓은 개발 도구 세트"
비유를 하나 들어볼게요.
집을 짓는다고 생각해봅시다.
맨땅에서 처음부터 집을 지으려면 어떻게 해야 할까요? 설계도 만들고, 기둥 세우고, 벽 올리고, 배선하고, 배관하고... 전문 지식이 없으면 어디서 시작해야 할지조차 막막하잖아요.
근데 조립식 주택 키트가 있으면 어떨까요? 기둥이랑 벽이랑 지붕이 이미 규격에 맞게 준비되어 있고, "여기에 이거 끼우고, 저기에 저거 연결하세요" 하는 설명서까지 있는 거예요.
기본 구조는 다 갖춰져 있으니까, 나는 내 집에 맞는 내부 인테리어만 신경 쓰면 됩니다.
그 조립식 주택 키트가 프레임워크입니다.
개발도 똑같아요. 프레임워크가 없으면 로그인 기능, 화면 라우팅, 데이터 처리 같은 것들을 전부 처음부터 만들어야 해요. 프레임워크를 쓰면 이미 그 기반이 다 갖춰져 있고, 나는 내 서비스에 맞는 기능만 채워 넣으면 됩니다.
2. 그럼 라이브러리는 뭐가 다른 거예요?
프레임워크 얘기 나오면 항상 같이 나오는 질문이 있어요.
"라이브러리(Library)랑 프레임워크가 다른 건가요?"
결론부터 말하면 다릅니다. 그런데 딱 한 가지 핵심 차이가 있어요.
프레임워크는 내가 프레임워크 안에서 코드를 짜고, 라이브러리는 내 코드 안에서 라이브러리를 가져다 씁니다.
이게 무슨 말인지 좀 더 풀어볼게요.
라이브러리는 내가 필요할 때 꺼내 쓰는 도구예요. 요리할 때 칼이 필요하면 칼 집에서 꺼내 쓰고, 다시 넣는 것처럼요. 내가 주도권을 가지고 있어요. 쓰고 싶을 때 쓰고, 안 쓰고 싶으면 안 쓰면 됩니다.
프레임워크는 반대예요. 프레임워크가 전체 흐름을 잡고, 내가 그 흐름 안에 코드를 끼워 넣는 방식이에요. "여기에 로그인 로직 작성하세요", "여기에 화면 컴포넌트 넣으세요" 하는 자리가 이미 정해져 있고, 나는 거기에 맞게 코드를 작성합니다.
이걸 개발 용어로 IoC (Inversion of Control, 제어의 역전) 라고 부르는데요. 지금 당장 이 용어 외울 필요는 없고, "프레임워크가 흐름을 주도한다"는 감각만 잡으면 됩니다.
실제 예시로 비교해볼게요
| 구분 | 예시 | 특징 |
|---|---|---|
| 라이브러리 | axios, lodash, moment.js | 내가 필요한 기능만 골라서 씀 |
| 프레임워크 | React, Vue, Django, Flutter | 전체 구조와 규칙이 정해져 있음 |
사실 React를 라이브러리로 부르는 사람도 있고 프레임워크로 부르는 사람도 있어요. 공식적으로는 React 자체는 라이브러리인데, 주변 생태계(라우터, 상태관리 등)까지 합치면 프레임워크처럼 동작하거든요. 이런 경계가 애매한 경우도 있다는 거 참고로 알아두면 됩니다.
3. 프레임워크를 왜 쓰냐고요? — 쓰는 이유가 분명합니다
"그냥 처음부터 직접 만들면 안 되나요?" 하는 분들도 있어요. 이론적으론 가능한데, 실무에선 거의 안 그렇습니다. 이유가 있어요.
첫째, 속도가 압도적으로 빠릅니다. 자주 쓰이는 기능들이 이미 구현되어 있어요. 회원가입, 로그인, 페이지 이동, 데이터 요청 같은 것들을 처음부터 짤 필요가 없어요.
둘째, 구조가 일관됩니다. 혼자 짤 땐 괜찮은데, 팀으로 일할 때 각자 다른 방식으로 짜면 코드가 뒤죽박죽이 돼요. 프레임워크를 쓰면 "이 프레임워크 방식대로 짜자" 하는 공통 규칙이 생겨서 협업이 훨씬 쉬워집니다.
셋째, 보안과 안정성이 검증되어 있어요. 오랫동안 많은 개발자들이 써오면서 버그도 고쳐지고, 보안 취약점도 패치돼왔어요. 내가 처음부터 짜면 내가 모르는 보안 구멍이 생길 수 있는데, 프레임워크는 그런 부분이 어느 정도 검증이 된 상태예요.
넷째, 커뮤니티와 문서가 풍부합니다. 막히면 검색하면 나와요. 한국어 자료도 많고, 유튜브 강의도 넘쳐요. 처음 짜는 코드에서 막히면 구글에 물어보면 되는데, 직접 만든 도구는 구글에 물어볼 수가 없잖아요.
4. 프레임워크 종류 — 영역별로 뭐가 있는지 정리
프레임워크는 용도에 따라 완전히 다른 종류가 있어요. 크게 프론트엔드, 백엔드, 앱 개발 세 영역으로 나눠서 보면 됩니다.
프론트엔드 프레임워크 (화면 만드는 쪽)
React — 현재 웹 프론트엔드에서 가장 많이 쓰이는 라이브러리(또는 프레임워크)예요. Facebook이 만들었고, 컴포넌트 단위로 화면을 조립하는 방식입니다. 취업 시장에서 수요가 가장 높아요.
Next.js — React 기반으로 만들어진 프레임워크예요. React만으론 부족한 서버사이드 렌더링, SEO 최적화, 파일 기반 라우팅 같은 기능들을 추가로 제공합니다. 요즘 웹 개발에서 React + Next.js 조합이 많이 쓰입니다.
Vue.js — React보다 진입장벽이 낮다고 알려진 프론트엔드 프레임워크예요. 국내 중소기업이나 스타트업에서 많이 볼 수 있어요.
Svelte — 비교적 최근에 주목받고 있는 프레임워크입니다. 빌드 시점에 코드를 컴파일해버려서 속도가 빠른 게 특징이에요.
백엔드 프레임워크 (서버 만드는 쪽)
Django (Python) — Python 기반 백엔드 프레임워크 중 가장 규모가 크고 기능이 많아요. 관리자 페이지, 인증 시스템, ORM이 기본으로 내장되어 있어서 빠르게 서비스를 만들 수 있어요.
FastAPI (Python) — Django보다 가볍고 빠른 Python 백엔드 프레임워크예요. API 서버 만들 때 많이 쓰이고, 자동 문서화 기능이 있어서 개발 효율이 좋습니다.
Express.js (Node.js) — JavaScript로 백엔드를 만들 수 있는 가벼운 프레임워크예요. 프론트엔드에서 JavaScript를 쓰던 사람이 백엔드까지 JS로 연장해서 쓸 수 있다는 게 장점입니다.
Spring (Java) — 대기업이나 금융권에서 많이 쓰이는 Java 기반 백엔드 프레임워크예요. 규모가 크고 안정적이지만 학습 곡선이 높은 편이에요.
앱 개발 프레임워크 (모바일 앱 만드는 쪽)
Flutter — Google이 만든 크로스플랫폼 프레임워크예요. 코드 하나로 iOS, Android, 웹, 데스크탑 앱을 동시에 만들 수 있어서 소규모 팀이나 개인 개발자한테 인기가 많습니다. 이 블로그에서 자주 다루는 그거 맞아요.
React Native — React 문법으로 iOS, Android 앱을 만드는 프레임워크예요. 이미 React를 쓸 줄 아는 웹 개발자가 앱까지 확장할 때 많이 선택합니다.
5. 그래서 뭘 배워야 하냐고요? — 선택 기준 정리
여기까지 읽으면 또 다른 고민이 생기죠.
"이렇게 많으면 대체 뭘 먼저 배워야 해요?"
정답은 없지만, 선택 기준을 잡는 방법은 있어요.
목표가 취업이라면 — 시장 수요가 높은 걸 선택하는 게 유리합니다. 웹이면 React, 백엔드면 Node.js나 Python(FastAPI/Django), 앱이면 Flutter나 React Native 중에서 골라보세요.
목표가 빠르게 뭔가 만드는 거라면 — 진입장벽이 낮고 튜토리얼이 많은 걸 선택하세요. Flutter나 Next.js는 한국어 자료도 많고 커뮤니티가 활발해요.
바이브코딩으로 AI랑 같이 만들 거라면 — 사실 어떤 프레임워크든 AI가 잘 알고 있어요. 단, 내가 결과물을 이해하고 수정하려면 기초 개념은 잡혀 있어야 합니다. 그래서 오늘처럼 개념을 먼저 잡는 게 맞아요.
가장 중요한 건 하나를 골라서 끝까지 써보는 것이에요. 이것저것 조금씩 건드리다 보면 어느 것도 제대로 안 남는 경험, 저도 해봤습니다.
프레임워크, 외울 게 아니라 쓰면서 익히는 겁니다
처음엔 이름도 낯설고 종류도 너무 많아서 막막하게 느껴질 수 있어요.
근데 솔직히 지금 당장 다 알 필요 없어요. "아, 개발할 때 이런 도구들이 있고, 역할별로 나뉜다" 는 전체 그림만 잡아두면 됩니다.
오늘 정리한 내용만 기억해도
- 프레임워크가 왜 존재하는지, 어떤 역할인지
- 라이브러리랑 뭐가 다른지
- 프론트엔드 / 백엔드 / 앱 영역별로 어떤 프레임워크가 있는지
- 내 상황에 맞게 선택하는 기준
이 정도면 충분해요.
열공하세요! 🙌
![[웹개발 기초] 프레임워크란 무엇인가?](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqS02qZozdWmIAXzX46djTcN2aVi4HqivyeRkqGI5j9U575iR23CJvPwWw-0I_lJ1lqNXd2xI2yZvab4cDu1akBL5JVmI08HcnEoXaBqyynPFsnxFUuXK4zeXF7ELZbsu3tun4rLoTk2R7efQ3QXJ2wMp5_N0ueqWo7iAMnEcju5EGxrP0bE2954gaeI8/w320-h180/ChatGPT%20Image%202026%EB%85%84%206%EC%9B%94%208%EC%9D%BC%20%EC%98%A4%ED%9B%84%2004_44_10.png)
댓글 없음:
댓글 쓰기