웹뷰로 사용할 웹 아키텍처 구성하기

2025. 9. 27. 14:10·프로젝트

웹뷰 사용 이유

1. 코드 푸시 서비스가 종료된 상태에서, 앱 업데이트를 수월하게 하기 위함 (가장 큰 이유임)

- 별도로 코드 푸시 서버를 운용하는건 배보다 배꼽이 더 커지는 기분

- 수익이 없는 상태라 유료 EAS 기능을 사용하는 것도 굳이..? 싶음

2. 2d 그래픽 렌더링 엔진으로 pixi.js라는 라이브러리를 활용하는데(데모까지 구현해본 상황), rn 버전은 프로덕션용으로 안전한지 확신 X

3. 추후에는 앱 서비스를 데탑에서 활용할 수 있게 웹으로 사용할 수 있게 지원하는 것을 염두하고 있음

 

RN vs WebView 구현 장단점 비교

RN

단점

  • 업데이트 할 때마다 앱스토어에 요청하거나 유료 EAS툴 사용해야함
  • react보다 렌더링에 많이 신경써야함

장점

  • 기능 주요한 부분에 웹뷰보다 적합함 (런타임에 compile하는 과정이 없어서 웹뷰보다 빠름)
  • 최근에 Expo 라는 프레임워크를 RN 측에서 제대로 디벨롭하고 있어서, 빠르게 서비스 세팅을 시작하면서도 

 

WebView

단점

  • 네트워크로 js 파일 받아오는 시간 필요
    • SSR, SSG 개발 필요 (CSR로는 초기 로딩 속도 느림)
  • 생각할 게 좀 더 있음
    • 반응형 웹 개발 필요
    • SSO 관리
    • URL 접근 막기
    • 그 외 찾아봐야함
    • 웹뷰로 하는 상태 관리 (e.g. 인증 상태 유지)

장점

  • 업데이트 자주 필요한 부분에 적합
  • 웹과 앱을 하나의 코드로 처리 가능
  • +) 인앱 결제 등 구현 가능

 

 

웹 아키텍처

프레임워크: Next.js 

- 이유: 웹뷰는 RN과 달리 네트워크로 페이지를 로드하는 시간이 필요하다

 

라우팅 방식: App Router  

- 이유:

- 서버 컴포넌트(RSC)를 기본으로 사용함 

- fetch api 사용할 경우, next.js 가 자동으로 데이터 캐싱해준다 함(원래는 fetch API는 캐싱 기능 제공 안함)

 

렌더링 방식: SSR or ISR + CSR

- 초기 빈화면을 렌더링하지 않기 위해 

- 그치만 인터렉션이 필요한 부분도 관리 필요함

- 그런 부분은 Client Component( 'use client'를 파일에 정의 ) 를 사용할 수 있다

- 사실 Next.js에서는 SSR을 해도 hydrate라는 과정을 거치고 CSR을 수행하게 됨 (일단 pages router 에서는 그랬음)

- Server Component 에서 받아온 데이터를 Client Component의 Property로 전달해주면, Client Component에서는 초기 데이터는 빠르게 보여주면서, useEffect와 이벤트 핸들러를 활용해서 데이터를 업데이트 할 수 있다

- Next.js 는 SSG 를 가장 추천함. 그치만 이는 빌드 시점의 데이터를 포함한 HTML을 보여주게 되므로 변경되는 데이터가 많은 화면에는 활용하기 부적절. 그래서 ISR 을 사용하겠다!

 

데이터 업데이트 구조:

- 클라이언트: SWR 방식 (캐시에서 먼저 데이터를 가져와서 빠르게 유저에게 보여주고, 업데이트가 필요하면 db에 데이터 받아와서 유저에게 보여주겠다) / react query를 활용하자

- 서버: App Router 에서 제공하는 fetch 캐싱을 활용. 내가 할 것은 캐싱 규칙을 설정하는 것

 

디자인 패턴: UI / 데이터 페칭 및 로직 분리 / 자식 컴포넌트는 데이터를 prop으로만 받아서 사용하도록

- 흔히들 MVVM / Container–Presentational 패턴(Smart - Dump Component) / 관심사의 분리 라고 하는 것

- 와이어 프레임 우선 제작으로 UI는 추후 구현하고, 로직부터 구현하는 상황에서, UI / 로직을 분리하여서 서로 영향을 주고받지 않도록 관리하는 구조가 필요함

- 컴포넌트 재사용이 쉬워짐 데이터 신경 안쓰고 주는거 쓰기만 하면 되니까

'프로젝트' 카테고리의 다른 글

기록 관리 서비스 만들기 01 최적화 아키텍처 설계  (1) 2025.11.24
개인 프로젝트 | 02 _ 홈서버 구축하기 with 도커  (3) 2025.01.03
개인 프로젝트 | 01 _ 웹앱 도입에 대하여  (0) 2024.09.28
개인 프로젝트 | 00 _ 개인 프로젝트 아키텍처  (3) 2024.09.06
presigned url을 이용하여 S3에 이미지 업로드하기 (+ S3버킷 접근 권한 을 관리하는 몇가지 방법들)  (0) 2024.08.25
'프로젝트' 카테고리의 다른 글
  • 기록 관리 서비스 만들기 01 최적화 아키텍처 설계
  • 개인 프로젝트 | 02 _ 홈서버 구축하기 with 도커
  • 개인 프로젝트 | 01 _ 웹앱 도입에 대하여
  • 개인 프로젝트 | 00 _ 개인 프로젝트 아키텍처
c_jm
c_jm
  • c_jm
    c_jm
    c_jm

    🎋 어제보다 발전한 오늘

  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • 프로젝트 (6)
      • 백준 문제풀이 (19)
      • 프로그래머스 문제풀이 (4)
      • 공부 (1)
      • 문제 해결 (2)
      • 기타 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    reverse proxy
    docker-compose
    docker
    인라인 css
    티스토리 다크모드
    jquery
    도커
    리버스 프록시
    다크모드
    코드블럭
    리버스 프록시 서버
    복붙
    홈서버
    nginx
    백준 #1152 #c++
    html
    글자색
    docker-compose.yml
    도커컴포즈
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
c_jm
웹뷰로 사용할 웹 아키텍처 구성하기
상단으로

티스토리툴바