모든 아파트 입주민이 회사 앱을 가입하지는 못할 수 있습니다. 허나 그런 경우에도 아파트 커뮤니티 시설을 이용할 수 있어야 합니다. 다만 비회원 입주민이 사용하는 카드에는 회원 정보가 자동 연동되지 않습니다. 따라서 현장 운영자들이 필요하면 비회원 입주민의 정보를 기록할 수 있도록, ‘카드 메모’ 기능을 개발하였습니다.
어드민툴에서 휴면회원을 관리하는 기능 개발
일정 기간이 지났으나, 활동하지 않은 회원의 경우 휴면회원 처리가 되어야 합니다. 그리고 휴면회원이 되더라도 휴면회원 만을 위한 안내와 관리가 이루어져야 합니다. 이에 대한 명확한 기준이 없던 상황이었기에, 이를 결정하고 휴면회원 관리를 위해 필요한 모든 CRUD를 개발하였습니다.
기본적인 CRUD 이외에 중요했던 부분은 알림기능입니다. 카카오톡 및 SMS 발송이 모두 가능하도록 해야했고, 이를 위해 NHN 클라우드의 메시지 전송 서비스를 연동하였습니다.
카카오 로그인 기능 개발
신규 앱에는 소셜 로그인 기능이 포함되어야 했습니다. 문제는 단순히 우리 어플리케이션과 카카오 간의 연동을 할 수 없던 어려움이 있었습니다. 에이치티비욘드 클라우드 서비스의 모든 인증/인가는 AWS 코그니토를 통해 이루어지도록 설계되어 있었습니다. 따라서 소셜로그인 구현을 하기 위해선 에이치티비욘드와 카카오 사이에 AWS 코그니토를 둘 수밖에 없었고 개발 난이도 올라갔습니다.
카카오 소셜 로그인 플로우
클라이언트 → AWS 코그니토 → 카카오 → AWS 코그니토 → 클라이언트
자세하게 설명하기 어렵지만 위와 같은 과정을 거쳐 로그인이 이루어지도록 구현했습니다.
인증은 코그니토를 통해 하지만 회원 상세 정보는 회사 데이터베이스에서 관리되기 때문에, 코그니토에 계정이 생성되면서 동시에 우리 데이터베이스 계정이 생성되는 부분에서 트랜잭션이 잘 이루어지도록 고려해야 했습니다.
중간 과정에서 이미 회사의 일반 계정이 존재하는 경우에는 계정 연동 플로우로 보내야하고, 14세 미만 보호자 인증의 경우엔 보호자 인증 플로우로 보내야하는 문제가 있어 까다로웠습니다. 즉, 코그니토 계정 생성 과정에서 우리의 플로우를 끼워넣기가 쉽지 않았던 문제인데, 우리의 코드를 개입 시키기 위해, AWS 사전 가입 트리거와 AWS 람다를 사용했습니다.
애플 로그인 기능 개발
카카오 로그인과 비슷한 맥락에서 어려움이 있었고, 비슷한 방식으로 대부분의 문제를 해결하였습니다.
다만 애플로그인 구현에 있어서 추가적인 어려움은 카카오와 다르게 애플에서는 이름을 제외한 개인정보를 전혀 제공하지 않는다는 점이었습니다. 우리의 서비스를 이용하기 위해선 반드시 필요한 정보가 있었기 때문에, 이는 결론만 간단히 정리하면 중간에 개입할 수 있는 프록시 서버를 두는 아이디어를 적용하여 해결했습니다.
애플 소셜 로그인 플로우
클라이언트 → AWS 코그니토 → 우리 프록시 서버 → 애플→ 우리 프록시 서버 → AWS 코그니토 → 클라이언트
해당 회원에 대한 가입자 입력 정보가 존재하지 않으면, 우선 입력 정보를 받는 페이지로 보내고, 존재하면 그 다음 플로우가 가능하도록 해결했다고 보시면 됩니다.