메이킹/메이킹 준비

풀스택 개발 프로젝트 준비하기 (1)

트리맨스 2023. 5. 4. 00:23
반응형

 

현재 풀스택 개인 프로젝트를 준비하고 있다. 어플리케이션 기반의 커뮤니티 앱이다. 서버와 어드민 페이지까지 만든 다음에 애플리케이션과 연결할 예정이다. 프로젝트의 목표는 다음과 같다.

  • 개인 공부가 목표이다.
  • 어드민 페이지를 통해 유저 관리가 되어야 한다.
  • 앱스토어와 플레이스토어에 출시가 되어야 한다.
  • Fcm을 통해 푸시 메시지를 제어한다.
  • 앱에 공지사항과 강제 업데이트 같은 관리자가 외부에서 제어할 수단이 있어야 한다.

 

해당 목표를 이루기 위해서 기술스택을 찾고, 현재 제작 중이다.

  • 백엔드 : NestJS : Typescript 기반으로 빠르게 작성하고 테스트가 가능하고 익숙함
  • ORM : Typeorm : 가장 많이 사용하고, 나중에 확장할 때 빠르게 할수 있다.
  • DB : Postgres : 오픈소스, 제일 익숙하고 Join 연산에 최적화가 되어있다.
  • 배포 : 아직 미정, Docker를 사용하는 AWS 제품 또는 DigitalOcean 사용 예정 (AWS는 익숙하고 DigitalOcean은 쿠버네티스를 사용하고싶어서).
  • 인프라 관련 기술 : Docker를 사용하는 이유는 추후 확장이 쉽게 가능하고 버전 태그를 사용하게 되면 롤백을 쉽게 할 수 있기 때문이다.
  • APM : sentry : 비교적 저렴하여 초기 시작에 유용함. 슬랙과 Github 통합에 매우 유리하다.
  • 애플리케이션 : React-Native : IOS와 Android 앱을 동시에 제작할 수 있다. 하드웨어에 접근하는 로직은 없을 것이고 (아마도) 러닝커브가 비교적 낮기 때문
  • 어드민 : React : 익숙하다
  • 통신 방식 : GraphQL : 클라이언트 관점에서 데이터를 Type safe하게 다룰 수 있고, 내부 상태 관리 같은 경우에도 Apollo를 사용해서 Object 단위로 컨트롤이 가능하다. 다만 인증, E2E, 서버사이드에서의 overfetch 등 백엔드에서 생각해야 할 문제가 조금 있다.
  • 인증 방식 : JWT : 서버에 최대한 부담이 가지 않게 인증할 수 있다.
  • 푸시 : FCM : 푸시를 FCM에서 한번에 관리할 수 있게 한다.
  • 공지사항 및 강제 업데이트 : Remote Config : 이것으로 특정 부분에서 앱의 상태를 관리자가 직접 지정할 수 있다.
  • 파일 저장소 : 미정. AWS를 사용하게 된다면 S3, 다른것을 사용한다면 Cloudflare의 R2 (매우 저렴하다)
  • 호스팅 : 미정. AWS를 사용하게 된다면 Route53, 다른것을 사용한다면 Cloudflare

 

현재는 백앤드 로직을 제작 중이다. ERD는 일단 mermaidjs를 사용하여 작성 중이다. vscode로 미리보기를 할 수 있는데, 생각보다 퀄리티가 좋아서 조금 놀랬다. 아직 추가해야 할 테이블과 칼럼들이 많다. 1차 출시에 포함할 기능들을 확실하게 해야 할거같다.

계획한 시간까지 백앤드가 모두 제작되었으면 좋겠다. 그래야 어드민 사이트도 빨리 작업을 시작할 수 있다.

 

반응형