프레임워크
기본 뼈대와 바닥 공사가 미리 끝난 조립식 주택에 나만의 인테리어를 채워 넣는 작업대예요.
정의 소프트웨어를 만들 때 필요한 기본 구조와 필수 기능을 미리 만들어 둔 '프로그램의 표준 뼈대'예요. 개발자는 기초 토목 공사를 매번 반복하지 않고, 자신이 만들고 싶은 서비스 고유의 기능 개발에만 온전히 집중할 수 있어요.
집을 지을 때 뼈대부터 다 지어주는 도면
집을 처음부터 지으려면 땅을 다지고 배관을 묻고 기둥을 세우는 기초 공사부터 해야 해요. 이 모든 과정을 집을 지을 때마다 맨땅에서 새로 시작하면 시간도 오래 걸리고 실수로 건물이 부실해지기도 쉽죠.
소프트웨어 개발도 이와 똑같아요. 사용자가 로그인하면 본인인지 확인하고, 서버와 안전하게 데이터를 주고받으며, 화면을 전환하는 등의 기본 기능은 거의 모든 프로그램에서 공통으로 쓰여요. 프레임워크는 이런 기본 뼈대와 공통 기능을 미리 견고하게 만들어 둔 조립식 건축 세트예요.
개발자는 튼튼하게 세워진 골조 위에 어떤 벽지를 바르고 어떤 가구를 들여놓을지, 즉 우리 서비스만의 독창적인 기능만 채워 넣으면 돼요. 덕분에 며칠씩 걸릴 기초 작업을 몇 시간 만에 끝내고 본질적인 서비스 로직(동작 방식)에 집중할 수 있어요.
공구함과 놀이기구: 라이브러리와의 차이
많은 사람이 라이브러리(Library)와 프레임워크를 헷갈려해요. 둘 다 다른 사람이 미리 작성해 둔 유용한 코드 묶음이라는 점은 같지만, 흐름의 주도권을 누가 쥐고 있는지에서 결정적인 차이가 나요.
라이브러리는 내 책상 옆에 놓아둔 '공구함'이에요. 내가 집을 짓다가 필요할 때 톱을 꺼내 나무를 자르고 망치를 들어 못을 박는 식이죠. 어떤 공구를 언제, 어떻게 쓸지는 오롯이 개발자가 결정해요.
반면에 프레임워크는 정해진 레일을 따라 스스로 움직이는 '거대한 놀이기구'나 공장의 컨베이어 벨트 같아요. 전체적인 운행 시스템은 프레임워크가 통제하고, 개발자는 프레임워크가 정해준 정거장에 필요한 부품(코드)을 꽂아 넣을 뿐이에요. 개발자가 프로그램을 부르는 게 아니라, 프레임워크가 필요할 때 개발자의 코드를 호출하는 이 현상을 전문 용어로 '제어의 역전'이라고 불러요.
조금 더 정확히 말하면: 규칙이 만드는 효율과 한계
조금 더 정확히 말하면, 프레임워크는 개발 속도뿐만 아니라 협업의 질을 획기적으로 올려주는 도구예요. 수십 명의 개발자가 함께 일해도 프레임워크가 정해둔 파일 위치와 코드 작성 약속을 따라야 하므로, 누가 코드를 짜든 일관된 형태를 유지할 수 있어요.
하지만 얻는 것이 있는 만큼 정해진 규칙을 엄격히 따라야 하는 구속도 감수해야 해요. 프레임워크가 권장하는 틀에서 벗어나 아주 특이한 방식으로 프로그램을 만들려고 하면, 뼈대를 뜯어고쳐야 해서 오히려 바닥부터 만드는 것보다 더 많은 시간과 노력이 들기도 해요.
결국 프레임워크를 도입한다는 것은 완벽한 창작의 자유를 조금 양보하는 대신, 팀 전체의 생산성과 프로그램의 안정성을 챙기는 현명한 선택이라고 볼 수 있어요.
🤔 흔한 오해
프레임워크와 라이브러리는 이름만 다를 뿐 사실상 같은 것이다.
둘은 프로그램의 제어권을 누가 쥐고 있느냐가 달라요. 라이브러리는 개발자가 필요할 때 불러 쓰는 도구이고, 프레임워크는 전체 흐름을 주도하며 개발자의 코드를 호출해요.
🧺 일상에서 만나요
프로그램의 뼈대와 작동 규칙을 미리 제공해 개발자가 핵심 기능에만 집중할 수 있게 돕는 개발 플랫폼이에요.