고등학생 개발자, 모의 주식 투자 플랫폼 MOZU를 실제 기관에 납품하다!

by DD
2개월 전
조회수 6

대덕소프트웨어마이스터고등학교 학생이 중학생 대상 모의 주식 투자 플랫폼 MOZU 개발 의뢰를 받아 프로젝트 시작

프론트엔드 리드, PO, 팀 리더 역할을 수행하며 SSE, Docker, nginx 등 기술 스택을 활용, 실제 기관에 서비스 납품

비전공자 선생님과의 소통, 온프레미스 환경 구축, 소프트웨이브 전시 참여 등 다양한 경험을 통해 개발자로서 성장

FSD 아키텍처(Feature-Sliced Design) 적용, 컴포넌트 패턴 개선에 대한 아쉬움을 드러내며, 지속적인 성장을 다짐

SSE를 활용한 실시간 데이터 동기화

MOZU는 실시간 데이터 동기화를 위해 SSE(Server-Sent Events)를 도입했다. SSE는 서버에서 클라이언트로 단방향으로 데이터를 전송하는 기술로, 주식 시세 변동과 같은 실시간 정보를 효율적으로 처리한다.

SSE의 장점: HTTP 프로토콜 기반으로 구현이 간단하고, 서버 푸시(Server Push) 방식이므로 웹 소켓(WebSocket)보다 서버 부하가 적다.

단점: 양방향 통신이 불가능하며, 브라우저 호환성(Browser Compatibility)에 제약이 있을 수 있다.

실제 사례: MOZU는 SSE 연결이 끊어졌을 때의 재연결 로직을 구현하여 안정적인 데이터 스트리밍(Data Streaming)을 보장했다.

온프레미스 환경 구축의 어려움

MOZU는 클라우드 환경에서 온프레미스 환경으로 전환하면서 다양한 기술적 난관에 직면했다. 특히, 기관의 제한된 네트워크 환경과 데스크톱 하드웨어(Desktop Hardware) 제약은 개발자에게 새로운 도전 과제를 제시했다.

네트워크 설정: 유선과 무선 네트워크 간의 통신 문제를 해결하기 위해 서버의 WiFi IP를 활용하는 아키텍처를 설계했다.

Docker Compose 활용: MySQL, Redis, Spring Boot 백엔드, nginx를 Docker Compose(Docker Compose)로 묶어 배포 환경을 단순화했다.

안정성 확보: 서비스 통신 설계, 데이터 백업 스크립트(Data Backup Script)를 통해 서비스 중단(Service Outage)을 최소화했다.

이러한 경험은 클라우드 환경에 익숙한 개발자에게 온프레미스 환경에 대한 이해를 높이는 계기가 되었다.

비전공자와의 소통 노하우

MOZU 개발 과정에서 가장 중요한 요소 중 하나는 비전공자인 선생님과의 소통이었다. 개발 용어와 기술적 배경 지식이 부족한 사용자의 요구사항을 정확하게 이해하고, 이를 시스템 설계에 반영하는 과정은 개발자에게 새로운 역량을 요구했다.

요구사항 번역: 모호한 요구사항을 구체적인 도메인 설계로 변환하는 능력이 중요했다.

피드백 루프: 선생님의 말씀을 듣고, 화면 흐름을 보여주고, 확인하는 과정을 반복하며 피드백 루프(Feedback Loop)를 구축했다.

문서화: 요구사항과 다양한 문서들을 정리하여 의사소통의 효율성(Communication Efficiency)을 높였다.

이러한 경험은 개발자가 기술적인 전문성뿐만 아니라, 소통 능력(Communication Skill)의 중요성을 깨닫게 했다.

FSD 아키텍처와 컴포넌트 패턴의 아쉬움

MOZU는 v2에서 FSD(Feature-Sliced Design) 아키텍처를 도입하여 코드 구조를 개선하려 했다. 하지만, 납품 일정의 압박으로 인해 완벽한 컴포넌트 패턴을 구현하는 데 어려움을 겪었다.

FSD 아키텍처: 기능별로 코드를 분리하여 유지보수성(Maintainability)을 높이는 설계 방식이다.

컴포넌트 패턴: UI를 재사용 가능한 컴포넌트(Reusable Component)로 구성하여 개발 생산성(Development Productivity)을 향상시킨다.

개선 방향: 초기 설계 단계에서 컴포넌트 컨벤션을 더 엄격하게 잡고 시작했으면 하는 아쉬움을 표현했다.

이러한 경험은 개발자가 이상과 현실 사이의 균형(Balance)을 맞추는 것이 얼마나 어려운지를 보여준다.

납품 과정에서 발생한 문제 해결

MOZU의 실제 기관 납품 과정에서 다양한 기술적 문제들이 발생했지만, 개발팀은 이를 해결하며 프로젝트를 성공적으로 마무리했다.

WiFi 어댑터 부재: 서버 데스크톱에 WiFi 어댑터가 없어, 유선 연결을 통해 네트워크 문제를 해결했다.

Docker 이미지 문제: 이미지 이름 매칭 오류를 해결하기 위해 태그를 다시 달았다.

포트 충돌: nginx가 포트 80을 점유하는 문제를 해결하기 위해 해당 서비스를 중지했다.

이러한 문제 해결 과정은 개발자의 문제 해결 능력(Problem-solving Skill)끈기(Persistence)를 보여주는 중요한 사례이다.

MOZU - 고등학생이 실제 기관에 납품하기까지

댓글 0

첫 번째 댓글을 남겨보세요!