학과 동아리 ERP 시스템 구축과 도입
포스트
취소

학과 동아리 ERP 시스템 구축과 도입

DoD 서버에 첫번째 소프트웨어 ERP 시스템

동아리방에 있는 서버 컴퓨터를 활용하여 하나의 컴퓨터로 동작하게 시스템을 구성 한 뒤, 개발 IDE 환경을 구축할 예정이다. 그 중 시범용 소프트웨어로 동아리방 ERP 시스템을 도입 할 예정이다.

ERP란? Microsoft에서 ERP 정의

ERP는 전사적 자원 관리(Enterprise Resource Planning)의 약칭으로, 재무, 제조, 소매유통, 공급망, 인사 관리, 운영 전반의 비즈니스 프로세스를 자동화하고 관리하는 시스템입니다. ERP 시스템이 여러 부서 간에 데이터 장벽을 해소하고 정보를 통합하므로 비즈니스 책임자가 이를 통해 인사이트를 확보하여 운영을 최적화하고 더 나은 의사결정을 내릴 수 있습니다.

이름은 거창 하지만 실제로 동아리방에 적용이 될 모습을 나타 낸다면 아래의 키오스크 처럼 구현이 될 예정이다.

키오스크 이미지
키오스크 형태 및 완성본 모습(예정)

ERP 시스템을 도입하고자 하는 이유는 아래와 같다.

  1. 동아리방에 있는 자원, 리소스가 관리가 되어있지 않다.
  2. 어떤 사람이 어떤 물건을 들고 갔는지 트래킹이 되고 있지 않다.
  3. 서버 컴퓨터는 현재 사용이 되고 있지 않다.
  4. 인재 관리 및 동아리방 인원 관리가 허술하게 되어있다.

이 처럼 동아리실, 구 랩실의 자재가 관리가 되고 있지 않으며, 누가 물건을 훔치더라도 아무도 알지 못하는 사태가 종종 발생한다. (심지어 일단 물건을 들고 간 뒤에 생각하는 학우도 있었다.)

그래서 위의 문제점을 해결 하고자 동아리방에 ERP 시스템을 구축 하고자 했다.

ERP 시스템. 누가 무엇을 개발하는가?

현재 계획으로는 키오스크, 잠금 장치, 대쉬보드, 모든걸 총괄 처리할 서버를 개발할 목적으로 계획 하였다. 하지만 총괄 처리할 서버는 k8s 위에 동작 해야 하므로, 조금 더 연구를 진행 하고, 2021년 11월 중순에 랜처를 활용한 k8s 시스템 구축할 예정이다.

  1. 프론트 페이지 담당자 : 20학번 임미선
  2. 디자인 담당자 : 19 학번 황진주
  3. 백엔드, 인프라 담당자 : 18학번 차주형

프론트 페이지의 범위는 키오스크와 대쉬보드 이며 개발 프레임 워크는 Vue.js를 활용 한다.
디자인의 개발 범위는 프론트 페이지를 개발 하기 위해서 UI, 이미지, 목업을 진행 한다.
백엔드, 인프라의 개발 범위는 k8s를 구축하고, k8s위에 동작하도록 백엔드 서버 구축과 아두이노, 라즈베리파이의 개발 환경 구축 이다.

장비에 대한 전원 공급은 어떻게 할것인가?

시스템을 처음 구축 할 때 가장 많은 고민을 했던 부분 라즈베리파이와 아두이노에 각각 어떻게 전원을 공급할 것인가? 이였다. 라즈베리파이의 경우에는 전원과 이더넷이 모두 연결이 되어있어야지만 통신이 가능하고, 아두이노의 경우엔 USB A to B 케이블을 통해서 전원 공급과 시리얼 통신을 함께 해서 가능 하다.

그래서 사물함 안에 어떻게 전원을 공급하고, 아두이노와 통신을 할 것인가?

  1. 라즈베리파이와 서버는 PoE 이더넷 케이블을 통해 전원을 공급한다.
  2. 아두이노와 라즈베리파이는 USB A to B 케이블을 사물함 윗 공간을 뚫어서 연결한다.

이것이 가장 최선의 방법이였다. 만약 추가적인 아이디어가 나온다면, 밀폐된 공간에 전원 공급을 해볼 생각이다.
(밀폐된 공간에 전원을 공급하는 방법은 완전히 불가능한 내용이 아니긴 하다.. 예를 들어서 무선충전기와 배터리를 탑재 한다거나… 말이다. 그치만 비용이 제일 큰 문제이다.)

키오스크 이미지
실제 시스템 전원 공급 및 케이블 연결도
파란색: PoE 이더넷 케이블, 빨간색: 시리얼 케이블

통신 프로토콜 정의

현재 장비간 통신을 정의 했으며, 추후, 프로그램 간 통신을 정의 할 예정이다. 현재 정의를 해야하는 통신은 아래와 같으며, 현재 작성을 한 프로토콜은 아두이노와 라즈베리파이, 라즈베리파이와 DoD 서버 통신만 정의를 했다.

  1. 아두이노 <-> 라즈베리파이
  2. 라즈베리파이 <-> DoD 서버
  3. DoD 서버 <-> 대쉬보드

아두이노와 라즈베리파이 통신

아두이노와 라즈베리파이 통신은 많은 내용은 많이 없다. 왜냐하면 통신의 주 목적은 잠금 장치의 상태, 잠금 On/Off 이며, 통신 상태 확인이다.

그리고 통신은 시리얼로 이뤄지기 때문에 (OSI 계층으로 따진다면 L1) 이기 때문에 직접적인 데이터 검증, 확인이 필요하다.

아두이노 통신 프로토콜 이미지
아두이노 통신 프로토콜 정의 엑셀

파일 내에 정의가 되어있는 내용은

  1. 아두이노와 라즈베리파이 시리얼 연결을 위한 보드레이트, 패리티, 스탑, 데이터 비트와 연결을 위한 정보
  2. 그 외에 STX, ETX 데이터 시작점과 종료점
  3. Check Sum을 계산하기 위한 방법
  4. Request 데이터 내용과 Response 결과

아두이노와 라즈베리파이간 시리얼 연결 관련해서는 아래와 같이 정의했다.

Baudrate : 9600
Parity : NONE
StopBit : 1
DataBit : 8

Request로는 RS-232로 연결할 예정이기 때문에 단방향 통신을 목표로 정의 했다. 그리고 통신은 라즈베리파이가 항상 질의 하고 아두이노가 응답 하는 형식으로 정의 했다.

질의 하는 내용은 아래와 같다.

  1. 장비 통신 확인
  2. 장비 잠금

만약 데이터 통신을 하던 중 Check sum의 값이 오류가 나거나, 통신 데이터가 분실 했을 경우 NACK 응답을 한다.

라즈베리파이와 DoD 서버 통신

라즈베리파이와 DoD 서버 통신의 주 목적은 데이터 동기화와 라즈베리파이의 행동 방침 결정이다.

그래서 라즈베리파이와 DoD서버 통신의 내용은 아래와 같다.

  1. 라즈베리파이, 아두이노 시스템 DoD 서버에 등록및 상태 점검
  2. 아두이노, 라즈베리파이의 장비 상태
  3. 장비 대여 시스템 (장비 목록 및 장비 반납, 대여 관련)
  4. JWT를 활용한 사용자 로그인
  5. 리소스 다운로드 관련

라즈베리파이 통신 프로토콜 이미지
라즈베리파이 통신 프로토콜 정의 엑셀

라즈베리파이는 단일개체로 존재하는게 아닌, 여러개의 사이트로 확장이 가능하게 만들 예정이므로, 확장성 있게 개발을 할 예정이다.

데이터베이스 설계는 라즈베리파이 Id와 아두이노 Id와 소속된 라즈베리파이 Id와 Join을 통하여 사용할 예정이다.

멀티 사이트 디자인
멀티 사이트 디자인

이처럼 멀티 사이트로 사물함이 있으며, 이 모든것을 관리하기 위한 라즈베리파이와 잠금장치를 위한 아두이노로 구현을 할 예정이다. 구현을 하면서 모든 데이터는 하나의 DoD서버로 데이터가 모이게 할 것이며, 모인 뒤에 데이터 프로세싱을 한 뒤 관리자 페이지(대쉬보드)에 표현을 한다.

현재 개발 단계

현재 개발 하기위해서 정의가 된 내용은 아래와 같다.

  1. 장비와 DoD 서버간 통신
  2. 장비간 결합, 통신 방법
  3. 로그인 세션 관리 방법

그리고 현재 추후 정의 및 개발 해야할 내용은 아래와 같다.

  1. 쿠버네티스를 활용한 DoD 서버 인프라 구축
  2. DoD 서버와 대쉬보드 통신 정의
  3. 키오스크와 대쉬보드 디자인
  4. 키오스크에서 대여 가능한 장비 목록 및 자재 물건 확인

로그인할 때 세션 관리 방법은 Json Web Token을 활용하여 개발 하기로 하였다.

추가적인 내용은 지속적인 개발을 통해 수정된 내용이 있으면 새롭게 포스팅을 진행할 예정이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Cloudflare의 API 활용하여 서브도메인의 SSL 인증서와 DNS 관리

ERP 시스템에 적용할 JWT 인증 기법