짧은 생각

해당 프로젝트를 진행하며 느꼈던 지극히 개인적인 생각들을 복기한다.

2021년 7월 12일 회의를 진행했다. 고객의 요구사항은 넷플릭스와 비슷한 컨셉의 교육 콘텐츠 웹페이지 개발이었다. 팀은 개발자 5명, 퍼블리셔 2명, 기획자 1명, 개발 리드 1명, 프로젝트 매니저 1명으로 총 10명이 구성되었는데, 이전 프로젝트들보다 개발자 비중이 높은 편이었다.

프로그램_구성도

필자는 사용자들의 메시지 관리, 이벤트별 메일, 문자발송, 앱 토큰 API 구현, 메인 카테고리 헤더 화면 등을 맡아 개발을 진행했다. 화면구성은 레이아웃 프레임워크인 SiteMesh를 사용해 유지보수가 편리하도록 했고, AWS SES SDK를 활용해 메시지 관리 시 데이터 통계를 한눈에 확인할 수 있도록 시인성을 높이는 한편, 시크릿키 관리로 보안성도 높였다. 데이터베이스는 PostgreSQL을, JDK는 가장 보편적인 JDK8을 사용했다.

해야할일

해야 할 일들을 항상 정리하고 그대로 진행하리라 다짐하지만, 지키긴 쉽지 않다.

유스케이스시나리오


설계

설계는 유스케이스 시나리오를 작성하고, 이를 바탕으로 유스케이스 클래스 다이어그램을 그린 뒤, 화면설계서로 마무리하는 순서로 진행했다.


구현

푸시

서버와 앱이 통신할 수 있도록 RESTful API를 구현했다. 앱 화면에서 푸시 설정을 제어할 수 있는 스키마 주소도 추가했는데, 토큰을 생성하는 POST API, 푸시 설정을 조회하는 GET API, 푸시 설정을 수정하는 POST API 세 가지로 구성했다. 파라미터 키는 {info_receive_yn = '', ad_receive_yn = '', notice_receive_yn = ''} 형태이며, 응답받을 파라미터는 문자열 타입이다. 푸시를 생성하는 API에서 설정 변경까지 동시에 처리할 수 있고, 생성된 instanceID로 서버에서 토큰이 조회되지 않으면 추가로 생성할 수 있도록 구현했다. 로그인이 성공하면 토큰 생성 메소드를 호출해 해당 회원번호를 갱신하고(PostgreSQL merge 활용), 로그아웃 시에는 회원번호를 0으로 갱신한다(역시 PostgreSQL merge 활용).

하나의 회원번호는 여러 개의 토큰을 가질 수 있다(1:N). 예를 들어 1번 회원이 iOS와 Android 기기를 모두 쓰거나 아이폰과 아이패드를 함께 쓸 수 있으므로, 토큰은 여러 개를 가질 수 있음을 보장해야 한다. 이에 따라 Message에서는 MulticastMessage를 활용하고, setToken에서는 addAllTokens, BatchResponse로 변경했다.

메시지

알람관리

카테고리별 영상 관련 메시지, 결제 등 알람을 확인하는 화면이다.

카테고리

카테고리

상단 카테고리 화면은 공통 include 파일로 관리하되, 스크립틀릿을 활용해 코드를 작성했다. 관리자 화면에서 카테고리를 관리할 수 있으며, 사용 여부를 체크해 노출 여부를 판단한다.