여행 계획부터 함께하는, 여행 플래너 위브


Backend

Frontend


해커톤

앱 기획 후 이틀간의 해커톤에 참여하여 카카오 소셜로그인과 RDS 및 EC2를 구축하여 도메인을 연동하였습니다.

이후 파트별 회의와 전체 회의를 통해 기획을 구체화시키고, 프론트엔드 개발자 및 디자이너와의 소통을 통해 필요한 데이터를 RestAPI로 전달할 수 있게 구현했습니다.

swagger2설정 및 API 명세서 작성을 통해 프론트엔드 개발자들과 원활한 소통이 가능하도록 했습니다.

소셜로그인

이후 구글, 네이버, 카카오 소셜로그인을 스프링에서 제공하는 시큐리티를 사용하여 로그인 후 JWT token을 발급하는 로직을 구현했습니다. 안드로이드 단에서는 플랫폼에서 제공하는 sdk 라이브러리를 사용하고 싶다는 요청이 있어 accessToken을 가지고 회원가입 및 로그인할 수 있는 로직을 구현했습니다.

ControllerAdvice를 이용하여 에러 메시지를 커스텀하고, jwt 또한 에러 메시지를 따로 핸들링할 수 있도록 구현했습니다. Security Filter를 거치는 Jwt 로직은 따로 에러메시지를 커스텀하여 jwt service에 접근할 때 Filter에서 에러를 캐치하여 보내줄 수 있도록 만들었습니다.

프로젝트 진행 중 웹 파트가 사라져 안드로이드 파트와 연결하기 위해 로직의 변경이 있었습니다. 안드로이드 sdk로 사용자에게서 받은 access token과 refresh token을 이용하여 접근하면 백엔드 서버에서 rest api로 사용자의 정보를 받아오는 로직을 구현했습니다. 또한, refresh token을 유저 데이터베이스에 저장하여 사용자가 회원탈퇴시 소셜로그인에서 연결을 끊기 위한 로직도 함께 구현했습니다.

이미지 서버

AWS의 S3를 설정하여 이미지 서버를 구축하는데 IAM 키 탈취 문제가 발생했습니다. 이를 해결하기 위해 IAM 키의 보안 관련 공부중입니다.

원인을 찾아봤을때 IAM 키를 생성하기 전 Root 계정에 MFA 보안을 걸지 않아 생긴 문제로 생각됩니다.

프로젝트의 기간이 짧아 임시방편으로 GCP(Google Cloud Platform)의 cloud storage를 사용하여 이미지를 저장할 수 있도록 구현했습니다.

이후 이미지서버를 firebase storage로 옮겼는데, S3와 GCP, firebase storage를 비교했을때 무료로 사용할 때 모두 5GB의 공간을 지원하지만, 프리티어에서 기한 제한이 없고, 팀원을 초대하여 관리할 수 있기 때문에 사용하고 있습니다.