웹개발을 공부하면서 언젠가는 내가 만든 서비스를 실제로 누군가가 사용해보는 경험을 해보고 싶다는 생각을 막연하게 하고 있었다.
개인 프로젝트나 포트폴리오 프로젝트도 분명 의미가 있지만, 실제 사용자가 있고 운영 목적이 있는 사이트를 만드는 일은 조금 다를 것 같았다.
그러던 중 첫 웹개발 외주를 맡게 되었다.
처음부터 거창하게 시작한 프로젝트는 아니었다.
클라이언트가 웹페이지가 필요해서 크몽 같은 외주 플랫폼을 알아보다가, 내가 웹개발을 배우고 있다는 걸 떠올렸고 자연스럽게 작업을 요청하게 되었다.
나에게는 첫 외주였고, 클라이언트에게는 실제 운영할 홈페이지였다.
그래서 시작 전부터 “이건 단순히 예쁘게 만드는 작업만은 아니겠다”는 생각이 들었다.
처음 들은 요청사항
처음에는 아임웹 같은 홈페이지 제작 툴을 이용해 간단하게 웹페이지를 만들려고 했다고 한다.
하지만 직접 사용해보니 원하는 레이아웃을 만들기 어렵고, 디자인도 마음에 들지 않았다고 했다.
무엇보다 필요한 기능과 디자인을 원하는 위치에 자연스럽게 넣기 어려웠고, 수정 과정도 생각보다 불편했다고 한다.
처음 요청은 대략 이런 느낌이었다.
- 회사 소개용 홈페이지가 필요하다.
- 견적을 확인할 수 있는 기능이 있으면 좋겠다.
- 나중에 후기도 작성할 수 있으면 좋겠다.
- 관리자도 어느 정도 내용을 관리할 수 있으면 좋겠다.
- 직접 운영할 사이트이기 때문에 너무 어렵지 않았으면 좋겠다.
처음 들었을 때는 “회사 소개 홈페이지에 견적 기능 정도 들어가는 프로젝트구나”라고 생각했다.
단순 홈페이지인 줄 알았지만 확인할 게 많았다
처음에는 페이지 몇 개 만들고, 연락처와 회사 정보 넣고, 견적 계산기 정도 붙이면 될 줄 알았다.
그런데 막상 시작해보니 확인해야 할 게 생각보다 많았다.
가장 먼저 느낀 건, 기본적인 기획 방향이 아직 명확하지 않다는 점이었다.
어떤 분위기의 사이트를 원하는지, 어떤 색감을 선호하는지, 참고할 만한 레퍼런스가 있는지, 어떤 문구를 강조하고 싶은지 등이 정리되어 있지 않았다. 그래서 내가 직접 비슷한 업종의 사이트를 찾아보고, 어떤 구성이 적절할지 고민해야 했다.
기능도 마찬가지였다.
“견적 기능이 필요하다”는 말만으로는 개발을 시작하기 어렵다.
견적 항목은 어디서 관리할지, 가격은 자주 바뀌는지, 사용자가 선택한 옵션은 저장해야 하는지, 관리자에게 문의 내역이 남아야 하는지 등을 하나씩 확인해야 했다.
후기 기능도 단순히 게시판처럼 만들면 되는 문제가 아니었다.
회원가입 없이 작성할 것인지, 삭제는 어떻게 할 것인지, 동명이인이 있으면 어떻게 구분할 것인지, 관리자는 전체 후기를 삭제할 수 있어야 하는지 같은 부분을 정해야 했다.
이 과정에서 외주 프로젝트는 개발 실력만큼이나 질문을 잘하는 능력이 중요하다는 걸 느꼈다.
클라이언트가 처음부터 개발 용어로 요구사항을 말해주는 경우는 거의 없다.
결국 클라이언트가 말한 “이런 게 있으면 좋겠다”를 개발 가능한 기능 단위로 바꾸는 작업이 필요했다.
유지보수를 생각하면 선택이 달라진다
이번 프로젝트에서 가장 많이 고민한 부분 중 하나는 유지보수였다.
클라이언트는 개발자가 아니다.
그래서 사이트를 넘긴 뒤에도 가격이나 옵션을 수정할 때마다 코드를 건드려야 한다면 운영이 불편해질 수밖에 없다.
처음에는 최대한 단순하게 가기 위해 Google Sheet를 데이터베이스처럼 활용하는 방향을 고민했다.
견적 옵션과 가격을 스프레드시트에서 관리하면, 클라이언트 입장에서는 훨씬 익숙하고 수정하기 쉬울 것 같았다.
하지만 프로젝트를 진행하면서 후기 작성, 관리자 페이지, 방문 통계 같은 기능이 추가되었다.
이런 데이터는 단순히 스프레드시트만으로 관리하기에는 한계가 있었다.
결국 어떤 데이터는 Google Sheet로 관리하고, 어떤 데이터는 DB에 저장해야 하는지 나눠서 생각하게 되었다.
이때부터 프로젝트가 단순 정적 홈페이지가 아니라 프론트엔드, 백엔드, DB, 배포 환경까지 함께 고려해야 하는 구조로 확장되었다.
클라이언트가 개발을 모를 때 먼저 정리해야 하는 것
이번에 가장 먼저 정리해야 한다고 느낀 건 “원하는 방향”이었다.
클라이언트가 개발을 잘 모르는 건 당연하다.
그래서 “어떤 기능을 원하시나요?”라고 바로 물어보면 오히려 답하기 어려울 수 있다.
그보다는 먼저 이런 것들을 정리하는 게 필요했다.
- 어떤 목적으로 사이트를 운영하는지
- 방문자가 가장 먼저 봐야 하는 정보는 무엇인지
- 꼭 필요한 기능과 나중에 추가해도 되는 기능은 무엇인지
- 관리자가 직접 수정해야 하는 정보는 무엇인지
- 참고할 만한 사이트나 싫어하는 디자인은 무엇인지
- 유지보수를 어느 정도까지 쉽게 만들고 싶은지
이런 질문을 통해 클라이언트의 말을 기능으로 바꾸고, 기능을 다시 개발 범위로 정리할 수 있었다.
예를 들어 “견적을 볼 수 있으면 좋겠다”는 말은 개발 입장에서는 여러 선택지로 나뉜다.
단순 계산기인지, DB에 저장되는 견적 문의인지, 관리자에게 알림이 가야 하는지, 가격표를 외부에서 수정할 수 있어야 하는지에 따라 구조가 달라진다.
그래서 이번 프로젝트에서는 클라이언트와 계속 소통하면서 기능 범위를 조금씩 구체화했다.
첫 외주를 시작하며 든 생각
솔직히 처음에는 부담도 있었다.
내가 공부하면서 만든 프로젝트와 실제 운영할 사이트는 다르다.
내가 불편한 건 고치면 되지만, 클라이언트가 사용하는 사이트는 처음부터 더 신중해야 한다.
특히 외주는 “만들었다”에서 끝나는 게 아니라, 넘겨받은 사람이 실제로 운영할 수 있어야 한다.
그래서 디자인, 기능, 배포, 계정 관리, 환경변수, 도메인, 보안까지 생각해야 했다.
또 하나 느낀 점은, 외주 프로젝트에서는 개발자가 어느 정도 기획자의 역할도 해야 한다는 것이다.
클라이언트가 원하는 것을 그대로 구현하는 것도 중요하지만, 운영에 불편할 것 같은 부분은 먼저 제안하고 조율해야 했다.
“이 기능은 지금 꼭 필요한가?”
“나중에 관리하기 어렵지는 않을까?”
“비용을 줄이려면 어떤 구조가 좋을까?”
“개발을 모르는 사람이 수정할 수 있어야 하지 않을까?”
이런 질문들이 계속 따라왔다.
앞으로 기록할 내용
이번 외주 프로젝트 과정을 블로그에 회차별로 기록해보려고 한다.
단순히 “오늘 이걸 만들었다”는 작업 일지가 아니라, 실제로 어떤 고민을 했고 어떤 결정을 내렸는지 남기고 싶다.
앞으로는 이런 내용을 정리할 예정이다.
- 클라이언트와 요구사항을 정리한 과정
- 기술 스택을 선택한 이유
- Google Sheet를 견적 옵션 관리에 활용한 과정
- 후기 기능과 관리자 페이지를 구현한 과정
- 배포 중 겪은 문제와 해결 방법
- 도메인, SEO, 운영 점검 과정
- 첫 외주를 마무리하며 느낀 점
주니어 개발자로서 아직 부족한 점도 많지만, 이번 프로젝트는 단순히 코드를 작성하는 것 이상으로 배울 게 많았다.
기획, 소통, 개발, 배포, 운영까지 한 흐름으로 경험할 수 있었기 때문이다.
회고
첫 외주를 시작하면서 가장 크게 느낀 건, 개발은 코드를 치기 전에 이미 시작된다는 점이었다.
요구사항을 듣고, 질문하고, 기능 범위를 정리하고, 운영 방식을 고민하는 과정이 없으면 개발을 해도 계속 흔들릴 수밖에 없다.
이번 프로젝트는 처음에는 단순 홈페이지처럼 보였지만, 실제로는 클라이언트의 운영 방식까지 함께 고려해야 하는 작업이었다.
그래서 더 어렵기도 했지만, 그만큼 실제 서비스 개발에 가까운 경험을 할 수 있었다.
앞으로 첫 외주 프로젝트를 어떻게 정리하고, 어떤 문제를 만나고, 어떻게 해결했는지 차근차근 기록해보려 한다.
'개발 프로젝트 > [외주 프로젝트] 첫 외주 웹사이트 제작기: 기획부터 배포까지' 카테고리의 다른 글
| 관리자 페이지와 통계 기능 만들기 (0) | 2026.06.18 |
|---|---|
| 후기 기능 만들기: 계정 없이 등록하고 비밀번호로 삭제하기 (0) | 2026.06.16 |
| Google Sheet를 견적 옵션 DB처럼 사용하기 (0) | 2026.06.14 |
| 왜 Next.js와 Spring Boot를 썼나 (0) | 2026.06.12 |
| 말로 들은 요청을 기능 명세로 바꾸는 과정 (0) | 2026.06.09 |