Я расскажу вам реальную историю о том, как один небольшой около-IoT проект с большими амбициями отошел от старого технологического стека к современному кросс-платформенному подмножеству .Net-стека. Как развертывание было перенесено из полностью ручного в полностью автоматизированное с помощью Docker, VSTS и Azure в многоплатформенном «кластере». И как все эти действия помогли разработчикам и клиенту в повседневной жизни.
Similar to .NET Fest 2018. Андрей Тарарака. Как порулить грузовиком в Австралии, находясь в Киеве. Реальная история успеха одного около-IoT проекта (20)
.NET Fest 2018. Андрей Тарарака. Как порулить грузовиком в Австралии, находясь в Киеве. Реальная история успеха одного около-IoT проекта
1. How to drive haul truck in Australia,
sitting in Kiev
True story of success of one near-IoT project
t WITH PASSION TO TECHNOLOGY
Andrii Tararaka
.NET CONFERENCE #1 IN UKRAINE, KYIV 2018
2. t .NET LEVEL UP
KYIV 2018
About me
• Lead Software Engineer @ EPAM Systems, Ukraine.
• Key developer on project, which goals is to implement near real-time
monitoring system for equipment in open mines.
• Author of in-house UI platform for creating LoB applications.
• …
3. t .NET LEVEL UP
KYIV 2018
About project
• System for monitoring all types of equipment in open mines.
• Implemented on .NET stack from IoT app up to UI client app
• IoT app implemented for WindowsCE
• Backend hosted in Azure
• UI client app implemented on WPF
4. t .NET LEVEL UP
KYIV 2018
How it all worked for a long long time…
Field
Gateway
Central
5. t .NET LEVEL UP
KYIV 2018
Problems and Limitations
• It’s almost impossible to simulate field environment during
development
• Fully manual deployment
• IT Security on field is very important and local IT department is
blocking all unknown traffic
• Each part was developed with legacy technology stack and almost
everywhere the wheel was reinvented
6. t .NET LEVEL UP
KYIV 2018
What would be great to have
• Quick and Easy deployment simulation on regular dev machine
• Migrate in-house components to cross-platform .NET Core as much as
possible
• Minimize number of in-house frameworks with help of stable 3rd party
libraries
• Support “Data Streaming” for any kind of data
• Make production deployment fully automated
7. t .NET LEVEL UP
KYIV 2018
CloudField Gateway
Flume
4545
Kafka Apache NiFi
Big Data Storage
Zookeeper
2181
RabbitMQ
5672, 15672
Adapter Connector
Flume
4545
IoT App [Legacy]
IoT App
8. t .NET LEVEL UP
KYIV 2018
Pros and cons
• Field gateway as hub for all messages
• Built-in “store and forward”
• Migrated to stable 3rd party components
• Scalable architecture
• For us whole deployment is still “Black Box”, we need more info from
all parts
10. t .NET LEVEL UP
KYIV 2018
Pros and cons
• Monitoring of all components in Field and Cloud
• Alerts for critical metrics in Field and Cloud
• Separate dashboards for Field and Cloud deployment in Grafana
• Centralized collecting of logs and metrics
• Lack of secure connection between Field and Cloud
• Need to have easy access to all web-based components
11. t .NET LEVEL UP
KYIV 2018
Part #3
CloudField Gateway Internet
Flume
4545
SSH Server
Auto SSH
In/Out: 22
Portainer
9000
Traefik
In/Out: 80, 443
Kafka Apache NiFi
Big Data Storage
Chronograf
8888
Kapacitor
9092
InfluxDB
8086
Grafana
3000
Telegraf
In/Out: 8186
Zookeeper
2181
RabbitMQ
5672, 15672
Adapter Connector
Auto SSH
In/Out: 22
Flume
4545
Portainer
9000
Traefik
In/Out: 80, 443
Chronograf
8888
Kapacitor
9092
InfluxDB
8086
Grafana
3000
Telegraf
In/Out: 8186
IoT App [Legacy]
IoT App
12. t .NET LEVEL UP
KYIV 2018
Part #3
Auto SSH Auto SSH
-L 0.0.0.0:4545:0.0.0.0:4545 -R 0.0.0.0:4545:flume:4545
SSH Server
Field Network Internet Cloud
13. t .NET LEVEL UP
KYIV 2018
Pros and cons
• Great and simple secure connection between Field and Cloud
• Only one port used
• Easy to control network traffic (start/stop/resume)
• We need automatic (and if it’s possible remote) deployment process
14. t .NET LEVEL UP
KYIV 2018
Part #3
CloudField Gateway Internet
Flume
4545
SSH Server
Auto SSH
In/Out: 22
Portainer
9000
Traefik
In/Out: 80, 443
Kafka Apache NiFi
Big Data Storage
Chronograf
8888
Kapacitor
9092
InfluxDB
8086
Grafana
3000
Telegraf
In/Out: 8186
Zookeeper
2181
RabbitMQ
5672, 15672
Adapter Connector
VSTS Agent
443
Auto SSH
In/Out: 22
Flume
4545
Portainer
9000
Traefik
In/Out: 80, 443
Chronograf
8888
Kapacitor
9092
InfluxDB
8086
Grafana
3000
Telegraf
In/Out: 8186
IoT App [Legacy]
IoT App
15. t .NET LEVEL UP
KYIV 2018
Overall results
• Used stable 3rd party components wherever it’s possible to reduce custom code base
• Started migration to .NET Core
• Decoupled and scalable architecture
• Added monitoring and log collection solutions
• Added alerts and notifications for critical metrics
• Added secure connection between Field and Cloud
• Added automatic and remote deployment
16. t .NET LEVEL UP
KYIV 2018
How to contact with me
andrii.tararaka andrii.tararaka@gmail.com