하루에 한 줌씩 🧑🏻🌾🌱 꾸준히 습관을 기록해보자!
하루 한 줌은 체득하고 싶은 습관들을 기록하여 꾸준히 이뤄나갈 수 있도록 도와주는 서비스입니다.
사용자들이 단순히 자신의 습관을 만드는 것보다 좀 더 재미있게 습관을 형성할 수 있도록 하자는 취지에서 시작된 프로젝트입니다.
따라서 내 습관뿐만 아니라 친구의 습관까지 확인하고 독려할 수 있습니다.
개발 기간: 2022/08/26 ~ 2022/10/07
런칭: 2022/10/03
유저 피드백: 2022/10/03 ~ 2022/10/07
추가 업데이트: 2022/10/03 ~ 진행 중
Git Action
CI & CD 구축 당시 구축된 환경에서 팀원들이 개발에만 집중할 수 있게 만드려는 것이 우리의 중점 과제였다.
대안으로는 Genkins Travis가 존재했으나 둘다 EC2서버를 두대로 CI & CD 구축해야 한다는 차이점이 존재했다.
Git Action은 하나의 서버로 CI & CD구축이 가능하여 서버 비용의 문제 감당 시 비용 최소화를 할 수 있다고 생각했다.
레퍼런스도 많고 러닝커브가 적으며 원격 저장소로 Git Hub를 사용하는 우리에겐 git action은 난이도도 적용하기도 제일 쉽다고 생각했다.
상기 이유들로 비용 최소화 , 최소한의 시간으로 구축된 환경을 만족한다고 생각하여 Git Action으로 자동 배포환경을 구축했다.
google, kakao, naver 소셜로그인
로그인을 구현하게 되었을 때 사용자들의 편의성을 고려하는 단계에서 일반 로그인은 편의성을 떨어뜨린다고 판단했다.
소셜 로그인으로 인증 , 인가를 보증된 소셜(kakao등)에 맡겨 간편한 로그인 처리 방식으로 편의성을 향상시키고자 하였다.
소셜 로그인 중 애플의 경우 (1년간 9~12만원의 비용) 결제금액의 이슈로 카카오 , 네이버 , 구글 3개의 소셜로그인을 선택하게 되었다.
git hub는 일반 사용자들에겐 접근성이 떨어진다고 판단했고 facebook은 naver, goolge로 대체 가능하다 판단했다.
상기 이유들로 3개의 소셜 로그인을 선택하게 되었고 그에따라 편의성을 향상시킬 수 있었다.
Redis
데이터의 I/O가 잦은 경우 변동성이 적은 데이터일때 매번 DB를 조회하는 것은 트래픽 부하와 성능 저하를 해결할 수 없었다.
데이터를 캐싱 처리하는 경우 트래픽을 줄이고 성능을 향상시킬 수 있는데 이때 로컬캐시 , Redis를 고려하게 되었다.
로컬캐시(caffeine cache)를 고려하게 되었으나 무중단 배포 환경에서 휘발성 캐시가 사라질 위험이 존재한다고 판단했고 scale-out시 데이터 정합성 문제가 생긴다고 판단했다.
Redis의 경우 여러 자료구를 지원하여 캐싱 처리, 데이터를 처리하기 편리하다고 생각했고 무중단 배포환경에서 서버의 자원을 사용하기에 데이터가 사라질 위험이 존재하지 않았다.
Redis는 여러 서버간 데이터 정합성 문제도 해결할 수 있다고 생각했다.
상기 이유들로 Redis를 캐싱처리를 위해 사용하기로 결정했다.
aws RDS MySql
DB를 저장하기 위한 RDBMS로는 RDBS와 NOSQL이 존재한다.
NOSQL은 검색속도가 월등하나 테이블간 연관관계를 설정할 수 없고 데이터의 형태가 정확하게 유지되지 않으며 데이터의 무결성이 지켜지지 않는다.
RDBMS는 데이터의 무결성이 지켜지며 일정한 스키마로 데이터를 관리할 수 있어 테이블 내 데이터를 각각 관리할 스트레스가 줄어들며 연관관계로 테이블들을 관리할 수 있다.
상기 이유들로 RDBMS를 선택했으며 aws의 RDS인 MySql을 사용하기로 결정했다.
router53 , Amazon ELB
Front-End와 통신시 HTTP프로토콜로만 통신하는 것은 보안상의 위험성을 야기한다고 생각한다.
Back-End 배포시 HTTPS 프로토콜을 사용하여 보안을 높히고자 하였고 이때 aws의 router53, Amazon ELB를 도입하는 것이 EC2를 사용하는 우리가 바로 적용할 수 있는 부분이라고 생각했다.
상기 이유들로 HTTP,HTTPS프로토콜을 통신할 수 있는 배포 환경을 구축하는 것에 aws의 router53과 Amazon ELB를 이용하기로 결정했다.
SSE
실시간 알림을 구현하기 위해선 기존의 HTTP 통신 방식(폴링 , 긴폴링)을 사용하기엔 자원의 낭비가 발생하여 새로운 방식을 도입해야 했다.
기존의 HTTP프로토콜을 사용하는 streaming방식의 SSE와 WebSocket을 사용하는 웹소켓 두가지가 존재했으나 우리가 구현하려는 알림은 양방향의 알림이 아니었다.
배터리 소모량이 적고 연결이 끊어지면 재연결을 시도하며 pollyfill로 모든 브라우저 지원이 가능하게할 수 있는 SSE가 우리의 알림과 맞는다고 판단했다.
SSE는 첫 연결 이후 매번 재요청을 하지않고 서버의 응답을 줄 수 있어 비용을 아낄 수 있는 측면과 웹소켓의 차이 , 프로젝트의 방향성을 고려하여 사용하기로 결정했다.
📅지키고 싶은 습관들을 기록해 캘린더에서 확인할 수 있어요.
시간과 캐릭터를 선택할 수 있습니다.
습관은 3일과 7일 중에 선택할 수 있습니다.
설정한 시간으로 타이머를 진행하고 습관을 달성할 수 있습니다.
설정한 습관을 캘린더에서도 확인할 수 있습니다.
🙌친구를 검색하여 팔로우하고 선택하면 친구가 기록한 습관을 확인할 수 있어요.
친구의 이메일, 이름 또는 검색코드를 사용하여 검색할 수 있습니다.
캘린더에서 친구가 공개 설정한 습관을 확인할 수 있습니다.
👀친구의 습관에 좋아요와 댓글을 달아 소통할 수 있어요!
친구가 어떤 습관을 했는지 둘러보고 응원과 코멘트를 남길 수 있습니다.
👫친구에게 보여주고 싶지 않은 습관들은 프라이빗 설정으로 숨길 수 있어요!
프라이빗을 설정한 습관은 친구들이 캘린더에서 볼 수 없습니다.
🏅뱃지들은 어떻게 얻는지 비밀..! 서비스를 이용하면서 하나씩 얻어가는 재미를 느껴보세요!
얻은 뱃지들은 이미지와 함께 언제 획득했는지 알 수 있습니다.
얻지 않은 뱃지들은 물음표 모양의 뱃지와 함께 힌트를 제공합니다.
📢실시간으로 알림을 받을 수 있어요!
뱃지 획득, 댓글, 좋아요, 습관 달성 시 실시간으로 알림을 받을 수 있습니다.
🙍♂️내 프로필을 편집할 수 있어요!
사진과 이름, 상태메시지를 변경할 수 있습니다.
친구들의 상태메시지는 팔로우 또는 팔로워 목록에서 확인할 수 있습니다.