크레놀로지 개발 일지 (2) - 그런 앱은 어떻게 만들지? Part.1

크레놀로지 개발 일지 (2) - 그런 앱은 어떻게 만들지? Part.1

어느 정도의 비용을 투자할 수 있을까?

서비스 개발을 위한 기술 스펙을 결정할 때 가장 중요한 요소는 무엇일까? 우선 개발팀이 활용 가능한 기술이어야 한다. 또한 주어진 시간 안에 기획과 설계, 디자인을 포함하여 모든 개발을 완료할 수 있는 일정이 확보되어야 한다. 이러한 조건을 만족시키는 개발 계획을 마련하는 것이 프로젝트의 성공적인 출발을 위한 첫 단계라고 할 수 있다.

이런 질문에 답하는 업무 영역은 시스템 설계에 가까울 것이다. 우선 시스템이 한바퀴 굴러가는 절차를 나열하고, 각 프로세스(절차) 단위를 정의해보면 어떨까? 무엇을 만들어야하는지 구체화 해보자.

필요한 프로세스를 정의해보자

핵심 기능을 수행할 수 있는 환경 정의

시작하기 전에 기본적인 환경을 먼저 설정해보자. 필수적인 기능만을 놓고 봤을 때, 크레놀로지는 투두리스트 앱이라고 볼 수 있다. 투두리스트 앱의 기본 기능은 일정을 생성하고 관리하는 것이 핵심인 만큼 기기의 알림 기능을 활용하는 것이 필수적이다. 요즘 모바일 환경에서 PWA는 기기 알림도 사용할 수 있고 그 자체로 로컬 앱처럼 사용할 수 있을만큼 강력해서 웹을 잘 구축해두면 활용 가능성이 높지만 IOS에서는 힘을 쓰지 못하고 있다. 아직까지는 네이티브 앱 개발이나 리액트네이티브 같은 크로스플랫폼 프레임워크를 활용해서 모바일 앱을 개발하는 것이 이런 서비스를 개발하는 국룰 방식이라고 할 수 있다.

모바일 기기용 투두리스트 앱이라는 정의에 도달했더니 어떤 기술을 사용해야할지 대략적인 윤곽이 드러나기 시작했다. 이제 크레놀로지 서비스에 필요한 Entity 단위 분석을 통해 본격적으로 서비스의 형체를 드러내보자.

어떤 Entity가 필요할까?

여기서 Entity란 서비스에서 필요로하는 정보로서 데이터 모델링에서 사용되는 객체에 해당한다. 크레놀로지 서비스에 필요할 것으로 예상되는 Entity 목록은 아래와 같다.

  • 집사
  • 집사 그룹
  • 반려동물
  • 반려동물 그룹
  • 일정 타입
  • 일정
  • 일정 알림

집사 CRUD 절차

크레놀로지는 기본적으로 개인 집사의 반려동물을 관리하는 기능을 제공한다. 일반적으로 개인 데이터를 다루는 모바일 앱의 경우 구글, 네이버, 카카오 등 대기업 로그인 시스템을 이용하는 OAuth 기능을 제공한다. 사용자들이 이미 OAuth에 익숙하고 편리하게 이용하고 있으므로 따로 사용자 관리 시스템을 구축하기 보다는 OAuth를 이용하여 로그인 기능을 만드는 것이 효과적일 것으로 보인다. 우선 구글 로그인을 기준으로 생각해보자.

OAuth(구글) 인증 및 사용자 로그인

OAuth를 이용한 사용자 인증은 아래와 같은 방식으로 이루어지게 된다. 이 때, 신규 사용자와 기존 사용자를 구분하기 위해서 인증 단계 이후에 앱 서버 DB를 조회하는 단계를 추가하여 신규사용자인 경우 가입에 필요한 정보를 입력하는 페이지로 이동시켜야 한다.

  1. 앱 클라이언트 → 구글 로그인 요청 → 앱 서버
  2. 앱 서버 → 인증 요청 → 구글 서버
  3. 구글 서버 → code 매개변수 발급 → 앱 서버
  4. 앱 서버 → 액세스 토큰 요청 → 구글 서버
  5. 구글 서버 → 액세스 토큰 발급 → 앱 서버
  6. 앱 서버 → 사용자 정보 요청 → 구글 서버
  7. 구글 서버 → 사용자 정보 제공 → 앱 서버
  8. 앱 서버 → 사용자 로그인 처리 → 앱 클라이언트 (여기까지 사용자 인증 절차)
  9. 앱 클라이언트 → 사용자 데이터 요청 → 앱 서버
  10. 앱 서버 → 사용자 데이터 제공 → 앱 클라이언트
    • 앱 클라이언트 → 신규 사용자인 경우 → 가입 화면으로 이동
    • 앱 클라이언트 → 기존 사용자인 경우 → 메인 화면으로 이동

참고: @piecemaker

집사 가입(Create) 절차

사용자 인증을 처리한 뒤 앱 클라이언트는 앱 서버에 사용자 조회 요청을 통해 신규, 기존 사용자 여부를 통보 받는다. 신규 사용자인 경우 가입 화면으로 이동시킨 뒤 가입 절차를 진행한다. 자세한 가입 절차를 살펴보자.

  1. 앱 클라이언트 → 사용자 인증 진행 → 가입 화면으로 이동
  2. 앱 클라이언트 → 가입 데이터 입력 후 가입 요청 → 앱 서버
  3. 앱 서버 → 가입 정보 검증 및 처리 → 앱 클라이언트
  4. 앱 클라이언트 → 가입 요청 결과 확인
    • 가입 성공 → 마이페이지 화면으로 이동
    • 가입 실패 → 실패 화면으로 이동
집사 조회(Read) 절차

가입된 사용자는 본인 및 다른 사용자에 의해 조회될 수 있다. 다만, 본인이 조회 가능한 정보와 타인이 조회 가능한 정보에는 범위의 차이가 있다.

  • 다른 사용자가 조회 가능한 사용자 정보
    • 이름(닉네임)
    • 프로필 이미지
    • 소개 문구
    • 반려동물 수
    • 집사 그룹 여부
  • 본인이 조회 가능한 사용자 정보
    • 이름(닉네임)
    • 프로필 이미지
    • 소개 문구
    • 반려동물 수
    • 반려동물 리스트
    • 집사 그룹 리스트
집사 수정(Update) 절차

가입된 사용자는 로그인 후 자기 정보를 수정할 수 있다. 기본적인 구조는 가입 절차와 같다.

  1. 앱 클라이언트 → 사용자 인증 진행 → 수정 화면으로 이동
  2. 앱 클라이언트 → 수정 데이터 입력 후 수정 요청 → 앱 서버
  3. 앱 서버 → 수정 정보 검증 및 처리 → 앱 클라이언트
  4. 앱 클라이언트 → 수정 요청 결과 확인
    • 수정 성공 → 마이페이지 화면으로 이동
    • 수정 실패 → 실패 화면으로 이동
집사 삭제(Delete) 절차

가입된 사용자는 로그인 후 탈퇴할 수 있다. 기본적인 구조는 가입 절차와 같다.

  1. 앱 클라이언트 → 사용자 인증 진행 → 탈퇴 화면으로 이동
  2. 앱 클라이언트 → 탈퇴 데이터 입력 후 탈퇴 요청 → 앱 서버
  3. 앱 서버 → 탈퇴 정보 검증 및 처리 → 앱 클라이언트
  4. 앱 클라이언트 → 탈퇴 요청 결과 확인
    • 탈퇴 성공 → 마이페이지 화면으로 이동
    • 탈퇴 실패 → 실패 화면으로 이동

지금까지 첫 번째 Entity 집사의 생명주기를 살펴보았다. 다음 포스트에서는 크레놀로지에 필요한 다른 Entity들에는 어떤 것들이 있는지 정리해보고 각각의 생명주기를 정의해보도록 하자.

About Crenology

크레놀로지는 작은 동물들을 위한 최고의 관리도구입니다.