-
어드민 페이지를 구상해야 하는 이유Today I Learned 2022. 12. 5. 22:27
프로젝트를 진행하면서 어드민 기능을 추가하는 것을 별도로 계획하고 있지 않았다. 사용자 상호 관점에서 복잡도를 높이는 것을 프로젝트의 목표로 가져가고자 했고, 각 사용자가 올린 게시글에 다른 사용자의 신청 상태를 관리한다는 방식이 서로에게 관리자 역할을 수행하는 것이라고도 볼 수 있지 않나 생각했기 때문이었다.
그러나 오후에 노아 스프린트 매니저님께서 남은 1주일 동안 작게나마 관리자 페이지를 기획하고 구현해보는 경험을 가져보는 것이 좋겠다는 조언을 주셨다.
핵심 기능을 제외한 다른 기능들을 상당부분 구현하지 못한 상황에서, 관리자 기능을 기획하고 구현할 수 있는게 있을까 싶었다. 하지만 조금 생각을 달리해보니 관리자 페이지 구현을 병행하면서 현재 기능이 생각보다 폭넓게 확장되는 데 기폭제가 되어줄 수 있을 것이라는 생각이 들었다.
의미가 불명확했던 객체의 활용성을 높인다.
현재 앱에서 게시물에 연결되어 해당 게시물이 어떤 경기인지에 대한 정보를 갖고 있는 'Game' 객체에는 GamePlace라는 객체가 있다. '경기 장소'에 대한 내용을 나타내기 위한 객체로, 현재는 단순히 장소의 이름을 나타내기 위한 값 객체로써의 역할로만 활용되고 있다. 따라서 게시글 작성 시에도 단순히 입력창에 내용을 입력하는 것으로 그친다.
이러한 '경기 장소'에 대한 정보를 관리자 입장에서 등록해 관리하게 한다면, '장소' 객체는 식별자를 갖는 Entity로써 정의될 수 있게 된다. 장소 객체가 Entity로 승격된다면 앱 내에서 활용성이 높아질 수 있다. 이를테면 사용자는 게시글을 작성할 때 운동 장소를 관리자가 등록한 장소 중에서 선택하도록 할 수 있다. 또는 사용자가 게시글을 검색해 찾을 경우, 운동 장소를 검색해 해당 장소에서 인원을 모집하는 게시글을 찾는 식의 기능으로 확장될 수 있다.
객체가 다양한 방식으로 활용되어질 수 있다.
사용자의 권한을 관리하는 기능이 있다고 생각해보자. 현재 앱에서 사용자는 모집 게시글을 작성하거나, 참가를 신청할 수 있다. 관리자가 사용자의 권한을 관리하는 가장 일반적인 경우로는 사용자의 참가 신청 권한이나 게시글 작성 권한을 막거나, 막은 권한을 다시 해제시켜주는 식의 기능을 생각해볼 수 있다. 이를 위해서는 User 객체에 권한 상태를 어떻게 나타내도록 할 것인지 설계가 필요할 것이다.
추가적으로 사용자 권한을 설정하면 해당 사용자에게 알림이 전달되는 기능을 추가한다고 하면, 참가신청/수락과 관련된 알림에 더해 다른 종류의 알람이 더해지는 것이므로 그때부터는 알림 객체가 구현되어 있는 방식을 유지하면서 알림 기능을 확장시킬 것인지, 아니면 설계를 수정해야 할 것인지 판별할 수 있을 것이다.
생각보다 현재 구현된 기능 수준으로도 관리자의 영역에서 관리해줄 수 있는 부분들을 일부분 떠올려볼 수 있었다. 그렇지만 마지막 주차에 구현해야 하는 디자인 시안을 따라 디자인하고, 문서와 인수 테스트를 보완하고, 새로운 기능과 알림 기능 보완을 시도하면서 관리자 기능을 추가하려는 것이므로, 이번 주는 관리자 페이지를 생성하고 확장할 수 있도록 처음으로 페이지를 구축하는 데 의미를 두고, 다른 작업들과의 밸런스를 염두에 두면서 기획을 진행하도록 하자.
'Today I Learned' 카테고리의 다른 글
컴포넌트가 무시하지 못할 정도로 크기가 커지고 있을 때, 한 번쯤은 의심해봐야 했다. (0) 2022.12.07 코딩 시간을 늘리고, 만들어진 코드를 최대한 노출시켜 피드백을 받는다? (0) 2022.12.06 두 가지의 서로 다른 영역이 충돌해 만들어내는 문제 해결하기 (navigate, react-modal) (0) 2022.12.04 간단한 알림 기능 구현하기 (0) 2022.12.04 책임감 (0) 2022.12.02