모든 프로젝트의 시작은 프로젝트 설계로 시작한다. 클라이언트의 요구사항에 맞추어 어떠한 방식으로 프로그램을 만들 지 설계하고 해당 설계에 대한 실현 가능성과 경제성, 타사 프로그램과의 경쟁력 등을 꼼꼼하게 비교한 후, 최종 결정된 설계에 따라 유의사항과 어떠한 방식으로 기능적인 부분을 구현할 지 간단하게 다이어그램으로 확인하며 개발에 사용할 소프트웨어를 결정하고 나면 드디어 프로그램 개발을 위한 전체적인 설계 과정이 완료된다. 실제 코드 구현에 들어가기 전까지 계속해서 점검하는 설계 과정은 본격적인 코드 작성 과정에서의 길을 알려주는 척도와 다름 없기 때문에 중요하다고 할 수 있다. 이번 개발을 진행하며 펜타애플 팀 내에서 작성했던 여러 설계 산출물을 순서대로 설명하며 프로젝트 설계의 전반적인 과정을 자세하게 소개하고자 한다.
1. 클라이언트의 요구사항 확인하기
우선 이화 맛집 커뮤니티 웹사이트를 제작하기 위해 전달받은 클라이언트의 개발 요구사항을 정리하였다. 클라이언트의 요구사항을 도표로 만들어 정리하면 어떤 업무를 가장 최우선으로 해야하는 지 알 수 있을 뿐 아니라 각 기능에 따라 정리한 요구사항을 토대로 어떠한 방식으로 분업해야 하는 지 한눈에 파악할 수 있다. 공유 드라이브를 생성하여 각 기능의 요구사항에 맞춰 어떠한 방식으로 작동할 기능인지, 개발 난이도는 어떠한지, 필수 요구사항에 포함되는 것인지 정리하여 요구사항 정의서를 작성하였다.

위의 사진은 실제로 이번 Ettopia 개발 초기에 작성했던 요구사항 정의서의 일부분으로, 해당 표를 보면 서비스에 따라 구분되어 있으며 개발할 기능에 따라 난이도 및 우선순위가 결정되어 있는 것을 확인할 수 있다.
2. 사용할 오픈소스 소프트웨어 및 기술 결정하기
요구사항을 정리하여 개발의 우선순위와 개발 방향을 정한 후에 이를 토대로 어떤 오픈소스 소프트웨어를 개발에 사용할 것인지 결정하였다. 프론트엔드 개발 완료 전까지는 Github를 이용하여 각자 코드를 작성해 취합하기로 하였으며, 이후 백엔드 개발부터는 누구나 쉽게 사용할 수 있는 Goormide를 이용해 Flask를 통해 개발하기로 결정하였다. 펜타애플 팀에게는 오픈소스 소프트웨어를 결정하는 것만큼 중요한 사항이 몇 가지 존재했다.
Ettopia 서비스를 더욱 더 돋보이게 하고 사용자의 입장으로써 Ettopia를 보다 더 편리하게 사용할 수 있게 해줄 기능 중 하나인 '맛집 지도 서비스'를 구현하기 위해서는 지도 API를 사용해야 했다. Ettopia 서비스에 어울릴 API를 찾아내기 위해 찾아낸 여러 지도 API를 개발에 사용하기 전 직접 실습을 하여 실습 보고서를 작성하였다. 구글 Map API와 카카오 지도 API, 네이버 지도 API를 후보로 잡아 실습을 진행하였고, 조사 및 실습을 통해 상대적으로 Ettopia 프로젝트 구현과 관련된 많은 기능을 제공하는 카카오 지도 API를 사용하기로 결정하였다.
3. 요구사항 기반 웹 프론트엔드 구조도 제작
웹사이트 내의 모든 기술적인 설계를 마치고 난 후, 웹사이트의 디자인과 맛집 커뮤니티 브랜딩을 위해 관련 조사 및 보고서 작성을 진행하였다. 제작하려는 웹페이지와 비슷한 기능을 가진 사이트의 특징을 분석하고 Ettopia 제작 시 필수로 들어가야 하는 기능을 확정하여 요구사항 정의서를 최종 수정한 후, 제작하려는 웹사이트의 전반적인 목표와 다른 팀과의 차별점을 작성하였다. 다음은 작성한 브랜딩 기획서 및 보고서의 일부이다.


작성한 브랜딩 보고서와 회의를 통해 결정한 프로젝트의 지향점에 맞는 UI/UX를 실제 개발에 들어가기 전 확인해보기 위해 Figma를 사용하여 Ettopia의 웹페이지를 제작하였다.
