오늘은 프로젝트의 실제 개발을 시작하기 위한 구조 설계와 개발 환경 정리를 진행하였다.
그동안 프로젝트 기획과 요구사항 정의에 집중했다면, 이제는 실제 구현 단계로 넘어가기 위해 서비스 구조와 저장소 전략, 데이터베이스 접근 방식 등을 구체화하는 시간을 가졌다.
AIMS는 기능별 독립 서비스를 기반으로 한 구조로 개발을 진행하기로 결정하였다.
backend
├─ assembly-service
├─ quality-service
└─ ai-service
각 서비스는 담당 기능을 독립적으로 개발할 수 있도록 분리하며, 향후 서비스 확장과 유지보수성을 고려한 구조를 목표로 한다.
자동차 제조 공정 및 생산 라인 관련 데이터 관리
품질 검사 및 불량 데이터 관리
AI 분석 기능 담당
AI Service는 FastAPI 기반으로 개발을 진행하며 아래와 같은 계층 구조를 사용한다.
core/
공통 설정, 로깅, 예외 처리 담당
routers/
API 엔드포인트 관리
service/
비즈니스 로직 처리
ml/
AI 모델 생명주기 관리
프로젝트 초반부터 학습 코드와 서비스 코드를 분리하여 향후 유지보수와 모델 교체가 쉽도록 설계하였다.
AIMS는 하나의 RDS 인스턴스 내부에 두 개의 논리 데이터베이스를 운영한다.
RDS
├─ sampledb
└─ maindb
원본 데이터 저장
실제 서비스 데이터 저장
원본 데이터와 서비스 데이터를 분리함으로써 데이터 정합성과 관리 효율성을 확보할 수 있다.
RDS는 Private Subnet에 배치한다.
외부에서 직접 접근하지 않고 Bastion Host를 통해 SSH 터널링 방식으로 접속하도록 구성한다.
Developer PC
↓
Bastion EC2
↓
Private RDS
이를 통해 데이터베이스를 외부에 노출하지 않고 안전하게 운영할 수 있다.
또한 다음 사항을 팀 규칙으로 정하였다.
기존 JWT 전달 방식에서 보안성을 높이기 위해
URL 또는 LocalStorage 기반 토큰 관리
HTTPOnly Cookie 기반 JWT 관리
방식으로 변경하기로 하였다.
이를 통해
효과를 기대할 수 있다.
프로젝트 저장소는 역할별로 분리하여 운영한다.
infra
Terraform 코드 및 인프라 관리
backend
Spring Boot 및 AI 서비스 관리
frontend
v0 기반 화면을 React + TypeScript 코드로 이전
팀 협업 품질 향상을 위해
main
↕
dev
브랜치 운영 전략을 사용한다.
모든 기능은 Pull Request를 통해 병합하며
과정을 거친 후 반영하도록 하였다.
현재까지는 프로젝트 기획과 설계가 중심이었다면 이제는 실제 개발 단계에 진입하게 되었다.
다음 목표는 다음과 같다.
AIMS 프로젝트가 단순 모니터링 시스템이 아니라 제조 공정 데이터를 통합적으로 분석하고 시각화하는 지능형 관제 시스템으로 발전할 수 있도록 지속적으로 구현해 나갈 예정이다.