[토이프로젝트] 게시판 시스템(board-system) 1. 기획
백엔드의 기본기가 되는 게시판을 구현해보기로 했습니다.
화면 구현도 생각해봤는데, 백엔드 시스템 하나 구현하기도 생각보다 할게 많아서 백엔드 API 에 집중하기로 했어요.
정말 여유가 생기면 프론트엔드 구현도 고려해볼 생각입니다.
게시판을 막상 구현하라고 하면 뭘 구현해야할지 감이 안 서서, 현재 시중에 유명한 커뮤니티 사이트 몇 군데를 찾아봤습니다.
네이버 카페, FM 코리아, 아카라이브, 디시인사이드, ...
그 외에도 SNS 서비스인 인스타그램, 페이스북, 트위터 등등도 유명합니다.
각각의 사이트의 구조를 겉에서 확인해보고 공통적인 것을 약간씩 추려내면서 기능을 간단하게 나마 기획해봤습니다.
어떤 기능이 있으면 좋겠다, 라는 간단한 생각에서 시작하여 이 기능은 어떤 흐름으로 구현될 것인지,
어떤 방식으로 구현 할 것인지 생각을 덧붙이기도 해봤습니다.
그런 생각을 브레인 스토밍하는 과정에서 1차적으로 Miro 를 사용했습니다.
Miro 는 이렇게, 포스트잇, 화살표 등과 같은 여러가지 시각화에 좋은 도구들을 제공해주는데요.
동시에 여러 사용자가 같은 창을 공유하고 수정할 수 있어서 협업에서 큰 도움이 됩니다.
실제로 도메인 주도 설계의 이벤트 스토밍 기법을 Miro 를 이용해서 하는 경우도 많은 걸로 알고 있어요.
여기서 저는 일단 당장 회원이 가입을 할 수 있도록 회원 가입 기능을 구상했습니다.
이후에 추가될 기능들을 시작하려면 먼저 사용자가 회원이 되어야 하니까요.
- 이메일/ 사용자 아이디(username) / 닉네임(nickname) 이 형식상 유효한 지, 중복되는 지 여부를 확인
- 이메일이 실존하는지 확인하기 위한 이메일 인증 기능(시작 및 실제 인증)
- 회원 가입
일단 이렇게 생각해두고, 각각의 기능들이 어떤 흐름으로 진행될지 어떤 연관이 있을 지 흐름을 시각화했습니다.
어떤 작업을 할 지 구상하고, 일정을 정하고, 여러 요구사항을 통합해서 관리하는 용도로 JIRA 를 사용했습니다.
JIRA 에서는 애자일 방법론을 구현하기 위한 여러가지 기능들을 제공하는데요. 아직 애자일 방법론에 익숙하지 않기도 하지만 JIRA 의 기능들이 여러모로 어떤 작업을 해야하는지 시각화를 잘 해줘서 써보기로 했습니다.
일단 제가 이해한 바에 따르면
- 에픽 : 큰 주제, 프로젝트에서 도달해야할 고급적인 요구사항
- 스토리 : 에픽을 구성하는 작업
- 서브태스크 : 스토리를 구현하기 위한 더 작은 작업들
이였고, 이러한 조건에 따라 기능을 정의했습니다.
그리고 각각의 에픽, 스토리, 서브태스크마다 설명을 추가적으로 작성할 수 있더군요.
각각의 작업마다 요구사항, 구현 방법론, 인수 조건 등을 명시해두고 그 기준에 따라 기능을 구현하거나 팀원간의 협의를 통해(댓글 기능도 있습니다.) 요구사항을 실시간으로 변경할 수도 있을 것 같아서 문서화 관점에서도 도움이 되는 것 같습니다.
대략적인 프로젝트 기획 과정은 여기서 간략하게 언급하고, 뒤 이어지는 글들에서는 프로젝트를 구체적으로 어떻게 구현해나가는 지 소개해보겠습니다.