If you’ve followed my project Inexpire, you’ll know I originally was building it using a React static site backed by AWS DynamoDB and Lambda. After a short while without making any significant progress, I switched back to my comfort zone (Rails) and hammered out a working app using technology I was more familiar with.
Well, I’ve given it another shot and I’m glad to say Inexpire is on AWS serverless technologies for good! So what went right? What went wrong?
What Went Wrong (first try)
I was definitely overthinking the problem I was trying to solve, and over-engineering the AWS solution.
After my initial troubles with the React, Lambda, and NoSQL stack, I took a step back. I gave my confidence a quick boost by proving to myself that I could build this app, that the troubles weren’t my lack of skill. Of course I could, it’s pretty simple. But struggling has a way of messing with your head. Combine that with stress from the pandemic and some unrelated family health issues… I really needed a quick win. And prototyping the app in Rails helped me really understand the problem domain I was dealing with.
What Went Right (now)
I actually spent some time with Elixir, using a neutral language to help me understand the functional style of programming as well as asynchronous communications using LiveWire in the Phoenix framework. The Pragmatic Studio’s videos really helped get me up to speed quickly. I knew I wasn’t going to be spending a lot of time with Elixir so having a quick and ready guide was worth way more than the cost of admission.
Building the app and getting it working also solidified the data model in my mind. I was trying to construct a model on-the-fly before, and kept having to undo things and start again. And if there’s one thing AWS still struggles with, it’s making infrastructure changes using existing CloudFormation templates. It’s easier to blow it away and start again… as long as you made sure you’ve cleaned up everything.
Where We Are Now
After getting more comfortable with functional-style and asynchronous programming, I came back to Inexpire. For such a simple app, it doesn’t make sense keeping a server running 24/7 (or paying for it to run 24/7). Serverless makes so much more sense.
I figured out the React framework. I understood the data model I was working with. I learned the AWS tooling better to debug my issues faster. And now Inexpire.com runs on a React static site hosted on AWS S3, with business logic backed up by AWS Lambda and AWS DyanmoDB for data storage. And turns out, it’s actually really fast to build simple apps like this!
(Inexpire Hobby Farm Management is not currently supported on the new site. You can use the old site, but I do plan on migrating it shortly since it’s getting to be planting season 😉 If you’re using Farm Management please let me know so I can migrate your data when the new setup is done.)
Inexpire has always been envisioned as a database backing up a more robust service. Now that I’m happy with the technology stack I’m using, I’m going to start building the full service I had always imagined. Watch this space, it’s going to be pretty exciting!