Digital Business CardMarch 2, 2019 · 4 minute read · Comments
Recently I took on a new role. I was asked for information so that business cards could be ordered for me. I reflected a moment and realized I don’t really use business cards anymore. I decided that I needed a digital way to share my business (and personal) information, and I wanted to be able to control what I share. One of the side benefits of this is I don’t have to share my personal mobile phone number either. The number below is purchased through Twilio and is only used to reply with my digital business card.
You can send a SMS (type anything) to +1 949 333-0466 to try it out.
This is a “production ready” stack that took a few hours to build and test. It could scale to millions of users if it had to, but since it’s “serverless” the code just sits there until someone actually uses it. It deploys for pennies per month. Each outbound MMS costs \$0.02. Since the code is only ~5mb the storage costs on AWS are nearly zero.
This has some huge advantages. You can “prove” an application before you scale it and pay for it. It’s not just fail fast, it’s also “fail cheap”. This is the cheapest application architecture you can create today for launching new services.
The architecture looks like this:
NOTE: I didn’t draw this - it is automatically generated from the CloudFormation script that the Serverless framework creates. Automatic, “perfect”, evergreen documentation - because it is showing exactly what is actually deployed. Cool!
An API gateway endpoint handles all the tasks involved processing up to hundreds of thousands of concurrent API calls, including traffic management, authorization and access control, monitoring, and API version management. The API gateway talks to my Lambda function.
In my organization people are concerned about how we will be able to operate our services and applications in the cloud. This puzzles me because if we architect things properly we should be striving to achieve zero administration. This is how you get there!
- An AWS account
- A Twilio account
- Node.js and NPM or Yarn installed on your development machine
Use NPM or Yarn to install Serverless:
# Installing the serverless cli npm install -g serverless
Create a new service
Use serverless to scaffold a lambda function using the Node.js template.
# Create a new Serverless Service/Project $ serverless create --template aws-nodejs --path my-service # Change into the newly created directory $ cd my-service
Build, test and deploy your service
NOTE: the actual lambda code is in the repo linked below. I am outlining how to use Serverless here.
- Test the function locally. Note “-f” specifies the function and “-p” passes in data to simulate an API call
serverless invoke local -f twilio -p data.json
- Deploy the Service
- Fetch the Function Logs
serverless logs -f twilio -t
Once your API is up and running you simply point the Twilio webhook of your phone number to your API endpoint:
When an SMS is sent to my Twilio phone number, Twilio calls my API and posts the SMS as the payload. The lambda function formats a response using Twilio’s XML format and sends it back as the HTTP response. Twilio reads the XML which instructs Twilio to respond with a MMS message with my digital business card information.
Full working code is here