짧은 생각
해당 프로젝트를 진행하며 느꼈던 지극히 개인적인 생각들을 복기한다.
2021년 7월 12일, 회의를 진행했다.
고객의 요구사항은 넷플릭스와 비슷한 컨셉의 교육 컨텐츠 웹페이지 개발이었다.
팀 구성은 개발자 5명, 퍼블리셔 2명, 기획자 1명, 개발 리드 1명, 프로젝트 매니저 1명 등 총 10명으로, 이전 프로젝트들보다 개발자의 비중이 높은 편이다.
필자는 사용자들의 메시지 관리, 이벤트별 메일, 문자발송, 앱 토큰 API 구현, 메인 카테고리 헤더 화면 등을 맡아 개발을 진행하게 되었다.
간단한 개발스펙을 설명하자면, 화면구성은 레이아웃 프레임워크인 SiteMesh를 사용하여 유지보수가 편리하도록 하였고, AWS SES SDK를 활용하여 메시지 관리 시 데이터 통계를 한눈에 확인할 수 있도록 시인성과 시크릿키 관리로 높은 보안성을 높였다. 데이터베이스는 PostgreSQL, 가장 보편적인 JDK8을 사용하였다.
해야할 일들을 항상 정리하고 그대로 진행하리라 다짐하지만, 지키긴 쉽지 않다.
설계
- 유스케이스 시나리오
- 유스케이스 클래스 다이어그램
- 화면설계서
구현
푸시
서버와 앱이 통신할 수 있도록 RESTFul API를 구현한다.
App 화면에서 푸시 설정을 제어할 수 있는 스키마 주소를 추가한다.
- 토큰을 생성할 수 있는 (POST)
- 푸시 설정을 조회할 수 있는 (GET)
- 푸시 설정을 수정할 수 있는 (POST)
param key {info_receive_yn = '', ad_receive_yn = '', notice_receive_yn = ''}
응답받을 파라미터는 문자열 타입이며, 푸시를 생성하는 API에서 푸시 설정을 동시에 가능하다.
만약, 생성된 instanceID로 서버에 토큰이 조회되지 않는다면, 추가 생성을 할 수 있도록 구현하였다.
로그인 success 처리가 된다면, 토큰 생성 메소드를 호출하여 해당 회원번호를 갱신한다. (postgreSQL merge 활용)
로그아웃 시 회원번호를 0으로 갱신한다. (postgreSQL merge 활용)
하나의 회원번호는 다수의 토큰을 가질 수 있다. (1:N)
e.g., 1번의 회원번호가 IOS, Android 기기를 가질 수 있고, 아이폰, 아이패드를 가질 수 있다. 즉, 토큰은 여러개 가질 수 있음을 보장함.
Message에서 MulticastMessage
를 활용하고, setToken에서 addAllTokens, BatchResponse
로 변경한다.
메시지
카테고리별 영상 관련 메시지, 결제 등등 알람을 확인하는 화면이다.
카테고리
상단 카테고리화면은 공통 include 파일로 관리하되, 스크릿틀릿을 활용하여 코드를 작성한다. 관리자에서 카테고리를 관리할 수 있으며 사용 여부를 체크하여 노출여부를 판단한다.