본문 바로가기

TIL(Today I Learned)

TIL-230907(항해99 실전 프로젝트-행동대장(27))

📝오늘 공부한 것

  • 실전프로젝트 - '행동대장' 발표준비
  • 실전프로젝트 - '행동대장' 코드리팩토링

- 브로셔 작성, 발표영상 제작 등등

 

📌 '행동대장' 발표준비

 이번 주에는 지금까지 진행했던 프로젝트의 최종발표회 준비를 하였다.

브로셔만들기, 발표영상 찍기, 발표자료 만들기, 간단 소개영상 만들기 등을 하였다.

 

소개

행복한 동네를 위한 대화의 장소

동네의 불편사항을 사람들과 공유하고 알리는 서비스를 제공합니다.

 

주요기능

 - 불편사항 공유

자신이 느낀 동네의 불편사항에 대해 게시글과 댓글을 작성하며, 이를 통해 커뮤니티 내에서 자유롭게 의견을 공유할 수 있습니다.

 

 - 주소 검색 후 지도 이동

특정 지역의 정보에 관심이 있다면 "지역 검색" 기능을 통해 해당 지역으로 쉽게 이동할 수 있습니다. 자신이 살고 있는 지역 외의 다른 지역에서 발생하는 불편사항들도 확인하고 공감할 수 있습니다.

 

 - 지도로 보는 동네의 불편사항

지도 상에서 직관적으로 주변의 불편사항들을 한눈에 파악할 수 있습니다. 현재 위치 근방에서 어떤 문제가 발생하고 있는지 쉽게 알아볼 수 있습니다.

 

- 마이페이지

마이 페이지에서는 사용자가 작성한 게시글, '나도 불편해요'로 응원한 게시글, 그리고 작성한 댓글에 대한 게시글 등을 한번에 확인할 수 있습니다. 추가로, 회원정보 수정, 회원탈퇴 기능을 제공하여 개인 정보 관리를 용이하게 합니다.

 

 - “나도 불편해요”, “해결됐어요” 기능

일상에서 겪는 불편함을 공감하고, 이를 커뮤니티에 공유하여 인지도를 높이는 "사이렌" 역할을 합니다.  반면, '해결됐어요' 버튼은 특정 문제점에 대한 해결 상황을 사용자들과 공유할 수 있게 하는 기능입니다. 이를 통해 사용자들은 게시글의 최신 상태를 쉽게 파악하고, 문제가 성공적으로 해결되었음을 확인할 수 있습니다. 일정 개수 이상의 ‘해결됐어요’ 가 누적되면, 게시글이 해결 완료 처리됩니다.

 

 - 실시간 알림 기능

사용자는 본인이 작성한 게시물에 활동(댓글, 나도 불편해요, 해결됐어요 등)이 발생하면 간략한 내용과 시간을 실시간으로 확인할 수 있습니다.

또한 읽은 알림과 읽지 않은 알림을 구분할 수 있고, 각각의 알림을 클릭하면 해당 게시물로 이동해 자세한 내용을 확인할 수 있습니다.

게시물이 ‘해결완료’ 처리된 경우에는 웹페이지 내에서의 알림 뿐만 아니라 이메일도 받아볼 수 있습니다.

 

 - 로그인 회원가입 기능

 

서비스 아키텍처

 

기술적 의사 결정

선택 기술을 선택한 이유 및 근거
refresh token 도입 vs access token 만료시간 늘리기 access token의 유효기간이 짧으면 일정 시간마다 재로그인해야하는것이 불편함을 줄수 있습니다. access token의 만료시간을 늘리면 보안상으로 좋지 않아 refresh token을 도입하기로 하였습니다.
GitHub Actions + CodeDeploy vs Jenkins 소스 코드 변경 시 자동으로 빌드, 테스트, 배포 등의 작업을 수행해주고 프로젝트를 진행할 때 Github를 사용하기 때문에 개발 효율성 향상에 도움이 됩니다. 코드 배포 과정을 자동화해줍니다. 빠르게 배포하고 안정성을 높일 수 있게 해주기 때문에 사용하게 되었습니다. 프로젝트의 규모가 크지 않아 Jenkins 대신 GitHub Actions + CodeDeploy를 사용하기로 하였습니다.
일반로그인 vs OAuth2.0+일반로그인 OAuth 2.0 기반의 카카오 로그인 기능을 구현하여 사용자가 편리하게 서비스에 접속할 수 있도록 했습니다. 이를 통해 사용자는 별도의 회원가입 과정 없이 카카오 계정만으로 서비스를 이용할 수 있습니다. 또한, 개인 정보를 직접 입력하지 않아도 되므로 보다 안전하고 간편한 로그인 경험을 제공합니다.

 

트러블슈팅

  • 카카오로그인 시 이메일 제공에 동의하지 않는 경우 발생하는 문제
    • 문제내용 : 카카오 소셜 로그인을 구현하는 과정에서 이메일 수집에 관한 문제가 발생했습니다. 카카오는 사용자의 이메일 제공을 선택 사항으로 하고 있어, 사업자 등록 없이는 이메일을 필수로 받아올 수 없었습니다. 그런데 저희 서비스에서는 JWT 생성과 '해결했어요' 알림 기능에 이메일이 필요하다 보니, 이메일 제공에 동의하지 않은 사용자가 회원 가입 시 에러가 발생하는 문제가 있었습니다.
    • 해결방안 : 이메일 제공에 동의하지 않은 사용자의 경우 DB에 null값으로 저장하도록 변경하였습니다. 그리고 해당 사용자들이 마이 페이지에서 추가로 이메일을 등록할 수 있게 만들었습니다. 또한 JWT 생성시 닉네임을 활용하여 문제를 완화하였습니다. 즉, 서버에서는 닉네임 기반으로 유저를 식별하며, '해결했어요' 알림 기능은 유저가 직접 이메일 주소를 등록한 경우만 가능하도록 조치하였습니다.
  • 닉네임 변경 시 JWT문제
    • 문제 내용 : JWT 생성에 닉네임 정보를 포함하여 사용하는데, 이로 인해 닉네임이 변경된 경우 이전에 발급받았던 JWT가 더 이상 유효하지 않게 되는 문제가 발생했습니다. 즉, 닉네임이 변경된 후에도 사용자는 이전 닉네임으로 생성된 JWT를 가지고 있어서 권한 관련 문제가 생겼습니다.
    • 해결방안 : 사용자의 닉네임이 변경될 때마다 새로운 access token과 refresh token을 발급하여 전달하도록 처리했습니다. 이렇게 함으로써, 닉네임이 바뀌어도 기존의 권한을 유지하면서 서비스를 이용할 수 있게 되었습니다.

 

느낀 점🤔

이렇게 모든 발표준비가 끝났다!

내일 멘토님, 협력사, 관심있는 모든 분들이 오셔서 프로젝트에 관해 질문을 하신다고 한다.

열심히 준비하고 공부한 만큼 잘 대답할 수 있었으면 좋겠다.