Building EcoCraft the ACDC Way

Badge Claimed: ACDC Craftsman

Version 2 – Further detail added on our versioning, building, deployment and testing approaches.

It’s been a fun, interesting few days for our team at ACDC, as we dived into new and familiar topics. But the importance of the fundamentals to ensure our development and deployment process was as smooth as possible carried us through the days and long nights. Here are a few highlights we can point towards:

  • All developers need clearly defined task and development workflow and, although some may scoff at our retro take to manage it, the results speak for themselves with our very complete looking Kanban board:
  • We made sure to setup our foundational elements for effective application lifecycle management; not only within the Power Platform, but also in ensuring we have an Azure DevOps Git repository, and the associated deployment pipelines configured. Find out more about what we have in Azure here and see below examples of what we’ve configured in the Power Platform.
  • Separating out our environments between development, testing and production ensures we can develop safely, test things in the proper way and not affect our live users intentionally. And our Power Platform Pipelines ensures we can deploy everything out automatically, and also handle proper versioning of our solution:
  • We don’t hardcode things. Especially for important things like API keys and secrets. For this reason, we are using Azure Key Vault to store all of our secrets and then have them accessed directly via the Function App. Thanks to Managed Identities, this process becomes so much more easier and secure as well:
  • A continuous feedback loop ensures a more effective development workflow. Thanks to our incorporation of Application Insights capabilities, developers have a rich array of datapoints to monitor the performance of our solution, and we can even use this to initiate new work items directly into Azure DevOps
  • Artificial Intelligence presents a huge opportunity, but without considering best practice approaches when building system prompts, things can go awry very quickly. As you’ll see from the work we’ve done with our custom agent, we’ve ensured our prompts have been tested and hardened appropriately, to prevent potential misuse.
  • Our YAML pipeline handles all of all builds centrally, to ensure our Bicep templates function as we expect and to also ensure we are handling versioning correctly:
  • Our plug-ins have incorporated both logical and integration testing at the class level, to ensure things can be properly tested before it reaches our end users:

These are just a few examples from our 3 day experience, where we have all learned a lot and collaborated well as a group. And we think this close teamwork represents what ACDC is all about – because developers can only do things well when they are working together openly and collaboratively in a team. We hope to back again next year!

Azure Local: Bring your own servers to the Azure Cloud 

CATEGORIES: Redstone Realm, Governance & Best Practices.

There are a couple of business cases that are required to comply with strict country regulations, such as keeping data in a specific location or region, or reducing delays between inter-service communication by hosting critical parts of the infrastructure close. 

In business, it’s called “Bring Your Own Server” (BYOS), which means using your own hardware with a provider’s infrastructure (like a data center or cloud) for hosting, or a Hybrid Cloud approach. 

In our project, we are using our own K8S cluster, which hosts microservices on the customer site, its allow us to build the solution that will even work during a lost internet connection without stopping the processes.  

Big customers which are owning a huge amount of 3d printers/farms require extra government and management capabilities. It can be covered by edge IoT gateways on the client side. At the same time, it still requires seamless Azure integration, which can cover the security model part. 
 
IP owners licensing digital inventory – where manufacturers grant printing rights instead of shipping physical parts – often have stringent data sovereignty requirements (research), making our hybrid approach essential for industries like defense and aerospace.” 

Hopefully, Microsoft already has an approach for that case, it’s called Azure Local.  

Azure Local is the new, unified branding for what was previously known as Azure Stack HCI, extending Azure services to your own infrastructure for hybrid cloud management, while Azure Stack HCI was the specific hyper-converged solution.

 
 
Technical implementation  

As an edge device, we are using Sipeed Nano Cluster, which is the basis for several Raspberry Pi CM5 modules.  

High-Level diagram 

In our case we are hosting the following services: 

Core microservices responsible for: 

  • 3D printer orchestration and job scheduling 
  • Print pipeline execution and real-time monitoring 
  • Device control, firmware integration, and safety checks 

Edge IoT gateway services: 

  • Secure printer and sensor connectivity 
  • Local buffering and processing of telemetry data 

Following that approach, we are receiving all the benefits of the cloud and private cloud.  

Who is the King of Integrations? Or what?

As you already knows, yesterday we released an article to demonstrate the ability interact with 3d printers, such as reading the temperature on turn on/off the light. In nice to have, but very limited functionality for out project. It was a challenge to grab camera stream and run the printing job using Local API…. 

After some nightly research, we found the solution. There is a addon for the Home Assistant which will allow us to perform any action with the 3d printer locally.  

 To make it work in tight deadlines, we decided to run the Home Assistant app on our laptop, using Hyper-V, and expose port securely via the Cloudflare tunnels which is also providing HTTPS certificates. 

We are claiming the following badges: 

  • #Nasty hackers,  
  • #Thieving Bastards: we are using Cloudflare, Open source  Home Assistant and Bambu lab HA integration addon. 

Categories:  

  • #Low code – for the integrations with Bambu lab local printer API without single line of the code 
  • #Governance & Best Practices – following best practices of exposing only secured services to the public internet