Home Automation with Asynchronous Microservices

Fred George walks through a 2017 experiment with devices, events and small services.

FGFred GeorgeIntervenant
Chaîne
GOTO Conferences
Publié
7 nov. 2017
Vidéo
42:07
Lecture
2 min
Original
anglais
Ouvrir sur YouTube
En faisant défiler, la vidéo se réduit en bas à droite et continue. Les sous-titres suivent votre langue de lecture.
Langue de lectureDisponible en 2 langues
Cet article n’est pas encore disponible en français ; il s’affiche dans l’original en anglais.
RÉSUMÉ

En 30 secondes

Fred George describes a personal home-automation experiment using an event bus and small services to coordinate heterogeneous devices. His deployment shortcuts are specific to that experiment and should be evaluated against each system’s risks.

  1. 1Uncertain goalsThe speaker treats home automation as an uncertain problem.
  2. 2Device APIsDevice-specific interfaces can be isolated behind services.
  3. 3Event busSmall services exchange events asynchronously.
  4. 4Rapids and pondsStreams and stored views serve different purposes.
  5. 5Missing responsesA request may have no listener or response.
  6. 6Sticky colorsSeveral services can restore a desired light state.
  7. 7ExperimentationTesting and deployment practices must match the risk of the system.

À retenir

  1. The speaker treats home automation as an uncertain problem.
  2. Device-specific interfaces can be isolated behind services.
  3. Small services exchange events asynchronously.
  4. Streams and stored views serve different purposes.
  5. A request may have no listener or response.
  6. Several services can restore a desired light state.
  7. Testing and deployment practices must match the risk of the system.
TEXTE INTÉGRAL

Lire le texte remanié, chapitre par chapitre

Transcription seule
01

Experimenting at home

Uncertain requirements and heterogeneous devices.

In this 2017 GOTO talk, Fred George describes a home-automation experiment using small asynchronous microservices. He presents it as a personal exploration of changing requirements, not a universal architecture for every home or production system.

George distinguishes problems with predictable cause and effect from complex situations where teams must experiment and observe. He argues that uncertain home-automation goals are a useful setting for trying ideas incrementally.

He demonstrates changing lights in his home and describes a collection of devices with different APIs. The challenge is to combine them without tying every higher-level behavior directly to one vendor’s interface.

02

Asynchronous architecture

Events, streams and service responsibilities.

His design uses small services and an asynchronous event bus. Device-facing services publish observations and receive commands, while other services can react without directly calling every device-specific implementation.

He calls the shared event stream the “rapids,” filtered streams “rivers,” and stored current-state views “ponds.” This is a way of thinking about event flow and queryable state, not a guarantee of ordering or delivery.

In his “need” pattern, a service publishes a request without assuming a particular listener will respond. Asynchronous systems must handle missing responses and other failure cases explicitly.

George separates hardware access from higher-level scenes and cross-device behaviors. Monitoring services observe the event stream and can flag conflicting commands or failed components.

03

Sticky colors and lessons

State restoration, monitoring and tradeoffs.

His “sticky colors” example polls light state, publishes it and reapplies a desired color when a light comes back in a different state. Several small services cooperate without a central orchestration service.

He favors fast experimentation and abundant messages for developer productivity. In his home experiment he also argues for deploying without some tests; that tradeoff should not be generalized to systems where failures can harm people or cause significant loss.

George connects the approach to agile values, suggesting that teams working on uncertain problems may organize around experiments and feedback. He describes potential future work on sensors and smaller hardware.

Sur la même chaîne

3 diapositives39:12EN
GOTO Conferences· 28 oct. 2026Cate Huston: How Rigour Supports AI-Assisted Development VelocityCate Huston · TwillA two-person team’s experience with release gates, automated checks, prioritization and the cost of shipping faster.Leadership en ingénierie IASoftware engineeringAI agents
4 diapositives22:33EN
GOTO Conferences· 26 oct. 2026William Schor: From Unit Tests to Synthetic Canaries at NetflixWilliam Schor · NetflixHow generated workloads and production-like infrastructure help test a distributed key-value service.Software engineering
5 diapositives34:11EN
GOTO Conferences· 23 oct. 2026Anatoliy Bilenko and Alberto Carretero: Making Database Protocols Reliable with Formal Methods and AIAnatoliy Bilenko, Alberto Carretero · CanonicalCanonical’s database engineers connect executable specifications, model-based tests, failure exploration, and reconstructed execution histories—and explain why none of these techniques proves a real system correct on its own.Workflows de développement et testsCode review & verificationObservabilité et fiabilité+2
28:15EN
GOTO Conferences· 22 oct. 2026Steve Poole on Open-Source Security and AI’s Maintenance ChallengeOlimpiu Pop, Steve PooleWhy faster vulnerability discovery increases pressure on maintainers, dependency users and upgrade processes.Software engineeringAI security
5 diapositives46:36EN
GOTO Conferences· 21 oct. 2026Don Syme: Building Agentic Automation Around Human CollaborationDon Syme · GitHubContinuous AI, repository workflows and the guardrails needed for unattended software maintenance.Agent orchestrationSoftware engineeringAgents de code
28:23EN
GOTO Conferences· 19 oct. 2026Learning Ash: Declarative Elixir Apps, Testing and ExtensibilityChristian Alexander, Rebecca Le, Zach DanielRebecca Le and Zach Daniel explain how their book and the framework evolved together.Software engineering