Labels

Wednesday, June 8, 2022

Project #27 - Developing a multi-source Web Weather Display using Microservices and DevOps

 I have been wanting to get into DevOps for a while.  Now that I am retired I should be able to find the time to immerse myself in the overall designs and setup for such a system.  I have also been studying Microservices and how that impacts the pipeline for a DevOps CI/CD approach.  Since I have a number of computer resources available to me, both RPi and Proxmox servers, I should be able to stand up a complete system fairly easily.  I also need to make it easy to modify as needed.  I am just a one person shop using a HomeLab for development, so much of this will not make sense to most people.

So for the general idea for the Web Weather Display:

  • Most programming to be done with Node-Red, but allow for JavaScript and Python
  • The Weather Display will be a Kiosk style web display
  • Since I don’t have a Weather Station hooked into CWOP or Weather Underground, I need different sources of information
  • Should be able to be updated with a display every 5 minutes
  • Should show a forecast for at least 5 days
  • Should allow for a display of radar data
  • Should allow for a display of satellite data
  • Should allow merging of micro-weather sensors to show alteration from the normal source of updates
  • I want it to be able to display different models from different sources
  • I want it to be able to display other environmental information such as earthquakes, hurricanes, tornado damage from different parts of the world
  • I would like it to have a map display capability 
  • I would like it to display data over a range of time from a backend storage medium
  • I would like it to be self contained in a single RPi, or pulled to an RPi display from a remote source

For the general idea for Microservices:

  • I would like to use some Microservices patterns for the development; those are TBD at this point
  • I want to make the Weather Display components split into Microservices that make sense
  • The Microservices should be able to be moved to a different host without causing disruption, including to different operating systems and processors
  • Individual Microservices should be able to be changed without having to shut the entire set of Microservices down

For the general idea for DevOps:

  • I would like to do the development on a separate Development vlan which works in conjunction with a Production vlan for the Weather Display
  • The introduction of a newly tested and developed Microservice should be scripted so that I do not have to worry about forcing a change
  • The movement of portions of the Microservice architecture should be fluid within the CI/CD pipeline

Some constraints for the Weather Display development:

  • I should not have to buy anything additional in order to be able to complete the first version of this project
  • I should be able to add additional sensors and merge their output into the displays without issue
  • The first iteration of this project should use MQTT as the adhesion point, but allow for use of web services later on - so the mechanism should be hidden