서비스는 인프라를 검증하기 위한
실제 Workload
「주인장 맛집」은 대구 지역의 맛집 정보를 조회하지만, 프로젝트의 중심은 애플리케이션 개발 자체가 아닙니다.
실제 서비스 환경을 만들어 서버 · 네트워크 · 스토리지 · 운영 구조를 직접 검증합니다.
01 / INTRODUCTION
VMware 기반 Rocky Linux 서버에서 실제 서비스가 동작할 환경을 직접 구축하고,
Web · WAS · DB로 이어지는 서버 간 통신과 운영 구조를 단계적으로 구성합니다.
「주인장 맛집」은 대구 지역의 맛집 정보를 조회하지만, 프로젝트의 중심은 애플리케이션 개발 자체가 아닙니다.
실제 서비스 환경을 만들어 서버 · 네트워크 · 스토리지 · 운영 구조를 직접 검증합니다.
재부팅 이후에도 서비스를 다시 제공할 수 있는 운영 환경
서버 구축과 배포 이후, 상태 관찰과 의도적인 장애 실험을 통해 원인 분석부터 복구까지 직접 검증합니다.
02 SERVER FOUNDATION
제한된 개인 장비 안에서
실제 서비스를 운영하기 위한 기반 기술을 선택했습니다.
무료로 사용할 수 있는 VMware Workstation을 통해 별도 솔루션 비용 없이 데스크탑 자원을 서버 환경으로 활용할 수 있다고 판단했습니다.
RHEL 계열 Linux 환경으로 실제 서버 운영 환경을 학습하는 데 적합하다고 판단했습니다.
수업에서 사용한 경험을 바탕으로 OS 학습보다 서버 구축과 운영에 집중할 수 있습니다.
Repeated Guest OS
Higher Resource Usage
Shared Host OS
Service Isolation
제한된 데스크탑의 CPU · Memory · Storage 안에서 서비스를 분리하고 자원을 효율적으로 사용하기 위한 선택입니다.
03 SERVER FOUNDATION
서비스 실행 환경과 데이터 저장 영역을 분리하고,
외부에서도 서버를 관리할 수 있는 접속 경로를 구성했습니다.
DATA WRITE
처음 구성하는 RAID인 만큼, 동일한 데이터를 두 디스크에 저장하는 단순한 미러링 구조가 구성과 관리 측면에서 이해하기 쉽다고 판단했습니다.
RAID1은 백업을 대체하지 않으며, 디스크 장애에 대비한 저장장치 이중화를 목적으로 구성했습니다./data/docker/mariadb/data
VMware 콘솔보다 익숙한 Windows Terminal에서 명령을 입력하는 것이 편리하다고 판단했습니다. Tailscale 사설 네트워크를 통해 장소와 관계없이 SSH로 서버를 관리합니다.
SSH 또는 Linux 네트워크에 문제가 생겨도 Windows 호스트를 거쳐 VMware 콘솔을 직접 조작할 수 있습니다.
04 SERVICE DEPLOYMENT
서비스의 역할과 현재 개발 단계를 고려해
Docker Container와 Host Service 방식을 나누어 구성했습니다.
DEPLOYMENT SCOPE LOCAL SERVER
외부 요청을 수신하고 설정된 경로에 따라 내부 서비스로 전달하는 진입점
발표용 HTML · CSS · JavaScript 정적 파일 제공
서비스 데이터를 저장하는 Database Service
/data/docker/mariadb/data
API 변경이 잦은 현재 단계에서는 이미지를 매번 생성하기보다 JAR을 교체하고 systemd로 재시작하는 방식이 더 단순하다고 판단했습니다.
모든 서비스를 같게 배포하지 않고, 역할과 변경 주기에 따라 구분했습니다.
05 REQUEST FLOW
외부 요청은 하나의 진입점을 통해 들어오고,
HTTP 요청 경로에 따라 내부 서비스로 전달됩니다.
요청 경로를 확인하고 설정된 Routing Rule에 따라 전달
Browser → Reverse Proxy → Web Server → Static Files → Browser
HTML / CSS / JSClient → Reverse Proxy → Spring Boot → MariaDB → JSON
API / DATABASE06 NEXT PHASE
다음 단계에서는 Flutter 애플리케이션을 개발하고,
현재 구축한 API와 연결해 실제 화면에서 데이터 조회 흐름을 확인할 예정입니다.
현재까지는 API 요청으로 데이터 반환을 확인했습니다. 다음 단계에서는 Flutter와 API를 연동해 같은 데이터를 실제 사용자 화면에서 확인할 수 있도록 구현할 예정입니다.
THANK YOU