ZYLK, APISIX 최적화로 간소화된 IoT 서비스 달성
May 26, 2023
개요
알폰소 곤잘레스(Alfonso González)는 스페인에서 오픈소스 솔루션 최적화와 디지털 전환을 주도하는 기업인 ZYLK의 AI 및 IoT 개발자입니다. 알폰소는 ZYLK가 APISIX를 사용하여 MQTT 통신을 구현하고 이 구현 내에서 사이버 보안을 적용한 경험을 공유했습니다. 그는 "안전하고 신뢰할 수 있으며 고성능인 APISIX는 아마도 API를 위한 최고의 게이트웨이일 것"이라고 말했습니다.
도전 과제
- MQTT 라우팅, K8S 네트워킹, HTTP 통신과 관련된 문제로 어려움을 겪음.
- 모든 접근 가능한 엔드포인트와 라우팅을 관리하고 유지하는 것이 어려워 시간과 노력이 많이 소요됨.
- 네트워크에 새로운 사용자를 추가하는 것이 어려웠는데, 이는 서비스나 엔드포인트에 접근하기 전에 전체 아키텍처에 익숙해져야 했기 때문.
결과
- ZYLK는 APISIX를 구현하여 HTTP 통신 문제와 MQTT 문제를 해결함.
- ZYLK는 APISIX를 TCP 프록시로 사용하여 라즈베리 파이에서 클라우드의 RabbitMQ 큐 시스템까지의 안전한 스트림 경로를 생성함으로써 데이터 전송의 기밀성과 무결성을 보장함.
- ZYLK는 사용자 친화적인 인프라 개선을 경험했으며, 이로 인해 시간과 노력이 크게 절약되고 생산성이 향상됨.
배경 정보
ZYLK는 15년 이상 빅 데이터, Liferay 웹사이트 및 포털, 인공지능 분야에서 전문성을 갖춘 IT 컨설팅 기업입니다. 이 회사는 2004년부터 스페인과 유럽 전역의 민간 기업, 공공 행정 기관, 정부 기관을 포함한 다양한 고객을 대상으로 오픈소스 솔루션 최적화와 디지털 전환을 선도해 왔습니다.
ZYLK는 오픈소스 소프트웨어만을 사용하여 솔루션을 제공합니다. 이는 오픈소스 소프트웨어가 비용 효율성, 유연성, 투명성, 커뮤니티 지원 등의 장점을 제공하기 때문입니다. APISIX를 구현하기 전에는 통신 엔드포인트를 하나씩 처리하고 클라이언트에서 각 엔드포인트를 직접 참조해야 했습니다. 이로 인해 모든 접근 가능한 엔드포인트와 라우팅을 관리하고 유지하는 데 상당한 시간과 노력이 소요되었습니다.
이전 프로세스의 주요 문제점은 네트워크에 새로운 사용자를 추가할 때 전체 아키텍처에 익숙해져야 한다는 것이었습니다. 또한, 팀은 MQTT 라우팅 문제, K8S 네트워킹 관련 문제, HTTP 통신 문제에 직면했습니다.
기술 선택
ZYLK는 완전히 오픈소스 소프트웨어로 작업하며, 많은 Apache 프로젝트를 사용합니다. 따라서 API 게이트웨이를 찾을 때 Apache 솔루션을 시도해 보는 것이 좋을 것 같았습니다. 약 6개월 동안 문제 해결을 위한 솔루션을 검색하고 Kong Gateway 및 HAProxy와 비교한 후, ZYLK는 결국 APISIX를 구현하기로 결정했습니다. 그 이유는 다음과 같습니다:
1. APISIX는 더 간단하고 포괄적인 보안 플러그인을 제공하며 사용자 친화적인 대시보드를 가지고 있습니다.
APISIX는 간단하고 사용하기 쉬운 인터페이스와 포괄적인 보안 플러그인을 제공하여 사용자가 API 게이트웨이를 관리하고 보호하기 쉽게 합니다. 사용자 친화적인 대시보드는 API 게이트웨이의 구성과 관리를 더 쉽게 해줍니다.
2. APISIX는 HTTP뿐만 아니라 여러 프로토콜을 지원합니다.
APISIX는 다양한 프로토콜을 지원하여 다양한 유형의 API 트래픽을 관리할 수 있는 다재다능한 도구입니다. 이 유연성은 사용자가 모든 API 트래픽을 한 곳에서 관리할 수 있게 하여 인프라를 단순화하고 복잡성을 줄입니다.
3. APISIX는 클라이언트와 서버 간의 mTLS를 통해 들어오는 MQTT 메시지를 리디렉션할 수 있습니다.
APISIX의 MQTT 메시징 및 mTLS 암호화 지원은 클라이언트와 서버 간의 통신에 추가적인 보안 계층을 제공합니다. 이 기능을 통해 들어오는 MQTT 메시지는 APISIX를 통해 안전하게 리디렉션되어 목적지에 도달하기 전에 암호화되고 인증됩니다. 이는 시스템의 전반적인 보안을 강화하고 민감한 정보를 무단 접근이나 변조로부터 보호합니다.
APISIX는 ZYLK의 솔루션에 귀중한 추가 요소로 입증되었으며, API 게이트웨이 요구 사항을 더 간단하고 안전하게 관리할 수 있는 방법을 제공했습니다.
아키텍처 소개
1. 산업용 장치: PLC는 원격 건물에 있는 기후 제어 기계 데이터를 등록합니다.
먼저, PLC와 같은 산업용 장치에 초점을 맞춥니다. 이 장치들은 원격 건물에 위치한 기후 제어 시스템에서 생성된 데이터를 등록하는 데 사용됩니다. 이 기후 제어 시스템은 에지 컴퓨팅 인프라로 간주됩니다. 이 장치들에서 생성된 데이터는 클라우드 서버에 저장되어야 합니다. 클라우드는 서로 데이터를 공유하는 두 부분으로 나뉘며, 데이터는 산업용 프로토콜로 연결됩니다.
2. 산업용 프로토콜: Modbus와 BACnet을 사용하여 PLC에서 데이터를 읽습니다.
PLC에서 직접 데이터를 읽기 위해 BACnet 모듈을 사용합니다. ZYLK는 이 모듈과 BACnet 정보를 TCP로 변환하여 관리하기 쉽게 할 계획입니다. 데이터가 적절한 형식으로 변환되면 MQTT를 사용하여 클라우드 서버로 전송됩니다. MQTT는 IoT 장치에 사용하기 간단하지만, 클라우드에서 이를 처리하는 것은 ZYLK에게 특히 사이버 보안 조치를 구현하는 데 있어 몇 가지 도전 과제를 제시했습니다.
3. MQTT 통신: TCP 변환이 완료되고 데이터는 MQTT를 통해 클라우드 서버로 전송됩니다.
ZYLK는 사용 사례에서 안전한 MQTT 통신을 위해 APISIX를 솔루션으로 사용합니다. 산업용 공조 기계에서 생성된 데이터는 PLC에 의해 수집되고 Modbus용 TCP 게이트웨이에 의해 TCP 언어로 변환된 후 라즈베리 파이로 전송됩니다. 데이터는 큐 시스템(모스키토 또는 RabbitMQ)에 도달하기 위해 MQTT 프로토콜을 통해 전송되어야 하며, ZYLK는 이를 위해 APISIX를 사용합니다.
이 데이터를 저장하는 목표는 기계의 작동 기록을 보유하여 클라우드에서 머신 러닝 모델을 구축하는 데 사용하는 것입니다. ZYLK는 NTL 모델을 사용하여 이 데이터를 훈련하고 공급합니다. 에지 인프라는 간단한 다이어그램으로 구축되었으며, 왼쪽에는 산업용 공조 기계가 데이터를 생성하고 PLC에 의해 수집됩니다.
라즈베리 파이는 비보안 방식으로 MQTT 메시지를 전송하고 있었는데, 이는 ZYLK에게 문제가 되었습니다. 왜냐하면 메시지가 적어도 APISIX에서 외부로 나가는 부분은 보안이 필요했기 때문입니다. 라즈베리 파이는 원격 건물에 위치해 있었기 때문입니다. ZYLK는 메시지가 APISIX에 도달한 후의 보안에는 크게 신경 쓰지 않았는데, 이는 큐 시스템인 RabbitMQ가 자체 서버에 위치해 있었기 때문입니다. 그러나 통신의 첫 부분을 보호하는 것은 사이버 보안과 암호화된 메시지를 보장하기 위해 중요했습니다.
4. ML 모델: 클라우드에 도달한 데이터는 저장되고 LSTM 모델을 훈련하고 공급하는 데 사용됩니다.
마지막으로, 클라우드에는 NIFI 데이터베이스가 있는 Kubernetes 클러스터가 있습니다. 산업용 장치에서 생성된 데이터는 클라우드에 저장되고 LSTM 모델을 훈련하고 공급하는 데 사용됩니다.
구현 과정
1단계: 플러그인 활성화
ZYLK는 APISIX가 TCP 프록시로 작동하고 APISIX에서 RabbitMQ 큐 시스템까지의 스트림 경로를 생성하기 위해 취한 단계를 설명합니다. 먼저, 설정 파일에서 몇 줄을 주석 해제하여 MQTT 프록시 플러그인을 활성화하고 지정된 포트가 TCP 메시지에 대한 스트림 프로세스로 작동하도록 허용했습니다. 이 설정을 통해 REST API 및 HTTP 프로토콜과 함께 다른 모든 APISIX 기능을 문제 없이 사용할 수 있었습니다.
2단계: 스트림 경로 생성
다음으로, ZYLK는 APISIX의 특수 객체를 사용하여 스트림 경로를 생성했습니다. 이 객체는 도로와 유사하지만 대시보드에 나타나지 않습니다. 그들은 사용 중인 플러그인, MQTT 프로토콜 이름 및 버전, 그리고 보안 통신을 위한 인증서와 일치하는 SNI(서버 이름 표시)를 지정하는 간단한 명령을 사용했습니다. 그들은 RabbitMQ 서비스 또는 선호하는 다른 메시지 큐 시스템을 호스팅하는 업스트림 노드를 지정했습니다. APISIX를 TCP 프록시로 활성화하고 업스트림 경로를 설정함으로써 ZYLK는 라즈베리 파이에서 클라우드의 RabbitMQ 큐 시스템까지 안전하게 MQTT 메시지를 전송할 수 있었습니다. 이는 사용 사례에 필요한 사이버 보안과 암호화된 메시지를 보장했습니다. 다른 APISIX 기능과 REST API 및 HTTP 프로토콜을 계속 사용할 수 있는 능력은 솔루션을 유연하고 적응 가능하게 만들었습니다. ZYLK는 Mosquitto Broker와 함께 솔루션을 성공적으로 테스트했으며 완벽하게 작동하는 것을 확인했습니다.
3단계: 인증서 서명 및 로드
스트림 경로를 생성한 후, 다음 단계는 인증서를 생성하고 서명한 후 APISIX 인스턴스에 로드하는 것이었습니다. 그들은 Python 스크립트를 사용하여 인증서, 키, SNI가 포함된 SSL 객체를 생성했으며, SNI가 스트림 경로에 지정된 것과 일치하는지 확인했습니다.
ZYLK는 SNI가 정확한지 확인하는 것의 중요성을 강조합니다. 인증서가 로드되면 클라이언트와 서버 간에 상호 TLS가 설정되었으며, 양쪽 모두 인증서를 표시했습니다. 이 설정을 통해 ZYLK는 APISIX에서 외부로의 안전한 통신을 확보했습니다. 또한 필요에 따라 APISIX와 업스트림 간의 통신을 암호화할 수도 있었지만, 암호화하지 않은 상태로 두기로 결정했습니다. ZYLK는 APISIX를 다른 용도로도 사용했으며, 플러그인이 추가 기능을 제공한다는 것을 발견했습니다. 그들은 들어오는 트래픽을 MQTT 브로커로 리디렉션하고, 필요한 경우 클라이언트 ID를 사용하여 메시지를 다른 주제로 나누었습니다. 그리고 MQTT 인증도 가능했습니다.
APISIX와 MQTT의 사용은 ZYLK가 일반적인 HTTP 관련 문제를 넘어 독특한 문제를 해결하고 기능을 확장할 수 있게 했습니다. 안전한 통신 채널을 생성함으로써, 그들은 산업 장비에서 생성된 데이터를 저장하고 분석하여 예측 유지보수를 위한 머신 러닝 모델을 훈련할 수 있었습니다.
APISIX 사용 후 성과
ZYLK는 APISIX를 매우 높이 평가하며 비즈니스 파트너들에게 적극 추천하고 있습니다. 친구에게 APISIX를 설명할 때, 알폰소 곤잘레스는 "APISIX는 인증, 속도 제한, 추적 가능성을 포함한 다양한 라우팅 기능을 제공하는 Apache API 게이트웨이 서비스입니다"라고 말할 것입니다. 알폰소는 APISIX가 API를 위한 최고의 게이트웨이라고 믿습니다.
ZYLK의 사용 사례는 산업용 장치, 산업용 프로토콜, MQTT 통신, ML 모델을 포함했습니다. ZYLK가 APISIX를 사용하여 얻은 이점은 다음과 같습니다:
1. 산업 환경에서 APISIX를 사용하여 안전하게 MQTT 메시지 전송
PLC와 같은 산업용 장치는 기후 제어 기계 데이터를 등록하며, 이 데이터는 TCP로 변환되어 MQTT를 사용하여 클라우드 서버로 전송됩니다. APISIX는 라즈베리 파이에서 클라우드의 RabbitMQ 큐 시스템까지 안전하게 MQTT 메시지를 전송하는 데 사용되었으며, 이는 사용 사례에 필요한 사이버 보안과 암호화된 메시지를 보장했습니다.
2. MQTT 프록시 플러그인과 상호 TLS를 통한 안전한 통신 활성화
ZYLK는 MQTT 프록시 플러그인을 활성화하고 APISIX의 특수 객체를 사용하여 스트림 경로를 생성했습니다. 또한 Python 스크립트를 사용하여 인증서를 서명하고 로드했으며, SNI가 스트림 경로에 지정된 것과 일치하는지 확인했습니다. 클라이언트와 서버 간에 상호 TLS를 설정함으로써, ZYLK는 APISIX에서 외부로의 안전한 통신을 확보할 수 있었습니다.
3. APISIX를 통한 기능 확장
ZYLK의 APISIX와 MQTT의 성공적인 구현은 일반적인 HTTP 관련 문제를 넘어 독특한 문제를 해결하고 기능을 확장할 수 있게 했습니다. 그들은 산업 장비에서 생성된 데이터를 저장하고 분석하여 예측 유지보수를 위한 머신 러닝 모델을 훈련할 수 있었습니다.
ZYLK는 업계의 최전선에 서서 고객에게 최고의 솔루션을 제공하기 위해 최선을 다하고 있습니다. 미래의 도전 과제를 해결하기 위해 그들은 APISIX와 같은 기술을 활용하여 목표를 달성할 새로운 혁신적인 방법을 찾을 것입니다.
요약
APISIX를 구현하기 전에 ZYLK는 통신 엔드포인트를 하나씩 관리해야 했으며, 이는 시간이 많이 소요되고 비효율적이었습니다. 그들은 MQTT 라우팅, K8S 네트워킹, HTTP 통신과 관련된 여러 문제에 직면했습니다.
다양한 API 게이트웨이 솔루션을 연구한 후, ZYLK는 포괄적인 보안 기능, 사용자 친화적인 대시보드, 그리고 간단함 때문에 APISIX를 구현하기로 결정했습니다. APISIX를 통해 ZYLK는 MQTT 메시징 통신 및 내부 API 라우팅을 위해 라우터의 포트를 안전하게 노출할 수 있었습니다. 또한 클라이언트와 서버 간의 mTLS를 통해 들어오는 MQTT 메시지를 리디렉션할 수 있었습니다. ZYLK는 또한 인프라에서 상당한 개선을 경험했으며, 이로 인해 시간과 노력이 절약되었습니다.
미래 목표로, ZYLK는 사이버 보안, IT와 OT의 융합, 설명 가능한 딥 러닝을 업계의 가장 큰 도전 과제로 보고 있습니다. 앞으로 6개월 동안 팀은 R&D 프로젝트를 계속 진행하고 자체 IoT 서비스를 개발할 계획입니다.