프론트엔드와 백엔드, 식당으로 이해하기
바이브코딩을 하다 보면 프론트엔드와 백엔드라는 말을 자주 듣습니다. 보이는 곳과 보이지 않는 곳이라는 한 줄 구분부터, 식당과 에어컨 같은 비유, 그리고 로그인 버튼을 누르면 둘 사이에 실제로 무슨 일이 오가는지까지 초보자 눈높이로 풀어봅니다.
바이브코딩으로 무언가를 만들다 보면, AI가 프론트엔드와 백엔드라는 말을 슬쩍 꺼내거나, 글이나 영상에서 이 단어를 마주치게 됩니다. 어렴풋이 화면 쪽과 서버 쪽이겠거니 짐작은 하지만, 정확히 무엇이 어떻게 다른지는 흐릿한 경우가 많습니다.
사실 이 구분은 코드를 깊이 몰라도 충분히 이해할 수 있고, 알아두면 AI에게 무엇을 고쳐달라고 할 때 훨씬 정확하게 말할 수 있습니다. 여기서는 비유를 곁들여 둘의 차이를 또렷하게 정리해보겠습니다.
한마디로, 보이는 곳과 보이지 않는 곳
가장 간단한 구분은 이렇습니다. 프론트엔드는 사용자가 직접 보고 만지는 부분입니다. 화면에 보이는 버튼, 글자, 색깔, 사진, 메뉴가 모두 프론트엔드입니다. 백엔드는 사용자 눈에 보이지 않는 뒤편입니다. 입력한 정보를 저장하고, 로그인 여부를 확인하고, 계산을 처리하는 일이 백엔드에서 일어납니다.
- 화면, 버튼, 글자, 색깔
- 사용자가 보고 누르고 입력함
- 브라우저에서 동작
- 예쁘고 쓰기 편한지를 담당
- 서버, 데이터 저장소, 처리 규칙
- 사용자 눈에 보이지 않음
- 뒤편 서버에서 동작
- 데이터를 저장하고 지키는 일을 담당
식당으로 이해하기
가장 널리 쓰이는 비유는 식당입니다. 이 비유 하나면 둘의 관계가 거의 다 설명됩니다.
손님은 주방에 직접 들어가지 않습니다. 웨이터에게 주문하면, 웨이터가 주방에 전하고, 주방이 만든 음식을 다시 웨이터가 가져옵니다. 프론트엔드와 백엔드도 똑같습니다. 사용자가 화면에서 무언가를 요청하면, 그 요청이 뒤편 서버로 전달되고, 서버가 처리한 결과가 다시 화면으로 돌아옵니다.
다른 비유들도 도움이 됩니다
식당 비유가 가장 흔하지만, 다른 비유들도 각각 다른 면을 잘 비춰줍니다.
특히 에어컨 비유가 흔한 오해 하나를 잘 풀어줍니다. 화면이 곧 앱의 전부라고 여기기 쉽지만, 실은 화면은 결과를 보여주는 창구일 뿐이고 진짜 처리는 뒤편에서 일어납니다. 실내기 혼자서는 방을 시원하게 만들 수 없는 것과 같습니다.
둘은 어떻게 대화할까요
프론트엔드와 백엔드는 서로 떨어져 있으면서, 정해진 방식으로 메시지를 주고받습니다. 이 약속된 대화 창구를 API라고 부릅니다. 식당의 웨이터가 바로 API에 해당합니다. 프론트엔드가 무언가를 요청하면, 백엔드가 그것을 처리해 응답을 돌려주는 식입니다.
- 1요청프론트엔드가 필요한 것을 백엔드에 부탁합니다
- 2처리백엔드가 저장소를 뒤지고 규칙에 따라 처리합니다
- 3응답처리한 결과를 다시 프론트엔드로 돌려줍니다
- 4표시프론트엔드가 그 결과를 화면에 보여줍니다
이 요청과 응답이 우리가 앱을 쓰는 내내 끊임없이 오갑니다. 목록을 새로고침할 때도, 글을 저장할 때도, 검색을 할 때도 화면과 서버 사이에 이런 대화가 오가고 있는 것입니다.
로그인 버튼을 누르면 무슨 일이 일어날까요
구체적인 예로, 로그인 버튼을 누르는 순간을 따라가 보겠습니다. 짧은 순간이지만 프론트엔드와 백엔드가 분명히 역할을 나눠 맡습니다.
- 프론트엔드: 사용자가 이메일과 비밀번호를 입력하고 버튼을 누르면, 빈칸은 없는지 가볍게 확인한 뒤 그 정보를 백엔드로 보냅니다.
- 백엔드: 받은 이메일이 저장소에 있는지 찾고, 비밀번호가 맞는지 확인합니다. 맞으면 로그인됐다는 증표를 만들어 돌려주고, 틀리면 인증 실패를 돌려줍니다.
- 프론트엔드: 백엔드의 응답을 받아, 성공이면 사용자를 다음 화면으로 데려가고, 실패면 비밀번호가 틀렸다는 안내를 화면에 보여줍니다.
여기서 중요한 점 하나가 있습니다. 비밀번호 확인 같은 민감한 일은 반드시 백엔드에서 해야 합니다. 프론트엔드는 사용자 손에 닿는 곳이라 들여다보거나 조작하기 쉽기 때문입니다. 그래서 비밀번호도 그대로 저장하지 않고 알아볼 수 없는 형태로 바꿔 보관합니다. 무엇을 지켜야 하는 일은 보이지 않는 뒤편의 몫이라는 것입니다.
각각 무엇으로 만들까요
둘은 만드는 재료도 조금 다릅니다. 깊이 외울 필요는 없고, 이런 게 있구나 정도로만 알아두면 충분합니다.
- 화면의 뼈대와 글, 스타일
- 버튼 클릭 같은 동작 처리
- 리액트 같은 화면 제작 도구
- 브라우저에서 돌아감
- 요청을 처리하는 서버 프로그램
- 정보를 쌓아두는 데이터 저장소
- 파이썬, 자바스크립트 등의 언어
- 서버에서 돌아감
다행히 바이브코딩에서는 이 재료들을 직접 외워 다룰 필요가 거의 없습니다. 만들고 싶은 것을 설명하면 AI가 알맞은 재료를 골라 코드를 써줍니다. 다만 어느 쪽 일인지를 구분할 줄 알면, 더 정확하게 부탁할 수 있습니다.
풀스택, 그리고 혼자 다 만드는 시대
프론트엔드와 백엔드를 모두 다루는 것을 풀스택이라고 부릅니다. 예전에는 양쪽이 워낙 다른 일이라, 보통 화면을 맡는 사람과 서버를 맡는 사람이 따로 있었습니다. 한 사람이 둘 다 능숙하게 다루기는 쉽지 않았기 때문입니다.
바이브코딩은 이 경계를 많이 허물었습니다. AI가 화면 쪽과 서버 쪽 코드를 모두 써줄 수 있으니, 혼자서도 양쪽을 갖춘 것을 만들 수 있게 됐습니다. 다만 AI에게 제대로 시키려면 둘이 어떻게 나뉘고 어떻게 대화하는지에 대한 기본 그림은 가지고 있는 편이 좋습니다. 그 그림이 있어야 무엇이 잘못됐을 때 어느 쪽 문제인지 가늠할 수 있기 때문입니다.
이 구분을 알면 무엇이 좋을까요
가장 큰 이점은 AI에게 정확하게 말할 수 있다는 것입니다. 같은 문제 같아도 어느 쪽 일인지에 따라 부탁하는 말이 달라집니다.
- 버튼 색이나 글자 크기, 화면 배치를 바꾸고 싶다면 프론트엔드 쪽 이야기입니다.
- 저장이 안 되거나, 로그인이 풀리거나, 데이터가 이상하게 처리된다면 백엔드 쪽을 의심해볼 수 있습니다.
- 화면에는 잘 보이는데 새로고침하면 사라진다면, 화면과 저장소 사이 어딘가에서 정보가 제대로 오가지 않는 것입니다.
이렇게 어느 쪽 문제인지 짚어서 말하면, AI도 엉뚱한 곳을 헤매지 않고 더 빠르게 원인을 찾습니다.
정리하며
프론트엔드는 사용자가 보고 만지는 앞쪽, 백엔드는 보이지 않게 처리하고 저장하는 뒤쪽입니다. 식당의 홀과 주방, 에어컨의 실내기와 실외기처럼, 둘은 역할이 나뉘어 있으면서 끊임없이 대화하며 함께 하나의 앱을 이룹니다.
이 구분을 외워야 할 지식으로 여길 필요는 없습니다. 보이는 곳과 보이지 않는 곳, 그리고 그 사이를 오가는 요청과 응답이라는 그림 하나만 가지고 있으면 충분합니다. 그 그림이 있으면, 무언가를 만들 때도 고칠 때도 훨씬 또렷하게 길을 찾을 수 있습니다.
참고한 글
- 프론트엔드와 백엔드의 정의와 역할 (MDN, AWS, Wikipedia Front end and back end)
- HTML·CSS·자바스크립트의 역할 구분 (W3C 웹 표준 모델)
- 초보자를 위한 비유 모음, 식당·빙산·에어컨·자동차 (CodeAnalogies 등 교육 자료)
- 프론트엔드와 백엔드의 통신 방식과 로그인 흐름 예시 (교육 사이트 해설)