[개발 일기] Mongs(몽스) 서비스 개발기 2편 | 프로젝트의 시작

2025. 8. 13. 22:25·일상/Wear OS 앱 개발기

백엔드와 안드로이드 구조, 그리고 기술 스펙 설계

기획이 어느 정도 윤곽을 잡자, 바로 설계 단계에 들어갔다.
이번 프로젝트는 안드로이드와 백엔드 모두를 아우르는 구조 설계가 필요했다.

게다가 나는 두 영역에 모두 참여하기로 했으니, 처음부터 끝까지 전부 고민해야 했다.

 

안드로이드 쪽은 예전에 마감에 쫓겨 급하게 만들었던 MVVM 구조를 다시 꺼냈다.

그때는 그냥 "View, ViewModel, Model을 나눠놓으면 MVVM이겠지" 하고 넘어갔는데,

이번에는 데이터 흐름, 라이프사이클, 모듈화까지 꼼꼼히 고려해 설계했다.
또한, Wear OS 환경에 맞춰 불필요한 의존성을 줄이고, 화면 전환이나 데이터 요청 시 배터리 소모를 최소화할 방법도 고민했다.

 

백엔드 쪽은 MSA 구조를 다시 한번 다뤄보기로 했다.
이전에는 "서비스를 여러 개로 나누면 MSA" 정도로만 이해하고 썼지만,
이번에는 확장성과 유지보수성을 고려해 서비스 간 역할을 명확히 분리하고, 통신 방식과 데이터 흐름까지 세밀하게 설계했다.
모듈별로 API Gateway, 인증 서버, 캐릭터 로직 서버, 플레이어 로직 서버를 나누었고, 각각 독립적으로 배포할 수 있도록 했다.

 

기술 스택은 다음과 같이 정리했다.

  • 안드로이드: Kotlin + MVVM + Hilt + Retrofit + Coroutines
  • 백엔드: Spring Boot + JPA + Redis + MQTT
  • DB: MySQL (영속 데이터), Redis (캐싱 및 세션 관리)
  • 메시징: MQTT (실시간 클라이언트 동기화)
  • 인프라: Docker Compose를 통한 컨테이너 환경 구성

자세한 설계 과정은 아래에서 확인할 수 있다.

 

🔗 안드로이드 설계 과정 포스팅

 

[MVVM] Mongs Android 아키텍처 설계 1편 | Model-View-ViewModel

 

tablemin-park.tistory.com

🔗 백앤드 설계 과정 포스팅

 

[MSA] Mongs Backend 아키텍처 설계 1편 | Layered Architecture (레이어드 아키텍처)

시작은 익숙한 레이어드 아키텍처로프로젝트의 시작은 가장 익숙한 레이어드 아키텍처였다.서비스 초기에 중요한 건 복잡한 설계보다 빠르게 동작하는 결과물을 내는 것이었고, 레이어드 구조

tablemin-park.tistory.com

 


개발 서버 구축

서버는 클라우드를 쓰는 대신, 집에 있는 라즈베리파이를 개발 서버로 세팅하기로 했다.
이유는 단순했다. 비용 절감, 완전한 제어, 그리고 마음껏 실험할 수 있는 환경.
운영 서버는 따로 마련 예정이었지만, 현재는 개발 단계라 홈서버가 더 유연하다고 생각했다.

서버 스펙

  • 라즈베리파이 4B+
  • RAM: 8GB
  • 저장공간: SD Card 16GB
  • OS: Ubuntu Server 22.04 LTS

세팅 과정

  1. SSH 설정 - root 계정 로그인 비활성화, 포트 변경
  2. Ubuntu 설치 – 서버 전용으로 불필요한 GUI는 빼고 가볍게 세팅
  3. Docker & Docker Compose 설치 – 환경을 코드로 관리하기 위해 필수
  4. MySQL & Redis 컨테이너 생성 – 데이터 저장과 캐싱/세션 관리를 위해
  5. Mosquitto MQTT 브로커 설치 – 게임 내 실시간 이벤트 전달용
  6. 포트 포워딩 및 방화벽 설정 – 외부에서 접속할 수 있도록 네트워크 세팅

집에서는 iptime 공유기를 사용하고 있어 DDNS 설정과 포트 포워딩을 통해 외부에서 서버로 접근할 수 있도록 했다.

초기 개발 서버 아키텍처 (위 구조를 점차 확장할 예정이다)


다음 단계는?

다음 단계는 안드로이드 개발에 들어가기 전에 백엔드부터 만드는 것이다.

 

특히 이번 프로젝트는 워치라는 한정된 자원을 가진 기기에서 구동되는 앱인 만큼, 실시간 데이터 동기화, 포인트 정책, 캐릭터 상태 관리 등 서버 의존도가 높은 구조라 백엔드가 안정적으로 돌아가야만 안드로이드 개발이 제대로 진행될 수 있다.

 

그래서 일단은 안드로이드 쪽은 잠시 미뤄두고, 홈 서버에 올린 개발 환경을 활용해 API와 데이터 흐름을 먼저 완성하기로 했다.
이 과정에서 DB 스키마 설계, API 명세 작성, MSA 구조에 맞춘 서비스별 통신 방식까지 차근차근 다듬어갈 계획이다.

 

'일상 > Wear OS 앱 개발기' 카테고리의 다른 글

[개발 일기] Mongs(몽스) 서비스 개발기 1편 | 숫자 하나에서 시작된 프로젝트  (3) 2025.08.12
'일상/Wear OS 앱 개발기' 카테고리의 다른 글
  • [개발 일기] Mongs(몽스) 서비스 개발기 1편 | 숫자 하나에서 시작된 프로젝트
tableMinPark
tableMinPark
Backend Engineer
  • tableMinPark
    Sangmin's Tech Blog
    tableMinPark
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • tech study blog
    • my github
    • monglife github
    • 분류 전체보기 (48)
      • 개발 (7)
        • java (0)
        • kotlin (0)
        • spring boot (0)
        • android (0)
        • junit5 (5)
        • architecture (2)
      • 데브옵스 (3)
        • docker (3)
        • github action (0)
        • grafana (0)
        • prometheus (0)
        • elk (0)
      • 알고리즘 (35)
        • baek joon (0)
        • programmers (4)
        • leet code (29)
      • 일상 (3)
        • Wear OS 앱 개발기 (2)
        • 회고 (1)
  • 태그

    Container
    micro service
    레이어드 아키텍처
    20.04
    MVVM
    ubuntu
    docker
    bind mount
    jetpack-compose
    MSA
    Android
    layered architecture
    volume
    docker compose
    apple watch
    Kotlin
    Galaxy watch
    synchronized
    java
    monglife
    wear os
    docker network
    mongs
    Thread
    docker-compose
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
tableMinPark
[개발 일기] Mongs(몽스) 서비스 개발기 2편 | 프로젝트의 시작
상단으로

티스토리툴바