SteVe OCPP 서버 배포 완벽 가이드
전기차 보급이 빠르게 확산됨에 따라 충전 인프라 관리는 운영자들의 핵심 과제가 되었습니다. SteVe는 OCPP 프로토콜을 지원하는 오픈소스 서버 구현체로,充电桩 네트워크를 효과적으로 관리할 수 있는 솔루션을 제공합니다. 본 가이드에서는 SteVe OCPP 서버의 배포부터 설정까지 단계별로 설명하겠습니다.
1. 배포 전 필수 준비사항
배포를 시작하기 전에 시스템 환경이 다음 조건을 충족하는지 확인해야 합니다:
- Java 환경: JDK 21 이상
- 빌드 도구: Maven
- 데이터베이스: MySQL 또는 MariaDB (UTC 시간대 권장)
주의사항: 데이터베이스 설정이 배포成败를 결정합니다. MySQL 서버가 TCP 연결을 허용하도록 하고, my.cnf에서 skip-networking 옵션을 비활성화해야 합니다.
2. Docker를 통한 빠른 배포
신속한 환경 구축을 원한다면 Docker 배포를 권장합니다. 다음 명령어로 전체 서비스 스택을 시작할 수 있습니다:
docker-compose up -d
Docker 배포의 이점은 격리된 환경과 빠른 시작입니다. 기본 설정에서 웹 관리 인터페이스는 http://localhost:8180에서 접근할 수 있습니다.
3. 소스 코드 기반 전통적 배포
전통적인 배포 방식을 선호한다면 다음 단계를 따르세요.
3.1 프로젝트 소스 확보
git clone https://github.com/steve-community/steve
3.2 데이터베이스 초기화
MySQL에서 다음 초기화 스크립트를 실행합니다:
CREATE DATABASE chargingdb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'chargeradmin'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON chargingdb.* TO 'chargeradmin'@'%';
FLUSH PRIVILEGES;
3.3 설정 파일 구성
src/main/resources/application-prod.properties 파일을 편집합니다. 주요 설정 항목은 다음과 같습니다:
- 데이터베이스 연결: 실제 데이터베이스 환경에 맞게 연결 정보 설정
- 서버 IP 주소: 서버의 정확한 IP로 설정
- 웹 인터페이스 자격 증명: 기본 관리자 계정 정보 변경
- HTTPS 설정: 키스토어 관련 속성 활성화 및 구성
3.4 프로젝트 빌드 및 실행
Maven으로 프로젝트를 빌드합니다:
./mvnw clean package -DskipTests
빌드 완료 후 애플리케이션을 실행합니다:
java -jar target/steve.jar --spring.profiles.active=prod
4. 핵심 기능 설정
4.1 충전기 관리 설정
SteVe는 다양한 OCPP 프로토콜 버전을 지원합니다: 1.2S, 1.2J, 1.5S, 1.5J, 1.6S, 1.6J. 충전기 추가 시 올바른 통신 주소를 설정해야 합니다:
- SOAP 프로토콜:
http://<서버IP>:<포트>/steve/services/CentralSystemService - WebSocket/JSON:
ws://<서버IP>:<포트>/steve/websocket/CentralSystemService
4.2 보안 확장 기능
OCPP 1.6J 보안 확장은 기업급 보안 기능을 제공합니다:
- 보안 프로파일 0-3: 비보안 모드부터 양방향 TLS 인증까지
- 인증서 관리: 서명, 설치, 삭제 프로세스 완비
- 보안 이벤트 모니터링: 실시간 보안 이벤트 로깅
- 서명된 펌웨어 업데이트: 인증서 기반 검증의 암호화된 펌웨어
5. 성능 최적화 및 보안 강화
5.1 프로덕션 환경 권장 설정
- 시간대 일관성: SteVe와 MySQL이 동일한 UTC 시간대 사용
- 네트워크 격리: SteVe 인스턴스를 공용 네트워크에 직접 노출 금지
- 정기 백업: 데이터베이스 백업 스케줄 수립
5.2 일반적인 문제 해결
충전기 연결 실패: chargeBox ID가 정확한지 확인하고 네트워크 연결 상태를 점검합니다.
웹 인터페이스 접근 불가: 포트 설정과 방화벽 규칙을 검증합니다.
데이터베이스 연결 오류: 데이터베이스 서비스 상태와 연결 파라미터를 확인합니다.
6. Kubernetes 클러스터 배포
대규모 배포가 필요한 경우 Kubernetes를 지원합니다:
- Docker 이미지를 빌드하여 프라이빗 레지스트리에 푸시
k8s/yaml/Deployment.yaml의 이미지 태그 수정- 네임스페이스 생성 후 설정 파일 적용
7. 실제 활용 시나리오
7.1 충전 상태 실시간 모니터링
커넥터 상태 페이지를 통해 모든 충전기의 연결 상태와 충전 진행률을 실시간으로 확인할 수 있습니다.
7.2 사용자 및 태그 관리
완전한 사용자 인증 체계와 RFID 카드 관리 기능을 제공하여 충전 서비스의 보안을 보장합니다.
7.3 거래 데이터 분석
상세한 거래 기록과 통계 분석을 통해 운영 의사결정을 데이터 기반으로 수행할 수 있습니다.
8. 운영 모니터링 및 문제 해결
안정적인 시스템 운영을 위해 모니터링 체계를 구축하는 것이 필수적입니다:
- 로그 분석: 시스템 로그를 정기적으로 검토하고 이상 패턴 식별
- 성능 모니터링: 시스템 리소스 사용량 모니터링
- 보안 감사: 보안 이벤트 로그 정기 검토
9. 고급 기능 확장
비즈니스 성장에 따라 다음 확장 옵션을 고려할 수 있습니다:
- 멀티테넌시 지원: 다양한 사업자를 위한 독립된 관리 공간 제공
- API 통합: 웹 API를 통한 외부 시스템 데이터 연동
- 사용자 정의 리포트: 비즈니스 요구사항에 맞는 분석 리포트 제작
10. 배포 성공 검증
배포 완료 후 다음 단계로 시스템 상태를 검증합니다:
- 웹 관리 인터페이스에 접근하여 설정한 자격 증명으로 로그인
- 테스트용 충전기를 추가하고 통신 연결 확인
- 충전 시뮬레이션을 실행하여 기능 완전성 검증
본 가이드를 참조하면 SteVe OCPP 서버의 성공적인 배포가 가능할 것입니다. Docker 기반 빠른 배포 maupun 소스 코드 빌드 방식 모두 안정적인 충전기 관리 플랫폼을 구축할 수 있습니다. 실제 운영 시에는 특정 비즈니스 요구사항에 따라 설정을 지속적으로 최적화하여 시스템이 항상 최상의 상태를 유지하도록 관리해야 합니다.