오늘의 목표
오늘은 스마트팩토리 관제 시스템 구현을 위한 데이터 저장 구조와 실시간 데이터 처리 방식에 대해 논의하고, 데이터베이스 구축 및 프론트/백엔드 개발을 진행했다.
오전 작업
현재 프로젝트는 실제 제조 데이터를 사용하는 것이 아니라 샘플 데이터를 기반으로 공정 흐름과 AGV 이동을 시뮬레이션해야 한다.
이를 위해 샘플 데이터베이스(Sample DB)와 운영 데이터베이스(Main DB)를 분리하여 운영하는 방안을 논의했다.
장점
단점
장점
단점
장점
단점
장점
단점
오전 시간에는 다음 작업도 함께 진행했다.
현재 Redis는 AWS ElastiCache 환경에서 운영된다.
개발 초기에는 Bastion 서버를 이용한 SSH 터널링 방식으로 접속할 수 있도록 구성했다.
REDIS_HOST=127.0.0.1
REDIS_PORT=16379
REDIS_HOST=Redis Primary Endpoint
REDIS_PORT=6379
ssh -i "C:\Users\user\Downloads\*.pem" \
-L 16379:REDIS_PRIMARY_ENDPOINT:6379 \
ubuntu@BASTION_ELASTIC_IP
해당 터널이 활성화되어 있는 동안에는 로컬 PC에서 Redis를 다음과 같이 사용할 수 있다.
127.0.0.1:16379
매번 DB 터널과 Redis 터널을 따로 여는 것이 번거롭기 때문에 SSH Config를 이용하여 하나의 명령으로 사용할 수 있도록 구성했다.
Host aims-db
HostName BASTION_ELASTIC_IP
Port 22
User ubuntu
IdentityFile C:/Users/user/Downloads/*.pem
LocalForward 13306 RDS_ENDPOINT_ADDRESS:3306
LocalForward 16379 REDIS_PRIMARY_ENDPOINT:6379
ServerAliveInterval 60
ExitOnForwardFailure yes
이후에는 다음 명령만 실행하면 된다.
ssh aims-db
오후에는 Sample DB와 Main DB에 데이터셋을 적재했다.
진행 과정에서 발견한 문제는 다음과 같았다.
이를 반영하여 데이터셋을 수정한 뒤 최종적으로 데이터를 저장했다.
공정별 생산 흐름을 기반으로 병목 현상을 탐지하기 위한 모델링 작업을 추가로 진행했다.
향후에는 다음과 같은 기능으로 확장할 예정이다.
백엔드에서는 기본 개발 환경을 구축했다.
구현 항목은 다음과 같다.
향후 API 개발을 위한 기본 틀을 구성했다.
AWS 환경에서 EKS Cluster 구축을 위한 설계를 진행했다.
현재 검토 중인 구성 요소는 다음과 같다.
샘플 데이터 및 공정 구조 변경 사항을 반영하기 위해 메인 페이지를 수정했다.
주요 변경 사항은 다음과 같다.
실제 제조 라인처럼 AGV가 공정 사이를 왕복 이동하는 형태로 변경하는 작업을 진행했다.
현재 Bastion 서버를 통해 DB 및 Redis 터널을 연결하고 있으나, 강사님께서는 단순 통로 역할만 수행하는 EC2는 자원 낭비가 발생할 수 있다고 조언해 주셨다.
GitHub Actions는 브랜치별로 자동 실행되도록 구성하는 것이 좋다는 의견을 받았다.
YAML 파일을 분리하여 운영 환경과 테스트 환경을 구분하는 방향으로 설계할 예정이다.
추가로 다음과 같은 팀 운영 방안도 제안받았다.
프로젝트 규모가 커질수록 개발 생산성보다 협업 프로세스가 더욱 중요해질 수 있기 때문에 팀 차원의 규칙을 정하는 것이 필요하다는 의견이었다.
마무리
오늘은 단순히 기능 개발만 진행한 것이 아니라 앞으로의 실시간 데이터 처리 구조와 운영 방식을 결정하는 중요한 논의를 진행한 하루였다.
특히 Sample DB와 Main DB를 분리하여 운영하는 구조, Redis 연결 방식, 병목 탐지 모델링 등은 향후 스마트팩토리 관제 시스템의 핵심 기반이 될 것으로 보인다.
내일부터는 API 개발과 실시간 AGV 시뮬레이터 구현을 본격적으로 진행할 예정이다.