AWS 기술 블로그
ODN의 AWS IoT 및 서버리스를 활용한 해양환경 모니터링 플랫폼 개발
오든의 스마트 아쿠아 팜 솔루션은 스마트 부표 솔루션과 센싱, 통신 디바이스, 실시간 AIoT 서비스가 가능한 플랫폼을 제공합니다. LTE와 Wifi 등을 다양한 IoT 무선 통신과 디지털 센싱 프로토콜을 지원하여 호환성과 범용성을 제공하고, 디지털 시그널 프로세서(ODN-DSP)로 확보된 ‘메타오션’ 데이터 API 서비스와 ‘오든뷰’ 앱 서비스를 통해 사용자의 편리성을 극대화했습니다. 오든은 이러한 AIoT 솔루션을 통해 접근성이 떨어지는 해상에 물리적인 접근을 하지 않고도 AIoT 디바이스를 제어 가능하고, 통신 두절로 인한 데이터 가용성을 개선하였습니다.
그림1. 오든 디바이스 솔루션
스마트 아쿠아 팜 솔루션 소개
오든은 해양 환경에 대한 실시간 모니터링 및 환경 정보 확보 및 기능성을 확보한 수요 기반의 디바이스를 제공합니다.
친환경성과 사용성 측면을 제고한 해양환경 측정 디바이스 ‘스마트부표(smart buoy)’와 멀티채널 모드버스 프로토콜 센싱 및 원격 관리를 지원하는 디지털시그널프로세서(ODN DSP(Digital Signal Processor)) 제품군을 통하여 실시간으로 해양 환경에 대한 측정 및 센서의 칼리브레이션 및 수치 오차 보정을 수행합니다.
오든에서는 해양환경 모니터링 솔루션 ‘오든뷰(ODN View)’와 REST API 기반 기능 확장형 데이터 서비스인 ’메타오션(Meta Ocean)’을 엔드 유저인 양식 어가와 데이터 수요처에 제공하여 공동의 기능 확장을 목표로 합니다.
확보된 기초 데이터 및 외부 환경정보의 제공과 더불어 환경변화 예측, 품종별 사육환경 정보에 대한 행동방식에 대한 의사결정 지원을 제공하여 기존의 경험과 노하우에 기반한 양식 어업이 아닌 AWS IoT 연계의 디지털전환 스마트 양식 솔루션입니다.
AWS IoT Core와 FreeRTOS 실시간 운영체제의 조합으로 오든의 솔루션은 펌웨어 업그레이드, 기능성 및 운영 방식의 변경을 원격지에서 수행이 가능하며, Greenglass 엣지 디바이스를 활용해 데이터 단절 및 데이터 복호화를 수행합니다.
Amazon DynamoDB의 확장성을 기반으로 한 해양환경 센서의 DB테이블 구현이 자유로우며, API기반의 기능성 확장에 한계가 존재하지 않습니다.
스마트 아쿠아팜 아키텍쳐
(1) 디바이스, Greengrass Core, AWS IoT와의 연결
- 오든에서 개발한 해양 환경 측정 IoT 디바이스는 태양광 발전 기반 전력으로 멀티 프로브 센서와 LTE 모뎀이 탑재되어 동작합니다. 펌웨어는 FreeRTOS기반 ESP-IDF로 개발되었으며, Modbus protocol을 통해 GNSS, 원격 센서 측정 데이터, 통신상태, 태양광 및 전력상태 등을 측정하여 JSON 데이터를 생성합니다. 육/해상 양식장, 저수지, 강 등 수질 관련 모든 환경에 설치가 가능합니다.
- 현장 별로 설치된 디바이스들을 그룹화하여 그룹에 속한 디바이스를 일괄적으로 관리하고 제어하며 정책을 적용합니다. 또한 AWS IoT와 디바이스의 안전한 보안 연결을 위해 TLS 프로토콜을 사용하며 ACM을 통해 인증서를 발급받습니다.
- Greengrass Core의 Client device auth 구성요소는 AWS IoT Core의 인증서를 MQTT Broker에게 제공하고 디바이스와의 TLS handshake를 진행합니다. 정상적으로 완료되면 Greengrass Core의 MQTT Broker와 안전하게 연결되며 디바이스에서 수집 생성된 JSON 데이터를 MQTT Protocol을 통해 전달됩니다.
- MQTT Bridge는 MQTT Broker와 AWS IoT Core와의 연결을 관리하며 로컬 간의 MQTT 통신을 클라우드로 확장합니다. 이를 통해 로컬과 AWS 클라우드 리소스 안전하게 통신 할 수 있습니다.
(2) DynamoDB 데이터 저장 및 서버리스 기반 API 서버
- MQTT Bridge를 통해 AWS IoT Core로 전달된 기본 데이터를 DynamoDB에 저장하기위해 Basic Ingest을 구성하였습니다. IoT Rules를 정의하고 적용하여 메시지를 처리하고 해당 메시지의 조건에 따라 DynamoDB의 테이블에 저장됩니다. Basic Ingest는 메시징 요금이 발생하지 않기 때문에 비용 절감의 이점이 있습니다.
- Rest API서버를 통해 클라이언트와 상호 작용합니다. FastAPI로 구현되었으며 AWS Lambda와 Amazon API Gateway를 통합한 서버리스 API입니다. 클라이언트는 API서버의 정의된 리소스와 HTTP 메서드를 사용하여 인터페이스를 제공합니다.
- Cognito 사용자 풀에서 발급된 토큰을 사용하여 API 호출에 대한 인증을 처리합니다. Amazon Cognito에서 제공되는 인증 정보를 기반으로 요청을 처리하여 보안을 유지하고 부정한 액세스로부터 시스템을 보호합니다.
- Amazon S3와 Amazon CloudFront를 통해 Front-End를 운영하고, API 글로벌 네트워크 가용성과 트래픽 최적화 및 보안을 강화합니다.
(3) SiteWise를 사용한 IoT 데이터 관리 및 시스템 모니터링
- AWS IoT Greengrass Core 구성요소로 실행되는 SiteWise Gateway를 사용하여 디바이스에서 생성된 원시 데이터를 필터링하고 가공하는 전처리 단계를 수행하며 수집한 데이터를 AWS IoT SiteWise로 안전하게 연결하고 전송합니다. Sitewise에서 표준화된 데이터 모델을 정의하고 사용하여 데이터를 일관성 있게 분류하고 에너지 소비, 장비 상태, 센서 데이터의 예측 및 분석을 수행합니다.
- Amazon Managed Grafana를 사용하여 데이터를 시각화합니다. AWS IoT SiteWise를 데이터 소스로 쿼리를 작성하여 그래프, 테이블, 지도 등을 활용하여 디바이스의 위치와 상태, 센서 데이터를 시각화 합니다. 시스템 개발자와 운영자에게 시각화 된 시계열 정보를 모니터링하고 최적화 하여 통찰력 있는 시스템 분석을 통해 유지 보수를 최적화 합니다.
- AWS IoT Events를 사용하여 IoT 디바이스 및 애플리케이션에서 실시간으로 발생하는 이벤트를 감지하고 처리합니다. IoT Rule을 통해 전달되는 데이터의 변화를 감지하고 이를 Amazon Simple Notification Service(SNS)를 통해 사용자 및 시스템 운영자에게 알립니다. 디바이스의 위치 변경, 디바이스 태양광 및 전력 상태, 해양 환경 데이터의 이상 변화 등을 감지하여 신속한 대응과 유지 보수가 가능합니다.
사용된 주요 AWS 서비스 소개
AWS IoT Core
AWS IoT Core는 IoT 장치를 다른 장치 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다. AWS IoT는 IoT 디바이스를 AWS IoT 기반 솔루션에 통합하는 데 도움이 되는 디바이스 소프트웨어를 제공합니다. 디바이스를 AWS IoT에 연결할 수 있는 경우, AWS IoT는 디바이스를 AWS가 제공하는 클라우드 서비스에 연결할 수 있습니다.
- 장치 연결 및 관리 : AWS IoT Core는 수십억 개의 장치와의 통신을 관리할 수 있으며, 이러한 장치들을 안전하게 연결하고, 상태를 지속적으로 모니터링할 수 있는 기능을 제공합니다.
- 보안 : AWS IoT Core는 고급 보안 기능을 제공하여, 데이터의 안전한 전송 및 처리를 보장합니다. 이는 TLS (Transport Layer Security) 및 AWS 자체의 인증 메커니즘을 통해 구현됩니다.
- 메시지 브로커 : AWS IoT Core는 MQTT, HTTPS 및 WebSockets 프로토콜을 지원하는 메시지 브로커를 통해 장치 간의 효율적인 메시지 교환을 지원합니다.
- 규칙 엔진 : 장치에서 수집된 데이터를 다른 AWS 서비스나 외부 애플리케이션으로 쉽게 라우팅할 수 있도록 규칙 엔진을 제공합니다. 이를 통해 데이터 처리, 분석 및 저장이 가능합니다.
- Device Shadow : Device Shadow는 클라우드에 장치의 최신 상태를 저장하는 가상 버전을 제공합니다. 이를 통해 장치가 오프라인 상태일 때도 원하는 설정을 변경할 수 있으며, 장치가 다시 온라인 상태가 되었을 때 해당 설정을 적용할 수 있습니다.
- 통합 및 확장성 : AWS IoT Core는 AWS Lambda, Amazon Kinesis, Amazon S3 등 AWS의 다른 서비스들과 쉽게 통합되어, 데이터 분석, 스토리지, 머신 러닝과 같은 고급 기능을 활용할 수 있도록 합니다.
이러한 기능들은 IoT 솔루션을 구축하고 관리하는 데 필요한 유연성과 확장성을 제공하며, 다양한 산업 분야에서의 IoT 애플리케이션 개발을 지원합니다.
AWS IoT Greengrass
AWS IoT Greengrass는 클라우드 기능을 로컬 디바이스로 확장하는 소프트웨어입니다. 덕분에 디바이스는 정보 소스와 보다 밀접한 데이터를 수집 및 분석하고, 로컬 이벤트에 자율적으로 응답하며, 로컬 네트워크에서 서로 안전하게 통신할 수 있습니다. 또한 로컬 장치는 IoT 데이터와 안전하게 AWS IoT Core 통신하고 IoT 데이터를 로 내보낼 수 AWS 클라우드 있습니다. AWS IoT Greengrass개발자는 AWS Lambda 함수와 사전 구축된 커넥터를 사용하여 로컬 실행을 위해 장치에 배포되는 서버리스 애플리케이션을 만들 수 있습니다.
- 로컬 데이터 처리 및 결정 : AWS IoT Greengrass를 사용하면, 데이터를 클라우드로 보내기 전에 로컬 장치에서 데이터를 처리하고 결정을 내릴 수 있습니다. 이는 네트워크 지연을 줄이고, 클라우드 연결이 끊어졌을 때에도 장치가 독립적으로 작동할 수 있게 합니다.
- AWS 서비스와의 통합 : Greengrass는 AWS Lambda, AWS IoT Core 등 다른 AWS 서비스와 긴밀하게 통합되어 있습니다. 이를 통해 개발자들은 클라우드에서 실행되는 것과 동일한 코드를 로컬 장치에서 실행할 수 있습니다.
- 장치 메시지 통신 : Greengrass는 장치 간 메시지 교환을 가능하게 하며, MQTT 프로토콜을 사용하여 장치가 서로 통신할 수 있도록 지원합니다.
- 보안 : Greengrass는 보안을 매우 중시하며, 데이터의 암호화 및 보안 인증을 통해 로컬 네트워크와 클라우드 간의 안전한 데이터 전송을 보장합니다.
- 오프라인 작동 : 인터넷 연결이 불안정하거나 없는 환경에서도 Greengrass는 장치가 독립적으로 작동하도록 지원합니다. 장치는 연결이 복원되면 클라우드와 동기화를 진행할 수 있습니다.
- 에지 컴퓨팅 : AWS IoT Greengrass는 에지 컴퓨팅의 핵심 요소로, 데이터 처리를 장치가 위치한 지역(에지)으로 옮겨서 응답 시간을 단축하고 대역폭 사용을 최적화합니다.
- 장치 관리 및 배포 : Greengrass를 통해 중앙에서 장치를 관리하고 업데이트 및 배포를 쉽게 할 수 있습니다. 이는 대규모 IoT 환경에서 장치를 효율적으로 관리하는 데 중요합니다.
AWS IoT Greengrass는 IoT 솔루션에 있어서 클라우드와 장치 간의 간극을 줄이며, 로컬 처리와 클라우드 기반 관리의 장점을 결합해 주는 유용한 도구입니다. 이는 특히 네트워크 연결이 제한적이거나 실시간 처리가 필요한 환경에서 유리합니다.
AWS Serverless
AWS는 코드 실행, 데이터 관리 및 애플리케이션 통합을 위한 기술을 서버를 관리할 필요 없이 제공합니다. 서버리스 기술은 자동 크기 조정, 기본 제공 고가용성 및 종량제 결제 모델을 제공하여 민첩성을 개선하고 비용을 최적화합니다. 또한 이러한 기술을 사용하면 용량 프로비저닝 및 패치 적용과 같은 인프라 관리 작업이 필요하지 않으므로 고객을 위한 코드를 작성하는 데 집중할 수 있습니다. 서버리스 애플리케이션은 AWS Lambda에서 시작됩니다. 이 이벤트 기반 컴퓨팅 서비스는 200개 이상의 AWS 서비스 및 서비스형 소프트웨어(SaaS) 애플리케이션과 기본적으로 통합됩니다.
- 비용 효율성 : 서버리스 서비스는 실제 사용한 컴퓨팅 리소스에 대해서만 비용을 지불하므로, 미사용 리소스에 대한 비용이 발생하지 않습니다.
- 자동 확장 : 트래픽이 증가하더라도 서비스는 자동으로 확장되어 높은 트래픽에 대응할 수 있습니다.
- 관리 부담 감소 : 서버 운영, 유지보수, 스케일링 등의 인프라 관리 부담이 AWS에 의해 처리됩니다.
- 빠른 개발 및 배포 : 인프라 설정이 간소화되어 개발자는 코드 작성 및 비즈니스 로직에 더 집중할 수 있으며, 시장 출시 시간을 단축할 수 있습니다.
스마트 아쿠아 팜 솔루션 구축시 AWS IoT 서비스를 선택한 이유
IoT서비스를 구축하기 위해 고려해야할 것이 많습니다. 먼저 현장에서 설치 되어 데이터를 수집하는 디바이스의 하드웨어와 펌웨어, 그리고 이에 대한 OTA, 현장 네트워크 가용성, 데이터를 전송할 프로토콜, 디바이스 보안과 인증, 데이터 처리, 시각화, 분석, 데이터베이스 설계 백엔드 처리와 사용자 App 등 개발자의 시각에서 보면 임베디드부터 프론트 엔드 뿐만 아니라 AI까지 아우르는 모든 IT기술을 요구합니다. 이러한 배경에서 IoT 인프라를 효과적으로 구현하고 관리하기 위해서 대책이 필요 하였고 대안으로 AWS IoT 서비스를 선택하게 되었습니다.
- AWS IoT는 매니지드 서비스로 제공되어 서비스 운영 및 유지보수에 대한 부담을 최소화합니다. AWS가 인프라를 관리하고 업데이트를 수행합니다. 개발팀이 핵심 비즈니스에 집중할 수 있도록 지원하여 인적자원이 부족한 스타트업에서 체계적이고 효율적으로 IoT 인프라를 구축할 수 있습니다.
- AWS IoT Core는 보안 인증서 및 키의 생성, 디바이스의 등 록 및 삭제, 상태관리를 쉽게 수행해 프로젝트가 확장 됨과 동시에 늘어나는 디바이스들을 체계적으로 관리 할 수 있습니다.
- AWS IoT Greengrass를 사용하면 엣지 컴퓨팅을 통해 온프레미스 환경에서 클라우드 환경으로 확장하여 하이브리드 클라우드를 구현할 수 있습니다. 이를 통해 로컬 디바이스(엣지)에서 데이터를 처리하고 필요한 결과물 만을 중앙 서버로 전송하여 대역폭을 절약하고 응답 시간을 단축합니다.
- 다양한 AWS 클라우드 리소스들과의 통합을 지원합니다. S3, DynamoDB, Lambda등의 서비스와 통합을 통해 데이터를 저장, 분석하고 추가적인 기능을 활용할 수 있습니다.
- IoT 인프라 설계 시 다양한 비용 모델을 제공하므로 상황에 맞는 서비스만 선택하여 비용을 최적화하고 전략적인 프로젝트 운영을 기획 할 수 있습니다.
AWS IoT 서비스 사용 팁
AWS IoT와 서버리스(Serverless)를 함께 활용하는 것은 IoT 애플리케이션을 더 빠르고 효율적으로 개발하고 배포하는 데 있어 매우 효과적인 방법입니다. 다음은 AWS IoT와 서버리스 아키텍처를 활용하는 데 있어 몇 가지 팁입니다.
- AWS IoT Core와 Lambda의 통합 활용
- AWS IoT Core를 사용하여 장치에서 수집된 데이터를 AWS 클라우드로 보낼 수 있습니다. 이 데이터는 AWS Lambda와 같은 서버리스 컴퓨팅 서비스를 통해 실시간으로 처리할 수 있습니다.
- IoT 규칙 엔진(Rule Engine)을 사용하여 들어오는 데이터를 기반으로 Lambda 함수를 트리거할 수 있습니다. 예를 들어, 특정 임계값을 초과하는 센서 데이터가 감지되면 알람을 보내는 Lambda 함수를 실행할 수 있습니다.
- 서버리스 백엔드 API 개발
- Amazon API Gateway를 사용하여 서버리스 백엔드 API를 구축합니다. 이 API는 Lambda 함수를 통해 요청을 처리하고 IoT 장치에서 전송된 데이터에 대한 응답을 제공할 수 있습니다.
- DynamoDB를 이용한 데이터 저장
- AWS Lambda 함수를 사용하여 IoT 장치에서 수집한 데이터를 Amazon DynamoDB와 같은 NoSQL 데이터베이스에 저장할 수 있습니다. 이렇게 하면 대규모 IoT 데이터를 효율적으로 관리할 수 있습니다.
- DynamoDB는 서버리스 데이터베이스로, 자동 스케일링 및 관리 기능을 제공합니다. 이는 데이터의 크기와 액세스 패턴에 따라 자동으로 조정됩니다.
AWS와 함께 협업하며 느낀점
당시 스마트 아쿠아 팜 프로젝트의 디바이스인 스마트 부표가 개발되고 난 후 다음 과제는 IoT 시스템 구축이었습니다. 디바이스 상태 및 데이터 관리, 시스템 통합, 보안 등의 세부 개발을 마주한 가운데 AWS와 협업을 진행하게 되었습니다. AWS에서는 당사의 프로젝트에 대한 이해와 분석을 통해 아키텍처 및 워크 로드를 비롯한 기술적 솔루션을 제안하였고 이를 구축하기 위한 교육 프로그램을 제공받아 빠르게 시스템 개발에 진입할 수 있었습니다. 초기 개발 단계에서 예상되는 리소스 이용 요금에 대한 지원도 함께 진행하여 요금 걱정 없이 AWS 서비스를 이용할 수 있었고 안정된 개발 환경에서 시행착오를 겪어가며 시스템을 구축할 수 있었습니다. 초기 시스템 개발 단계에서 추가 확장될 기능 구현에 대한 정보도 제공받아 개발 방향 또한 계획할 수 있게 되어 체계적으로 개발팀을 운영할 수 있었습니다.
마무리
이 블로그에서는 해양환경 모니터링 플랫폼인 스마트 아쿠아팜에 대한 사례를 소개해드렸습니다. 고객은 적은 인력으로 빠른 솔루션 구축 및 운영 관리 효율성을 위해 Cloud Native 아키텍처를 도입하여 워크로드를 구축하였으며 이 과정에서 AWS로부터 아키텍처 구축을 비롯한기술 지원과 IoT와 관련된 교육 행사에 참여하는 등 빠르게 AWS Cloud 기술을 습득할 수 있었습니다. 이를 통해 사용한 만큼만 과금되는 비용 효율적인 구성과 인프라 관리를 최소화할 수 있는 방법으로 서비스를 출시할 수 있었습니다. ODN사에서 스마트 아쿠아팜을 구축하기 위해 AWS에서 함께한 여정에 대한 경험을 공유하며 글을 마치겠습니다.