Introducing Cicada
Most of the entries on this blog are theory and opinion related to building serverless-based applications on AWS. While these ideas come from our practical experience while working with clients, being a consultancy it’s often hard to give specific, tangible, and meaningful examples when so much of our work is owned by those same clients. With this in mind I’m investing in building my own application that I can use to explore and explain many aspects of architecting, building, and running AWS-hosted applications.
The application is named Cicada, and it’s a monitoring tool for GitHub - primarily GitHub Actions. Cicada will watch your GitHub account, give realtime notifications for GitHub Actions runs, and provide a Dashboard over all of the GitHub Actions Workflows in your account. In a browser it looks like this:

Cicada's Home Page
Cicada is a full application that you can clone and run in your own AWS account. It already contains many examples - large and small - of how I’ve come to build TypeScript and Lambda based applications that use CDK and GitHub Actions as their deployment tools, for example:
- How to structure your source tree to tidily compartmentalize code for Lambda Functions, CDK, tests, and utilities
- How to architect a single AWS application that contains many different types of behavior - including user-facing web app and web API endpoints, webhook integration, scheduled processing, and event-driven notifications
- How to consider which request and event types use separate or shared Lambda Functions
- How to effectively write CDK code to deploy a single application with many resources across many AWS services
- How to structure your TypeScript code in a way that balances the needs of Lambda-specific constraints; non-trivial domain logic; and testability
- How to write local and remote tests, and include them cleanly in the rest of the source code
- How to incorporate GitHub Actions to perform Continuous Integration, and Continuous Deployment
Cicada Notes
There are so many things I’ve thought about while building Cicada that it’s very hard for me to plan how I want to share them all. So I’ve decided to go with a long-term stream-of-consciousness approach. This will take the form of entries on this blog that I’m grouping as Cicada Notes . Some Notes will be small thoughts, some will be larger explanations that might take several Notes. Others may just be experiments that I’m thinking about out loud.
I’ve published the first Cicada Note simultaneously with this introduction. It’s about the highest level architecture of Cicada, and you can find it here.
Exploring and using Cicada
Cicada is publicly available in our own GitHub account at https://github.com/symphoniacloud/cicada . Feel free to download the code, or explore in GitHub’s own in-browser IDE (press your “.” key while looking at the repository).
If you want to use Cicada yourself for monitoring your GitHub account (personal account or organization) then please see the documentation in the repo - but please pay attention to the warnings!
Feedback
I value hearing what people think about how I’ve built Cicada, and also my writing in Cicada Notes. If there ends up being enough interest I’ll start some kind of discussion forum, but for now please either email me at mike@symphonia.io, or if you’re on Mastodon then please kick off a discussion there - my user is @mikebroberts@hachyderm.io .