2022년 1월 기준 효율적인 백엔드 개발

Brandon Chung·2022년 1월 21일
0

결론부터 얘기하자면, 사용자 인증은 직접 구현 + 백엔드 프로세스(AWS API Gateway + Lambda / Firebase Cloud Function ) + 스토리지(각 서비스에 맞게) + DB(각 서비스에 맞게) 이 가장 효율적이다.

  1. 사용자인증을 AWS Cognito나 Firebase Authentication 에 맡겼을때의 문제는 다음과 같다.

    A. 2차인증( 이메일 인증코드나 모바일 인증코드 )을 제 3 자 서비스를 통합할 경우( 이유는 예를 들면 해외 유저는 알리클라우드의 SMS 서비스가 비용이 더 싸다거나, 자체 이메일 인증을 사용하면 비용이 안 들어간다던가 등등 ), 더욱 복잡해지는 문제가 있다. 특히 직접 세션 관리의 필연성 ( 예를들면, 필자가 개발한 인증 부분은 메타마스크까지 지원되는 부분이 필요해서 )이 있을 경우, 해당 두 플랫폼의 인증 방식을 사용하면 더 복잡해질 수 있다.

    B. API Gateway 나 Firebase Cloud Function을 사용할 경우, 역시 제공되는 CLI를 통해서 자체 인증에 따른 역할지정으로 보안을 강화하면서 편리하게 함수들을 호출하도록 만들어 두었지만, 특정한 경우에 대한 예외처리 ( 예를들면 PC로 로그인 한 상태에서 동일 계정으로 모바일에서 로그인 한 경우의 세션 정리 과정 등 )하는데, 플랫폼의 인증이 걸리적거리고, 어차피 둘 다 URL형태로 함수 호출이 가능하므로, 떼어내도 무리가 없다.

  • 뭐 사실 위와 같은 이유가 아주 작은 불편함 수준이라, 본인 프로젝트의 방향성과 다르다면 그냥 쓰는게 좋겠지만, 그 외에도, 만약 중국처럼 구글 서비스에 고객이 접속이 안되는 상황에서 AWS를 타고 들어가게 만들려는 의도처럼, 두 플랫폼 서비스를 동시 지원 가능하게 만들려 한다면, 반드시 자체 인증 프로세스를 구현하는게 좋다.
  1. AWS API Gateway + Lambda 와 Firebase Could Function 중에서 선택이 필요하다면...

    A. Firebase Cloud Function 이 현재로서는 더욱 편리하다. 그 이유는 Nodejs를 사용할 경우, 의존 패키지들도 곧바로 사용할 수 있는 반면, Lambda는 약간의 불편함을 감소해야 한다.

    B. 하지만, Lambda가 동일 코드일 경우 실행 속도면에서는 조금더 빠르다. 물론 Region 설정의 문제도 있기 때문에, 적절한 테스트를 거쳐서 결정하면 된다.

  • 사실 둘 중 하나를 선택해야 한다면, 위의 문제보다는 아마도 DB 및 전달파일의 스토리지 이동 등의 백엔드 구성요소에 따라 선택이 결정될 것이다.

결론 : 일단 필자의 경우, 프로토타이핑은 자체인증프로세스 + 파이어베이스로 개발하고, 프로덕션을 준비할때 AWS를 함께 지원하는 형태로 진행한다. DB를 반드시 RDS로 할게 아니라면 둘 중 어느 플랫폼을 사용해도 큰 무리가 없지만, 학실히 초반 빠른 개발은 파이어베이스가 편리하다.

profile
여유있게 갈려나가는 자

0개의 댓글